Diffusers documentation
OmniGenTransformer2DModel
OmniGenTransformer2DModel
OmniGen için görüntüler üretmek üzere çok modlu talimatları kabul eden bir Transformer modeli.
Makalenin özeti şudur:
Büyük Dil Modelleri'nin (LLM) ortaya çıkması, dil üretimi görevlerini birleştirmiş ve insan-makine etkileşimini devrim niteliğinde dönüştürmüştür. Ancak görüntü üretimi alanında, tek bir çerçeve içinde çeşitli görevleri ele alabilen birleşik bir model büyük ölçüde keşfedilmemiştir. Bu çalışmada, birleşik görüntü üretimi için yeni bir difüzyon modeli olan OmniGen'i tanıtıyoruz. OmniGen, aşağıdaki özelliklerle karakterize edilir: 1) Birleştirme: OmniGen yalnızca metinden görüntüye üretim yeteneklerini sergilemekle kalmaz, aynı zamanda görüntü düzenleme, nesne odaklı üretim ve görsel koşullu üretim gibi çeşitli aşağı akış görevlerini de doğal olarak destekler. 2) Sadelik: OmniGen'in mimarisi son derece basitleştirilmiştir ve ek eklentilere olan ihtiyacı ortadan kaldırır. Ayrıca, mevcut difüzyon modellerine kıyasla daha kullanıcı dostudur ve ek ara adımlara ihtiyaç duymadan, talimatlar yoluyla karmaşık görevleri uçtan uca tamamlayabilir; bu da görüntü üretim iş akışını büyük ölçüde basitleştirir. 3) Bilgi Transferi: Birleşik bir biçimde öğrenmeden faydalanarak OmniGen, farklı görevler arasında bilgiyi etkili bir şekilde aktarır, görülmemiş görevleri ve alanları yönetir ve yeni yetenekler sergiler. Ayrıca modelin akıl yürütme yeteneklerini ve chain-of-thought mekanizmasının potansiyel uygulamalarını da inceliyoruz. Bu çalışma, genel amaçlı bir görüntü üretim modeli için ilk denemeyi temsil etmektedir ve gelecekteki ilerlemeleri teşvik etmek için kaynaklarımızı https://github.com/VectorSpaceLab/OmniGen adresinde paylaşacağız.
import torch
from diffusers import OmniGenTransformer2DModel
transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)OmniGenTransformer2DModel
sınıf 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' )
Parametreler
- in_channels (
int, varsayılan4) — Girdideki kanal sayısı. - patch_size (
int, varsayılan2) — Patch gömme katmanında kullanılacak uzamsal yamaların boyutu. - hidden_size (
int, varsayılan3072) — Modeldeki gizli katmanların boyutluluğu. - rms_norm_eps (
float, varsayılan1e-5) — RMSNorm katmanı için Eps. - num_attention_heads (
int, varsayılan32) — Çok başlı dikkat (multi-head attention) için kullanılacak baş sayısı. - num_key_value_heads (
int, varsayılan32) — Çok başlı dikkat (multi-head attention) içinde anahtarlar ve değerler için kullanılacak baş sayısı. - intermediate_size (
int, varsayılan8192) — FeedForward katmanlarındaki gizli katmanın boyutu. - num_layers (
int, varsayılan32) — Kullanılacak transformer bloğu katman sayısı. - pad_token_id (
int, varsayılan32000) — Doldurma belirtecinin kimliği. - vocab_size (
int, varsayılan32064) — Gömme sözlüğünün sözlük boyutu. - rope_base (
int, varsayılan10000) — RoPE oluşturulurken kullanılacak varsayılan theta değeri. - rope_scaling (
dict, isteğe bağlı) — RoPE için ölçekleme katsayıları.short_factorvelong_factoriçermelidir. - pos_embed_max_size (
int, varsayılan192) — Konumsal gömme (positional embeddings) boyutunun maksimum değeri. - time_step_dim (
int, varsayılan256) — Zaman adımı gömme çıktısının boyutu. - flip_sin_to_cos (
bool, varsayılanTrue) — Adım gömme (timestep embeddings) hazırlanırken konumsal gömme (positional embeddings) içindeki sin ve cos değerlerinin tersine çevrilip çevrilmeyeceğini belirtir. - downscale_freq_shift (
int, varsayılan0) — Zaman adımları gömme işlemlerini küçültürken kullanılacak frekans kaydırması. - timestep_activation_fn (
str, varsayılansilu) — Zaman adımları gömme (embedding) için kullanılacak aktivasyon fonksiyonu.
OmniGen'de tanıtılan Transformer modeli (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
Parametreler
- hidden_states (
torch.Tensor, şekli(batch_size, in_channels, height, width)) — Girdihidden_states. - timestep (
torch.LongTensor) — Gürültü azaltma adımını belirtmek için kullanılır. - input_ids (
torch.Tensor) — Koşullama olarak kullanılan çok modlu metin token kimlikleri. - input_img_latents (
listoftorch.Tensor) — List of latents for input images used as conditioning. - input_image_sizes (
dictofinttolistofint) — Giriş görsel gömmelemelerinin koşullandırma dizisinde yerleştirilmesi gereken konumlara, örnek dizininden yapılan eşleme. - attention_mask (
torch.Tensor) — Birleşik çok modlu dizgi için dikkat maskesi. - position_ids (
torch.Tensor) — Konumsal gömme hesaplamalarında kullanılan konum kimlikleri. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~models.transformer_2d.Transformer2DModelOutputdöndürülüp döndürülmemesi.
Dönüş değeri
~models.transformer_2d.Transformer2DModelOutput veya tuple
return_dict True ise, ~models.transformer_2d.Transformer2DModelOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
OmniGenTransformer2DModel ileri yöntemi.