Diffusers documentation

OmniGenTransformer2DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OmniGenTransformer2DModel

Модель Transformer, которая принимает мультимодальные инструкции для генерации изображений для OmniGen.

Аннотация из статьи:

Появление больших языковых моделей (LLM) унифицировало задачи генерации текста и революционизировало взаимодействие человека с машиной. Однако в области генерации изображений единая модель, способная выполнять различные задачи в рамках одной архитектуры, по-прежнему остаётся малоизученной. В данной работе мы представляем OmniGen — новую диффузионную модель для унифицированной генерации изображений. OmniGen характеризуется следующими особенностями: 1) Унификация: OmniGen не только демонстрирует возможности генерации изображений по тексту, но и изначально поддерживает различные задачи нижнего уровня, такие как редактирование изображений, генерация по заданному объекту и условная генерация по визуальному условию. 2) Простота: Архитектура OmniGen значительно упрощена, что исключает необходимость в дополнительных плагинах. Кроме того, по сравнению с существующими диффузионными моделями, она более удобна для пользователя и может выполнять сложные задачи от начала до конца по инструкциям без необходимости дополнительных промежуточных шагов, что значительно упрощает рабочий процесс генерации изображений. 3) Перенос знаний: Благодаря обучению в унифицированном формате OmniGen эффективно переносит знания между различными задачами, справляется с невиданными ранее задачами и доменами и демонстрирует новые возможности. Мы также исследуем способности модели к рассуждениям и потенциальные применения механизма цепочки рассуждений (chain-of-thought). Данная работа представляет собой первую попытку создания универсальной модели генерации изображений, и мы опубликуем наши ресурсы по адресу https://github.com/VectorSpaceLab/OmniGen, чтобы содействовать будущему развитию в этой области.

import torch
from diffusers import OmniGenTransformer2DModel

transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)

OmniGenTransformer2DModel

класс diffusers.OmniGenTransformer2DModel

< >

( in_channels: int = 4patch_size: int = 2hidden_size: int = 3072rms_norm_eps: float = 1e-05num_attention_heads: int = 32num_key_value_heads: int = 32intermediate_size: int = 8192num_layers: int = 32pad_token_id: int = 32000vocab_size: int = 32064max_position_embeddings: int = 131072original_max_position_embeddings: int = 4096rope_base: int = 10000rope_scaling: dict = Nonepos_embed_max_size: int = 192time_step_dim: int = 256flip_sin_to_cos: bool = Truedownscale_freq_shift: int = 0timestep_activation_fn: str = 'silu' )

Параметры

  • in_channels (int, по умолчанию 4) — Количество каналов на входе.
  • patch_size (int, по умолчанию 2) — Размер пространственных патчей, используемых в слое встраивания патчей.
  • hidden_size (int, по умолчанию 3072) — Размерность скрытых слоёв в модели.
  • rms_norm_eps (float, по умолчанию 1e-5) — Eps для слоя RMSNorm.
  • num_attention_heads (int, по умолчанию 32) — Количество голов, используемых для многоголовного внимания.
  • num_key_value_heads (int, по умолчанию 32) — Количество голов, используемых для ключей и значений в механизме внимания с несколькими головами.
  • intermediate_size (int, по умолчанию 8192) — Размер скрытого слоя в слоях FeedForward.
  • num_layers (int, по умолчанию 32) — Количество блоков трансформера, которые следует использовать.
  • pad_token_id (int, по умолчанию 32000) — Идентификатор токена отсечки.
  • vocab_size (int, по умолчанию 32064) — Размер словаря для слоя встраиваний.
  • rope_base (int, по умолчанию 10000) — Значение theta по умолчанию, используемое при создании RoPE.
  • rope_scaling (dict, optional) — Коэффициенты масштабирования для RoPE. Должно содержать short_factor и long_factor.
  • pos_embed_max_size (int, по умолчанию 192) — Максимальный размер позиционных эмбеддингов.
  • time_step_dim (int, по умолчанию 256) — Выходное измерение эмбеддингов временных шагов.
  • flip_sin_to_cos (bool, по умолчанию True) — Определяет, следует ли менять местами sin и cos в позиционных эмбеддингах при подготовке эмбеддингов временных шагов.
  • downscale_freq_shift (int, по умолчанию 0) — Сдвиг частоты, используемый при уменьшении масштаба эмбеддингов временных шагов.
  • timestep_activation_fn (str, по умолчанию silu) — Функция активации, используемая для эмбеддингов временных шагов.

Модель Transformer, представленная в OmniGen (https://huggingface.co/papers/2409.11340).

forward

< >

( hidden_states: Tensortimestep: typing.Union[int, float, torch.FloatTensor]input_ids: Tensorinput_img_latents: listinput_image_sizes: dictattention_mask: Tensorposition_ids: Tensorreturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple

Параметры

  • hidden_states (torch.Tensor формы (batch_size, in_channels, height, width)) — Входные hidden_states.
  • timestep (torch.LongTensor) — Используется для указания шага денойзинга.
  • input_ids (torch.Tensor) — Мультимодальные идентификаторы токенов текста, используемые в качестве условия.
  • input_img_latents (list из torch.Tensor) — Список латентов для входных изображений, используемых в качестве условия.
  • input_image_sizes (dict из int в list из int) — Соответствие между индексом образца и позициями, на которых в последовательности условий должны размещаться эмбеддинги входных изображений.
  • attention_mask (torch.Tensor) — Маска внимания для совместной мультимодальной последовательности.
  • position_ids (torch.Tensor) — Идентификаторы позиций, используемые для вычисления позиционных эмбеддингов.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~models.transformer_2d.Transformer2DModelOutput вместо обычного кортежа.

Возвращает

~models.transformer_2d.Transformer2DModelOutput или tuple

Если return_dict равно True, возвращается ~models.transformer_2d.Transformer2DModelOutput, в противном случае возвращается обычный tuple.

Метод forward модели OmniGenTransformer2DModel.

Update on GitHub