Diffusers documentation
MiniMaxH3Transformer3DModel
MiniMaxH3Transformer3DModel
MiniMax tarafından MiniMax-H3'te tanıtılan, video ve sesin birlikte üretilmesi için kullanılan bir Diffusion Transformer modeli.
MiniMax-H3, metin koşullandırma, koşullandırma görüntüsü ve video satırları, ses satırları ve hedef video satırlarını aynı anda barındıran tek bir paketlenmiş 1-B dizinin üzerinde tek bir blok yığını çalıştırır. Dikkat, bu dizinin üzerinde tam öz-dikkat olduğundan, çapraz dikkat ve modallık başına blok ağırlıkları yoktur. Modallığa özgü davranış yalnızca iki giriş yama projeksiyonundan, AdaLN modülasyon parametrelerini seçen satır başına modallık etiketinden ve iki çıktı başından gelir.
Paketli yerleşimi oluşturma, çağıran tarafın görevidir; bu nedenle forward imzası, latents’ten ayrı olarak yerleşimi alır: (t, h, w) konum ızgarası, satır başına modalite etiketleri, satır başına timestep indeksleri ve video, ses ve metin satırlarına adres veren üç indeks tensörü. MiniMaxH3Blocks ve MiniMaxH3Ref2VABlocks tüm bunları oluşturur.
Dolgu satırları taşıyan bir yerleşim (etiket -1), bu satırların bir Boole maskesi tarafından kendi dikkat belgelerinde tutulması nedeniyle maskeli bir dikkat arka ucuna ihtiyaç duyar; dolgusuz bir dizi maske gerektirmez ve tüm arka uçları kullanılabilir durumda tutar.
Tek bir depo, hem yayınlanan kontrol noktası bölümlerini içerir; bu nedenle görevi seçen alt klasördür: metin ve anahtar kare görevleri için transformer/, omni-reference görevi için transformer_ref/.
import torch
from diffusers import MiniMaxH3Transformer3DModel
transformer = MiniMaxH3Transformer3DModel.from_pretrained(
"MiniMaxAI/MiniMax-H3", subfolder="transformer", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"Checkpoint karma hassasiyete sahiptir: iki giriş yama projeksiyonu, timestep MLP ve iki çıktı başı 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.
MiniMaxH3Transformer3DModel
sınıf diffusers.MiniMaxH3Transformer3DModel
< 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 = 24audio_in_channels: int = 32patch_size: tuple = (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-05 )
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: MiniMax-H3'tenum_attention_heads * attention_head_dim,hidden_size'den 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) — Video latentlerinin kanal sayısı. - audio_in_channels (
int, varsayılan32) — Ses latentlerinin kanal sayısı. - patch_size (
tuple[int, int, int], varsayılan(1, 2, 2)) — Video latentlerini 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.
MiniMax-H3'te tanıtılan, video + ses üretimi için ortak bir Transformer modeli.
MiniMax-H3, metin koşulunu, koşullandırma görüntü / video satırlarını, ses satırlarını ve hedef video satırlarını içeren tek bir paketlenmiş 1-B dizinin üzerinde tek bir blok yığını çalıştırır. Dikkat, bu dizinin üzerinde tam öz-dikkattir; çapraz dikkat yoktur ve modalite başına blok ağırlıkları yoktur. Modaliteye özgü davranış yalnızca iki giriş yama projeksiyonundan, satır başına AdaLN modalite etiketinden ve iki çıktı başından gelir.
Çağıran, paketli yerleşimi oluşturmaktan sorumludur: video latentlerini patchify etmek, satırları sıralamak ve (t, h, w) konum ızgarasını, satır başına modalite etiketlerini ve satır başına timestep indekslerini üretmek. Dizi herhangi bir dolgu içermez — referans uygulama, FlashAttention için 64'ün katına doldurur ve bu portun kullanım alanı olmayan cu_seqlens = [0, used, S] ile kuyruğu ayırır — bu nedenle dikkat, tek bir belge üzerinde maskesiz çalışır ve tüm dikkat arka uçları kullanılabilir kalır.
Batch ekseni saf bir replikasyon eksenidir: yapısal argümanlar (timestep, timestep_indices, token_tags, position_ids ve üç indeks tensörü) her batch öğesinin paylaştığı tek bir paketlenmiş yerleşimi tanımlar ve her öğe tek bir dikkat belgesidir.
forward
< source >( hidden_states: Tensoraudio_hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensortimestep_indices: Tensortoken_tags: Tensorposition_ids: Tensorvideo_indices: Tensoraudio_indices: Tensortext_indices: Tensorattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → MiniMaxH3TransformerOutput or tuple
Parametreler
- hidden_states (
torch.Tensor, şekli(batch_size, num_video_tokens, in_channels * prod(patch_size))) — Patch'lenmiş video latent satırları — koşullama satırları ve hedef satırlar — paketlenmiş dizide göründükleri sıraya göre sıralanmıştır, yanivideo_indicesile eşleşir. - audio_hidden_states (
torch.Tensor, şekli(batch_size, num_audio_tokens, audio_in_channels)) —audio_indicesile eşleşecek şekilde sıralanmış ses latent satırları. - 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ı (hedef video, hedef ses, koşullama 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:0video,1metin,2ses. - position_ids (
torch.Tensor, şekli(seq_len, 3)) — Paketlenmiş dizinin her satırının(t, h, w)döner koordinatları. - video_indices (
torch.Tensor, şekli(num_video_tokens,)) — Paketlenmiş dizideki video satırlarının konumları. - audio_indices (
torch.Tensor, şekli(num_audio_tokens,)) — Paketlenmiş dizideki ses satırlarının konumları. - text_indices (
torch.Tensor, şekli(num_text_tokens,)) — Paketlenmiş dizideki metin satırlarının konumları. - attention_kwargs (
dict, isteğe bağlı) — Belirtilirse, LoRA katmanlarına uygulanan birscalegirdisi taşıyabilen bir kwargs sözlüğü. - return_dict (
bool, varsayılanTrue) — Düz bir tuple yerineMiniMaxH3TransformerOutputdöndürülüp döndürülmemesi.
Dönüş değeri
MiniMaxH3TransformerOutput veya tuple
video_indices ve audio_indices satır sırasına göre, (batch_size, num_video_tokens, in_channels * prod(patch_size)) biçiminde video hızı ve (batch_size, num_audio_tokens, audio_in_channels) biçiminde ses hızı.
MiniMaxH3TransformerOutput
sınıf diffusers.models.transformers.transformer_minimax_h3.MiniMaxH3TransformerOutput
< source >( sample: Tensoraudio_sample: typing.Optional[torch.Tensor] = None )
Parametreler
- sample (
torch.Tensor, şekli(batch_size, num_video_tokens, in_channels * prod(patch_size))) —video_indicesile işaretlenen satırlar için video hız tahmini, aynı sırada. Koşullandırma satırları maskelenmeden döndürülür — zamanlayıcı adımından önce bunları maskelemek çağırıcının sorumluluğundadır. - audio_sample (
torch.Tensor, şekli(batch_size, num_audio_tokens, audio_in_channels), varsayılanNone) —audio_indicesile işaretlenen satırlar için, aynı sırayla ses hızı tahmini.forwardher zaman bunu doldurur; yalnızca çıktı, alanlarının düz bir sözlüğünden yeniden oluşturulabilmesi için varsayılan olarakNoneolarak bırakılır. Bu, accelerate offload kancalarının birBaseOutputnesnesini giriş cihazına geri taşıma biçimidir.
MiniMaxH3Transformer3DModel'in çıktısı.