Diffusers documentation

MiniMaxH3ImageTransformer2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( 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ılan 56) — Çok başlı dikkat (multi-head attention) için kullanılacak baş sayısı.
  • attention_head_dim (int, varsayılan 128) — Her dikkat başlığındaki kanal sayısı. Not: num_attention_heads * attention_head_dim, hidden_size değerinden daha büyüktür.
  • hidden_size (int, varsayılan 5376) — Paketlenmiş dizinin kanal sayısı (artık akışı).
  • num_layers (int, varsayılan 50) — Transformer bloklarının sayısı.
  • num_refiner_layers (int, varsayılan 2) — Yansıtılmış metin akışına uygulanan token iyileştirme bloklarının sayısı.
  • ffn_dim (int, varsayılan 14336) — SwiGLU ileri beslemeli katmanlarının iç boyutu.
  • in_channels (int, varsayılan 24) — 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ılan 5120) — Metin kodlayıcısının ürettiği metin koşullandırmasının kanal sayısı.
  • freq_dim (int, varsayılan 256) — 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ılan 5376) — Zaman adımı MLP'sinin iç boyutu.
  • time_embed_dim (int, varsayılan 2688) — Zaman adımı MLP'sinin çıktı boyutu, yani her AdaLN projeksiyonunun girdisi.
  • rope_freq_dim (int, varsayılan 16) — Eksen başına dönerli frekans sayısı. (t, h, w) eksenleri bu uzunluktaki tek bir inv_freq tamponunu paylaşır ve attention_head_dim kanallarının 2 * 3 * rope_freq_dim tanesi döndürülür.
  • rope_theta (float, varsayılan 10000.0) — rope.inv_freq tamponunun hesaplandığı döner frekans zamanlamasının tabanı.
  • norm_eps (float, varsayılan 1e-5) — Dikkat öncesi ve ileri besleme öncesi normların epsilon değeri.
  • qk_norm_eps (float, varsayılan 1e-5) — Baş başına sorgu/anahtar normlarının epsilon değeri.
  • final_norm_eps (float, varsayılan 1e-5) — Token refiner çıktı normunun ve norm_out'un epsilon değeri.
  • num_pdd_heads (int, varsayılan 6) — 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

< >

( 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, yani image_indices ile eşleşecek şekilde sıralanmıştır.
  • encoder_hidden_states (torch.Tensor, şekli (batch_size, num_text_tokens, text_dim)) — text_indices ile 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, timestep içindeki zaman adımı indeksi.
  • token_tags (torch.Tensor, şekli (seq_len,)) — Paketlenmiş dizinin her satırı için modallite: 0 görüntü, 1 metin.
  • 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ılan True) — 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ı.

Update on GitHub