Diffusers documentation
Ideogram4Transformer2DModel
Ideogram4Transformer2DModel
Трансформер для изображений от Ideogram 4.
Ideogram4Transformer2DModel
класс diffusers.Ideogram4Transformer2DModel
< source >( 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
< source >( 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 для позиций токенов изображения в упакованной последовательности.