Buckets:
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]]
diffusers.OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]
diffusers.OmniGenTransformer2DModel(in_channels: int = 4, patch_size: int = 2, hidden_size: int = 3072, rms_norm_eps: float = 1e-05, num_attention_heads: int = 32, num_key_value_heads: int = 32, intermediate_size: int = 8192, num_layers: int = 32, pad_token_id: int = 32000, vocab_size: int = 32064, max_position_embeddings: int = 131072, original_max_position_embeddings: int = 4096, rope_base: int = 10000, rope_scaling: dict = None, pos_embed_max_size: int = 192, time_step_dim: int = 256, flip_sin_to_cos: bool = True, downscale_freq_shift: int = 0, timestep_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) : Идентификатор токена отступов (padding).
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[[diffusers.OmniGenTransformer2DModel.forward]]
forward(hidden_states: Tensor, timestep: typing.Union[int, float, torch.FloatTensor], input_ids: Tensor, input_img_latents: list[torch.Tensor], input_image_sizes: dict[int, list[int]], attention_mask: Tensor, position_ids: Tensor, return_dict: bool = True)
Параметры:
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.
Xet Storage Details
- Size:
- 9.8 kB
- Xet hash:
- d5dbc537acc88efaa60b47c2f8fe541e2400a1c34690ee54acf6232f1ce11703
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.