Diffusers documentation
MiniMaxH3ImageTransformer2DModel
MiniMaxH3ImageTransformer2DModel
MiniMax tarafından MiniMax-H3-Image içinde tanıtılan, görüntü üretimi ve düzenlemesi için bir Diffusion Transformer modeli.
Bu, ses akışı olmadan MiniMaxH3Transformer3DModel'dir: tek bir blok yığını, metin koşullandırma bilgisini, referans görüntülerin satırlarını ve üretilen görüntünün satırlarını içeren tek bir paketlenmiş 1-B diziyi kapsar. Paketlenmiş yerleşimi oluşturma çağırıcının görevidir; bu nedenle forward imzası, latentlerden ayrı olarak yerleşimi alır: (t, h, w) konum ızgarası, satır başına modalite etiketleri, satır başına timestep indeksleri ve görüntü ile metin satırlarına adresleyen iki indeks tensörü. MiniMaxH3ImageBlocks tüm bunları oluşturur.
Kontrol noktası, her adım için bir çıktı başlığı koruyan Parallel Decoding Distillation (PDD) ile altı örneklem adımına damıtılır. Bu nedenle forward, çalıştığı adımı temsil eden pdd_step_index değerini alır ve o adımın başlığıyla projeksiyon yapar.
import torch
from diffusers import MiniMaxH3ImageTransformer2DModel
transformer = MiniMaxH3ImageTransformer2DModel.from_pretrained(
"MiniMaxAI/MiniMax-H3-Image", subfolder="transformer_diffusers", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"Checkpoint karma hassasiyete sahiptir: giriş yama projeksiyonu, zaman adımı MLP ve çıktı başları float32 iken blok yığını bfloat16'dır. from_pretrained, _keep_in_fp32_modules sayesinde bu yerleşimi korur; bu nedenle dtype=torch.bfloat16 parametresini iletin ve float32 modüllerin yerleştirilmesini sağlayın, modelin ardından .to(torch.bfloat16) ile dönüştürülmesine izin vermeyin.
MiniMaxH3ImageTransformer2DModel
sınıf diffusers.MiniMaxH3ImageTransformer2DModel
< source >( num_attention_heads: int = 56attention_head_dim: int = 128hidden_size: int = 5376num_layers: int = 50num_refiner_layers: int = 2ffn_dim: int = 14336in_channels: int = 24patch_size: tuple[int, int, int] = (1, 2, 2)text_dim: int = 5120freq_dim: int = 256time_embed_hidden_dim: int = 5376time_embed_dim: int = 2688rope_freq_dim: int = 16rope_theta: float = 10000.0norm_eps: float = 1e-05qk_norm_eps: float = 1e-05final_norm_eps: float = 1e-05num_pdd_heads: int = 6 )
Parametreler
- num_attention_heads (
int, varsayılan56) — Çok başlı dikkat (multi-head attention) için kullanılacak baş sayısı. - attention_head_dim (
int, varsayılan128) — Her dikkat başlığındaki kanal sayısı. Not:num_attention_heads * attention_head_dim,hidden_sizedeğerinden daha büyüktür. - hidden_size (
int, varsayılan5376) — Paketlenmiş dizinin kanal sayısı (artık akışı). - num_layers (
int, varsayılan50) — Transformer bloklarının sayısı. - num_refiner_layers (
int, varsayılan2) — Yansıtılmış metin akışına uygulanan token iyileştirme bloklarının sayısı. - ffn_dim (
int, varsayılan14336) — SwiGLU ileri beslemeli katmanlarının iç boyutu. - in_channels (
int, varsayılan24) — Görüntü latentlerinin kanal sayısı. - patch_size (
tuple[int, int, int], varsayılan(1, 2, 2)) — Latentleri satırlara paketlemek için kullanılan(t, h, w)yaması. - text_dim (
int, varsayılan5120) — Metin kodlayıcısının ürettiği metin koşullandırmasının kanal sayısı. - freq_dim (
int, varsayılan256) — Sinüsoidal zaman adımı gömme boyutu. Zaman adımları[0, 1]aralığında ölçeklenmeden kullanılır. - time_embed_hidden_dim (
int, varsayılan5376) — Zaman adımı MLP'sinin iç boyutu. - time_embed_dim (
int, varsayılan2688) — Zaman adımı MLP'sinin çıktı boyutu, yani her AdaLN projeksiyonunun girdisi. - rope_freq_dim (
int, varsayılan16) — Eksen başına dönerli frekans sayısı.(t, h, w)eksenleri bu uzunluktaki tek birinv_freqtamponunu paylaşır veattention_head_dimkanallarının2 * 3 * rope_freq_dimtanesi döndürülür. - rope_theta (
float, varsayılan10000.0) —rope.inv_freqtamponunun hesaplandığı döner frekans zamanlamasının tabanı. - norm_eps (
float, varsayılan1e-5) — Dikkat öncesi ve ileri besleme öncesi normların epsilon değeri. - qk_norm_eps (
float, varsayılan1e-5) — Baş başına sorgu/anahtar normlarının epsilon değeri. - final_norm_eps (
float, varsayılan1e-5) — Token refiner çıktı normunun venorm_out'un epsilon değeri. - num_pdd_heads (
int, varsayılan6) — Kontrol noktasının damıtıldığı örneklem adım sayısı; her adımın kendi çıktı başlığı vardır.
MiniMax-H3-Image'de tanıtılan, görüntü üretimi ve düzenlemesi için bir Transformer modeli.
Bu, ses akışı olmadan MiniMax-H3 dönüştürücüsüdür: tek bir blok yığını, metin koşulunu, referans görüntülerin satırlarını ve üretilen görüntünün satırlarını içeren tek bir paketlenmiş 1-B
diziyi üzerinde çalışır. Dikkat, bu dizinin üzerinde tam öz-dikkattir; çapraz dikkat yoktur. Kontrol noktası, Parallel Decoding Distillation (PDD) ile sabit bir örneklem adım sayısına damıtılmıştır; bu yöntem her adım için bir çıktı başlığı koruduğundan forward, çalıştığı adımın indeksini alır.
Çağıran, paketli yerleşimi oluşturmaktan sorumludur: latentleri yama (patch) haline getirme, satırları sıralama ve (t, h, w) konum ızgarasını, satır başına modalite etiketlerini ve satır başına zaman adımı indekslerini üretme. Dizi dolgu (padding) içermediğinden, dikkat (attention) tek bir belge üzerinde maskesiz çalışır ve tüm dikkat arka uçları (attention backend) kullanılabilir kalır.
Batch ekseni saf bir replikasyon eksenidir: yapısal argümanlar (timestep, timestep_indices, token_tags, position_ids ve iki indeks tensörü) her batch öğesinin paylaştığı tek bir paketlenmiş düzeni tanımlar.
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensortimestep_indices: Tensortoken_tags: Tensorposition_ids: Tensorimage_indices: Tensortext_indices: Tensorpdd_step_index: intreturn_dict: bool = True ) → Transformer2DModelOutput or tuple
Parametreler
- hidden_states (
torch.Tensor, şekli(batch_size, num_image_tokens, in_channels * prod(patch_size))) — Patch'lenmiş latent satırlar — referans görüntülerin satırları ve üretilen görüntünün satırları — paketlenmiş dizideki sıralamaya göre, yaniimage_indicesile eşleşecek şekilde sıralanmıştır. - encoder_hidden_states (
torch.Tensor, şekli(batch_size, num_text_tokens, text_dim)) —text_indicesile eşleşecek şekilde sıralanmış metin koşullandırması. - timestep (
torch.Tensor, şekli(num_timesteps,)) — Paketlenmiş dizide bulunan ayrı timestep değerleri,[0, 1]aralığında ve ölçeklenmemiş. Tek bir ileri geçiş, farklı gürültü seviyelerindeki satırları (üretilen satırlar, referans satırlar) işler. - timestep_indices (
torch.Tensor, şekli(seq_len,)) — Paketlenmiş dizinin her satırı için,timestepiçindeki zaman adımı indeksi. - token_tags (
torch.Tensor, şekli(seq_len,)) — Paketlenmiş dizinin her satırı için modallite:0görüntü,1metin. - position_ids (
torch.Tensor, şekli(seq_len, 3)) — Paketlenmiş dizinin her satırının(t, h, w)döner koordinatları. - image_indices (
torch.Tensor, şekli(num_image_tokens,)) — Paketlenmiş dizideki görüntü satırlarının konumları. - text_indices (
torch.Tensor, şekli(num_text_tokens,)) — Paketlenmiş dizideki metin satırlarının konumları. - pdd_step_index (
int) — Çıktı başlığını seçen örneklem adımını belirtir. - return_dict (
bool, varsayılanTrue) — Düz bir tuple yerine Transformer2DModelOutput döndürülüp döndürülmemesi.
Dönüş değeri
Transformer2DModelOutput veya tuple
image_indices satır sırasına göre, (batch_size, num_image_tokens, in_channels * prod(patch_size)) biçimindeki her görüntü satırının hızı.