Buckets:

hf-doc-build/doc / diffusers /main /ru /api /models /omnigen_transformer.md
mishig's picture
|
download
raw
9.8 kB

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.