Diffusers documentation
OmniGenTransformer2DModel
OmniGenTransformer2DModel
Model Transformer yang menerima instruksi multimodal untuk menghasilkan gambar untuk OmniGen.
Abstrak dari makalah tersebut adalah:
Kemunculan Large Language Models (LLMs) telah menyatukan tugas-tugas generasi bahasa dan merevolusi interaksi manusia-mesin. Namun, dalam ranah generasi gambar, model terpadu yang mampu menangani berbagai tugas dalam satu kerangka kerja masih belum banyak dieksplorasi. Dalam karya ini, kami memperkenalkan OmniGen, sebuah model difusi baru untuk generasi gambar terpadu. OmniGen dicirikan oleh fitur-fitur berikut: 1) Penyatuan: OmniGen tidak hanya menunjukkan kemampuan generasi teks-ke-gambar, tetapi juga secara inheren mendukung berbagai tugas turunan, seperti pengeditan gambar, generasi yang digerakkan oleh subjek, dan generasi kondisional visual. 2) Kesederhanaan: Arsitektur OmniGen sangat disederhanakan, menghilangkan kebutuhan akan plugin tambahan. Selain itu, dibandingkan dengan model difusi yang ada, model ini lebih ramah pengguna dan dapat menyelesaikan tugas kompleks secara end-to-end melalui instruksi tanpa memerlukan langkah-langkah perantara tambahan, sehingga sangat menyederhanakan alur kerja generasi gambar. 3) Transfer Pengetahuan: Berkat pembelajaran dalam format terpadu, OmniGen secara efektif mentransfer pengetahuan antar tugas yang berbeda, mengelola tugas dan domain yang belum pernah dilihat, serta menunjukkan kemampuan baru. Kami juga mengeksplorasi kemampuan penalaran model dan potensi aplikasi mekanisme chain-of-thought. Karya ini merupakan upaya pertama untuk model generasi gambar serbaguna, dan kami akan merilis sumber daya kami di https://github.com/VectorSpaceLab/OmniGen untuk mendorong kemajuan di masa depan.
import torch
from diffusers import OmniGenTransformer2DModel
transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)OmniGenTransformer2DModel
kelas 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' )
Parameter
- in_channels (
int, defaultnya4) — Jumlah channel pada input. - patch_size (
int, defaultnya2) — Ukuran patch spasial yang akan digunakan di lapisan patch embedding. - hidden_size (
int, defaultnya3072) — Dimensi dari lapisan tersembunyi dalam model. - rms_norm_eps (
float, defaultnya1e-5) — Eps untuk lapisan RMSNorm. - num_attention_heads (
int, defaultnya32) — Jumlah head yang digunakan untuk multi-head attention. - num_key_value_heads (
int, defaultnya32) — Jumlah head yang digunakan untuk kunci dan nilai dalam multi-head attention. - intermediate_size (
int, defaultnya8192) — Dimensi dari lapisan tersembunyi di lapisan FeedForward. - num_layers (
int, default32) — Jumlah lapisan blok transformer yang digunakan. - pad_token_id (
int, default32000) — ID dari token padding. - vocab_size (
int, default32064) — Ukuran kosakata dari embedding vocabulary. - rope_base (
int, default10000) — Nilai theta default yang digunakan saat membuat RoPE. - rope_scaling (
dict, opsional) — Faktor penskalaan untuk RoPE. Harus berisishort_factordanlong_factor. - pos_embed_max_size (
int, default192) — Ukuran maksimum dari positional embeddings. - time_step_dim (
int, default256) — Dimensi output dari embedding timestep. - flip_sin_to_cos (
bool, defaultTrue) — Apakah akan menukar sin dan cos pada positional embeddings saat menyiapkan timestep embeddings. - downscale_freq_shift (
int, default0) — Pergeseran frekuensi yang digunakan saat menurunkan skala (downscaling) embedding timestep. - timestep_activation_fn (
str, defaultsilu) — Fungsi aktivasi yang digunakan untuk embedding timestep.
Model Transformer yang diperkenalkan dalam OmniGen (https://huggingface.co/papers/2409.11340).
forward
< source >( hidden_states: Tensortimestep: typing.Union[int, float, torch.FloatTensor]input_ids: Tensorinput_img_latents: list[torch.Tensor]input_image_sizes: dict[int, list[int]]attention_mask: Tensorposition_ids: Tensorreturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple
Parameter
- hidden_states (
torch.Tensordengan bentuk(batch_size, in_channels, height, width)) —hidden_statesmasukan. - timestep (
torch.LongTensor) — Digunakan untuk menunjukkan langkah denoising. - input_ids (
torch.Tensor) — ID token teks multimodal yang digunakan sebagai kondisioning. - input_img_latents (
listdaritorch.Tensor) — Daftar latens untuk gambar input yang digunakan sebagai kondisioning. - input_image_sizes (
dictdariintkelistdariint) — Pemetaan dari indeks sampel ke posisi tempat embedding gambar input harus ditempatkan dalam urutan kondisioning. - attention_mask (
torch.Tensor) — Attention mask untuk urutan multimodal gabungan. - position_ids (
torch.Tensor) — ID posisi yang digunakan untuk menghitung embedding posisi. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~models.transformer_2d.Transformer2DModelOutputalih-alih tuple biasa.
Mengembalikan
~models.transformer_2d.Transformer2DModelOutput atau tuple
Jika return_dict bernilai True, sebuah ~models.transformer_2d.Transformer2DModelOutput akan dikembalikan, selain itu
sebuah tuple biasa akan dikembalikan.
Metode forward dari OmniGenTransformer2DModel.