Diffusers documentation
OmniGenTransformer2DModel
OmniGenTransformer2DModel
Un modelo Transformer que acepta instrucciones multimodales para generar imágenes para OmniGen.
El resumen del artículo es:
El surgimiento de los Modelos de Lenguaje de Gran Escala (LLM) ha unificado las tareas de generación de lenguaje y ha revolucionado la interacción humano-máquina. Sin embargo, en el ámbito de la generación de imágenes, un modelo unificado capaz de manejar diversas tareas dentro de un único marco sigue siendo en gran medida inexplorado. En este trabajo, presentamos OmniGen, un nuevo modelo de difusión para la generación unificada de imágenes. OmniGen se caracteriza por las siguientes características: 1) Unificación: OmniGen no solo demuestra capacidades de generación de texto a imagen, sino que también admite de forma inherente diversas tareas descendentes, como la edición de imágenes, la generación dirigida por sujeto y la generación condicional visual. 2) Simplicidad: La arquitectura de OmniGen está altamente simplificada, eliminando la necesidad de complementos adicionales. Además, en comparación con los modelos de difusión existentes, es más fácil de usar y puede completar tareas complejas de extremo a extremo mediante instrucciones, sin la necesidad de pasos intermedios adicionales, simplificando en gran medida el flujo de trabajo de generación de imágenes. 3) Transferencia de conocimiento: Gracias al aprendizaje en un formato unificado, OmniGen transfiere de manera efectiva el conocimiento entre diferentes tareas, gestiona tareas y dominios no vistos y exhibe capacidades novedosas. También exploramos las capacidades de razonamiento del modelo y las aplicaciones potenciales del mecanismo de cadena de pensamiento. Este trabajo representa el primer intento de un modelo de generación de imágenes de uso general, y publicaremos nuestros recursos en https://github.com/VectorSpaceLab/OmniGen para fomentar avances futuros.
import torch
from diffusers import OmniGenTransformer2DModel
transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)OmniGenTransformer2DModel
clase diffusers.OmniGenTransformer2DModel
< source >( 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' )
Parámetros
- in_channels (
int, por defecto4) — El número de canales en la entrada. - patch_size (
int, por defecto2) — El tamaño de los parches espaciales que se usarán en la capa de incrustación de parches. - hidden_size (
int, por defecto3072) — La dimensionalidad de las capas ocultas en el modelo. - rms_norm_eps (
float, por defecto1e-5) — Eps para la capa RMSNorm. - num_attention_heads (
int, por defecto32) — El número de cabezas a utilizar para la atención multi-cabeza. - num_key_value_heads (
int, por defecto32) — El número de cabezas a utilizar para las claves y los valores en la atención multi-cabeza. - intermediate_size (
int, por defecto8192) — Dimensión de la capa oculta en las capas FeedForward. - num_layers (
int, por defecto32) — El número de capas de bloques de transformador a utilizar. - pad_token_id (
int, por defecto32000) — El identificador del token de relleno. - vocab_size (
int, por defecto32064) — El tamaño del vocabulario de las incrustaciones. - rope_base (
int, por defecto10000) — El valor theta predeterminado que se utiliza al crear RoPE. - rope_scaling (
dict, opcional) — Los factores de escalado para RoPE. Debe contenershort_factorylong_factor. - pos_embed_max_size (
int, por defecto192) — El tamaño máximo de las incrustaciones posicionales. - time_step_dim (
int, por defecto256) — Dimensión de salida de las incrustaciones de paso de tiempo. - flip_sin_to_cos (
bool, por defectoTrue) — Si se deben intercambiar el sin y el cos en los embeddings posicionales al preparar los embeddings de timestep. - downscale_freq_shift (
int, por defecto0) — El desplazamiento de frecuencia que se utiliza al reducir la escala de las incrustaciones de paso de tiempo. - timestep_activation_fn (
str, por defectosilu) — La función de activación a utilizar para las incrustaciones de paso de tiempo.
El modelo Transformer introducido en OmniGen (https://huggingface.co/papers/2409.11340).
forward
< source >( 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
Parámetros
- hidden_states (
torch.Tensorde forma(batch_size, in_channels, height, width)) — Entradahidden_states. - timestep (
torch.LongTensor) — Se utiliza para indicar el paso de desruido. - input_ids (
torch.Tensor) — ids de tokens de texto multimodal utilizados como condición. - input_img_latents (
listdetorch.Tensor) — Lista de latentes para las imágenes de entrada utilizadas como condicionamiento. - input_image_sizes (
dictdeintalistdeint) — Mapeo del índice de muestra a las posiciones donde deben colocarse los embeddings de imagen de entrada en la secuencia de condicionamiento. - attention_mask (
torch.Tensor) — Máscara de atención para la secuencia multimodal conjunta. - position_ids (
torch.Tensor) — Identificadores de posición utilizados para calcular los embeddings posicionales. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~models.transformer_2d.Transformer2DModelOutputen lugar de una tupla simple.
Devuelve
~models.transformer_2d.Transformer2DModelOutput o tuple
Si return_dict es True, se devuelve un ~models.transformer_2d.Transformer2DModelOutput, de lo contrario
se devuelve una tuple simple.
El método forward de OmniGenTransformer2DModel.