Buckets:
OmniGenTransformer2DModel
Một mô hình Transformer nhận các chỉ thị đa phương thức để tạo hình ảnh cho OmniGen.
Tóm tắt từ bài báo là:
Sự ra đời của các Mô hình Ngôn ngữ Lớn (LLM) đã thống nhất các tác vụ tạo ngôn ngữ và cách mạng hóa tương tác giữa con người và máy móc. Tuy nhiên, trong lĩnh vực tạo ảnh, một mô hình thống nhất có khả năng xử lý nhiều tác vụ khác nhau trong cùng một khung kiến trúc vẫn chưa được khám phá nhiều. Trong công trình này, chúng tôi giới thiệu OmniGen, một mô hình khuếch tán mới cho tạo ảnh thống nhất. OmniGen có các đặc điểm sau: 1) Thống nhất: OmniGen không chỉ thể hiện khả năng tạo ảnh từ văn bản mà còn hỗ trợ nội tại nhiều tác vụ hạ nguồn khác nhau, chẳng hạn như chỉnh sửa ảnh, tạo ảnh theo chủ thể và tạo ảnh có điều kiện thị giác. 2) Đơn giản: Kiến trúc của OmniGen được đơn giản hóa cao, loại bỏ nhu cầu về các plugin bổ sung. Hơn nữa, so với các mô hình khuếch tán hiện có, nó thân thiện hơn với người dùng và có thể hoàn thành các tác vụ phức tạp theo hướng dẫn từ đầu đến cuối mà không cần các bước trung gian bổ sung, qua đó đơn giản hóa đáng kể quy trình tạo ảnh. 3) Chuyển giao kiến thức: Nhờ học tập theo định dạng thống nhất, OmniGen chuyển giao kiến thức hiệu quả giữa các tác vụ khác nhau, quản lý các tác vụ và miền chưa từng thấy, và thể hiện các khả năng mới. Chúng tôi cũng khám phá khả năng suy luận của mô hình và các ứng dụng tiềm năng của cơ chế chuỗi suy nghĩ. Công trình này đại diện cho nỗ lực đầu tiên về một mô hình tạo ảnh đa dụng, và chúng tôi sẽ phát hành tài nguyên của mình tại https://github.com/VectorSpaceLab/OmniGen để thúc đẩy các tiến bộ trong tương lai.
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')
Tham số:
in_channels (int, mặc định là 4) : Số lượng kênh trong đầu vào.
patch_size (int, mặc định là 2) : Kích thước của các patch không gian được sử dụng trong lớp nhúng patch.
hidden_size (int, mặc định là 3072) : Độ chiều của các lớp ẩn trong mô hình.
rms_norm_eps (float, mặc định là 1e-5) : Eps cho lớp RMSNorm.
num_attention_heads (int, mặc định là 32) : Số lượng đầu (heads) được sử dụng cho chú ý đa đầu (multi-head attention).
num_key_value_heads (int, mặc định là 32) : Số lượng đầu (heads) được sử dụng cho các key và value trong cơ chế chú ý đa đầu (multi-head attention).
intermediate_size (int, mặc định là 8192) : Kích thước của lớp ẩn trong các lớp FeedForward.
num_layers (int, mặc định là 32) : Số lượng lớp khối transformer cần sử dụng.
pad_token_id (int, mặc định là 32000) : id của token đệm (padding token).
vocab_size (int, mặc định là 32064) : Kích thước của bảng từ vựng cho embedding.
rope_base (int, mặc định là 10000) : Giá trị theta mặc định được sử dụng khi tạo RoPE.
rope_scaling (dict, tùy chọn) : Các hệ số tỷ lệ cho RoPE. Phải chứa short_factor và long_factor.
pos_embed_max_size (int, mặc định là 192) : Kích thước tối đa của các nhúng vị trí (positional embeddings).
time_step_dim (int, mặc định là 256) : Kích thước chiều đầu ra của các embedding bước thời gian.
flip_sin_to_cos (bool, mặc định là True) : Có nên đảo sin và cos trong các nhúng vị trí khi chuẩn bị các nhúng bước thời gian hay không.
downscale_freq_shift (int, mặc định là 0) : Độ dịch tần số cần sử dụng khi giảm kích thước các nhúng bước thời gian (timestep embeddings).
timestep_activation_fn (str, mặc định là silu) : Hàm kích hoạt được sử dụng cho các nhúng bước thời gian.
Mô hình Transformer được giới thiệu trong 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)
Tham số:
hidden_states (torch.Tensor có hình dạng (batch_size, in_channels, height, width)) : hidden_states đầu vào.
timestep (torch.LongTensor) : Dùng để chỉ bước khử nhiễu.
input_ids (torch.Tensor) : Các id token văn bản đa phương thức được sử dụng làm điều kiện.
input_img_latents (list của torch.Tensor) : Danh sách các latents cho các hình ảnh đầu vào được sử dụng làm điều kiện.
input_image_sizes (dict của int tới list của int) : Ánh xạ từ chỉ mục mẫu tới các vị trí mà các nhúng ảnh đầu vào nên được đặt trong chuỗi điều kiện.
attention_mask (torch.Tensor) : Mặt nạ chú ý (attention mask) cho chuỗi đa phương thức kết hợp.
position_ids (torch.Tensor) : Các id vị trí được sử dụng để tính các nhúng vị trí.
return_dict (bool, tùy chọn, mặc định là True) : Có nên trả về một ~models.transformer_2d.Transformer2DModelOutput thay vì một tuple thông thường hay không.
Trả về: ~models.transformer_2d.Transformer2DModelOutput hoặc tuple
Nếu return_dict là True, một ~models.transformer_2d.Transformer2DModelOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về.
Phương thức forward của OmniGenTransformer2DModel.
Xet Storage Details
- Size:
- 7.5 kB
- Xet hash:
- fb90dcad2dcb2dd1ad7e93d030eab262de61270e66e90b23f8f60ce22b451670
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.