Diffusers documentation

Ideogram4Transformer2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Ideogram4Transformer2DModel

Трансформер для изображений от Ideogram 4.

Ideogram4Transformer2DModel

класс diffusers.Ideogram4Transformer2DModel

< >

( in_channels: int = 128num_layers: int = 34attention_head_dim: int = 256num_attention_heads: int = 18intermediate_size: int = 12288adaln_dim: int = 512llm_features_dim: int = 53248rope_theta: int = 5000000mrope_section: tuple[int, int, int] = (24, 20, 20)norm_eps: float = 1e-05 )

Параметры

  • in_channels (int, по умолчанию 128) — Количество латентных каналов после патчификации (ae_channels * patch_size ** 2).
  • num_layers (int, по умолчанию 34) — Количество блоков трансформера.
  • attention_head_dim (int, по умолчанию 256) — Размерность каждого внимания; общий размер скрытого слоя равен attention_head_dim * num_attention_heads.
  • num_attention_heads (int, по умолчанию 18) — Количество головок внимания.
  • intermediate_size (int, по умолчанию 12288) — Размер скрытого слоя в прямом распространении, используемый SwiGLU MLP внутри каждого блока.
  • adaln_dim (int, по умолчанию 512) — Размерность вектора условий, используемого модуляциями AdaLN.
  • llm_features_dim (int, по умолчанию 53248) — Размерность текстовых признаков на токен, подаваемых в модель (как правило, это конкатенация скрытых состояний из нескольких слоёв текстового энкодера).
  • rope_theta (int, по умолчанию 5_000_000) — Базовое значение, используемое многоосным вращательным позиционным эмбеддингом.
  • mrope_section (tuple[int, int, int], по умолчанию (24, 20, 20)) — Количество частот, выделенных для каждой из осей (t, h, w) MRoPE.
  • norm_eps (float, по умолчанию 1e-5) — Значение эпсилона, используемое модулями RMSNorm внутри блоков трансформера.

Базовая трансформерная архитектура flow-matching, используемая в пайплайне Ideogram 4.

Трансформер работает с единой упакованной последовательностью, содержащей как токены текстового контекста (сгенерированные мультимодальным текстовым энкодером), так и латенты изображений, разбитые на патчи. Индикаторы для каждого токена различают эти две роли, а блочно-диагональная маска внимания, полученная из segment_ids, ограничивает внимание каждого образца только самим собой внутри упакованной батча.

forward

< >

( hidden_states: Tensortimestep: Tensorencoder_hidden_states: Tensorposition_ids: Tensorsegment_ids: Tensorindicator: Tensorattention_kwargs: dict | None = Nonereturn_dict: bool = True )

Параметры

  • hidden_states (torch.Tensor формы (batch_size, sequence_length, in_channels)) — Упакованная последовательность токенов зашумленного изображения, разбитого на патчи. Позиции, не относящиеся к изображению, маскируются внутри.
  • timestep (torch.Tensor формы (batch_size,) или (batch_size, sequence_length)) — Время flow-matching в диапазоне [0, 1] (0 — чистый шум, 1 — чистые данные).
  • encoder_hidden_states (torch.Tensor формы (batch_size, sequence_length, llm_features_dim)) — Условные признаки текста для каждого токена. Позиции, не содержащие текста, маскируются внутри.
  • position_ids (torch.Tensor формы (batch_size, sequence_length, 3)) — координаты (t, h, w), используемые многоосевым RoPE.
  • segment_ids (torch.Tensor формы (batch_size, sequence_length)) — Идентификатор примера для каждого токена в упакованной пачке. Позиции с одинаковым segment_id обращаются друг к другу.
  • indicator (torch.Tensor формы (batch_size, sequence_length)) — Роль для каждого токена: LLM_TOKEN_INDICATOR (текст) или OUTPUT_IMAGE_INDICATOR (изображение).
  • attention_kwargs (dict, необязательный) — Словарь kwargs, передаваемый в процессор внимания. Запись "scale" масштабирует веса LoRA (когда активен бэкенд PEFT).
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать Transformer2DModelOutput вместо обычного кортежа.

Предскажите скорость flow-matching для позиций токенов изображения в упакованной последовательности.

Update on GitHub