Diffusers documentation
MiniMaxH3Transformer3DModel
MiniMaxH3Transformer3DModel
Model Diffusion Transformer untuk generasi video dan audio secara bersama-sama, diperkenalkan dalam MiniMax-H3 oleh MiniMax.
MiniMax-H3 menjalankan satu tumpukan blok di atas satu urutan 1-D yang dikemas yang sekaligus menyimpan kondisi teks, baris gambar dan video kondisi, baris audio, serta baris video target. Atensinya adalah self-attention penuh di atas urutan tersebut, sehingga tidak ada cross-attention dan tidak ada bobot blok per-modalitas. Perilaku spesifik modalitas hanya berasal dari dua proyeksi patch input, tag modalitas per-baris yang memilih parameter modulasi AdaLN, dan dua kepala output.
Membangun layout yang dikemas adalah tugas pemanggil, itulah mengapa tanda tangan forward mengambil layout terpisah dari latents: grid posisi (t, h, w), tag modalitas per baris, indeks timestep per baris, dan tiga tensor indeks yang mengalamatkan baris video, audio, dan teks. MiniMaxH3Blocks dan MiniMaxH3Ref2VABlocks membangun semuanya.
Layout yang membawa baris padding (tag -1) memerlukan backend perhatian yang dimasker, karena baris-baris tersebut dipertahankan dalam dokumen perhatian mereka sendiri oleh mask boolean; urutan tanpa padding tidak memerlukan mask dan tetap mempertahankan semua backend yang tersedia.
Satu repositori menyimpan partisi checkpoint yang telah dirilis, sehingga subfolder yang menentukan tugas: transformer/ untuk tugas teks dan keyframe, transformer_ref/ untuk tugas omni-reference.
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 menggunakan presisi campuran: dua proyeksi patch input, MLP timestep, dan dua kepala output adalah float32, sedangkan tumpukan blok adalah bfloat16. from_pretrained mempertahankan tata letak tersebut melalui _keep_in_fp32_modules, jadi berikan dtype=torch.bfloat16 dan biarkan modul float32 ditempatkan, alih-alih meng-cast model dengan .to(torch.bfloat16) setelahnya.
MiniMaxH3Transformer3DModel
kelas 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 )
Parameter
- num_attention_heads (
int, defaultnya56) — Jumlah head yang digunakan untuk multi-head attention. - attention_head_dim (
int, defaultnya128) — Jumlah channel di setiap kepala perhatian. Perhatikan bahwanum_attention_heads * attention_head_dimlebih besar daripadahidden_sizedi MiniMax-H3. - hidden_size (
int, defaultnya5376) — Jumlah saluran dari urutan yang dikemas (aliran residual). - num_layers (
int, defaultnya50) — Jumlah blok transformer. - num_refiner_layers (
int, defaultnya2) — Jumlah blok refiner token yang diterapkan pada stream teks yang diproyeksikan. - ffn_dim (
int, defaultnya14336) — Dimensi internal dari lapisan feed-forward SwiGLU. - in_channels (
int, defaultnya24) — Jumlah channel dari latens video. - audio_in_channels (
int, defaultnya32) — Jumlah channel dari latens audio. - patch_size (
tuple[int, int, int], defaultnya(1, 2, 2)) — Patch(t, h, w)yang digunakan untuk mengemas latens video ke dalam baris. - text_dim (
int, defaultnya5120) — Jumlah channel dari kondisi teks yang dihasilkan oleh text encoder. - freq_dim (
int, defaultnya256) — Dimensi dari embedding sinusoidal timestep. Timestep dikonsumsi tanpa penskalaan dalam[0, 1]. - time_embed_hidden_dim (
int, defaultnya5376) — Dimensi internal dari MLP timestep. - time_embed_dim (
int, defaultnya2688) — Dimensi output dari MLP timestep, yaitu input dari setiap proyeksi AdaLN. - rope_freq_dim (
int, defaultnya16) — Jumlah frekuensi rotasi per sumbu. Sumbu(t, h, w)berbagi satu bufferinv_freqdengan panjang ini dan2 * 3 * rope_freq_dimdari kanalattention_head_dimdirotasi. - rope_theta (
float, defaultnya10000.0) — Dasar dari jadwal frekuensi rotasi yang digunakan untuk menghitung bufferrope.inv_freq. - norm_eps (
float, defaultnya1e-5) — Epsilon dari norm sebelum attention dan sebelum feed-forward. - qk_norm_eps (
float, defaultnya1e-5) — Epsilon dari norma query/key per-head. - final_norm_eps (
float, defaultnya1e-5) — Epsilon dari norm output token refiner dan darinorm_out.
Model Transformer untuk generasi video + audio secara bersama-sama, diperkenalkan dalam MiniMax-H3.
MiniMax-H3 menjalankan satu tumpukan blok di atas satu urutan 1-D yang dikemas yang berisi kondisi teks, baris gambar/video pengkondisian, baris audio, dan baris video target. Atensinya adalah self-attention penuh di atas urutan tersebut; tidak ada cross-attention dan tidak ada bobot blok per-modalitas. Perilaku spesifik modalitas hanya berasal dari dua proyeksi patch input, tag modalitas AdaLN per-baris, dan dua kepala output.
Pemanggil bertanggung jawab untuk membangun tata letak yang dikemas: melakukan patchifikasi pada latens video, mengurutkan baris, dan menghasilkan grid posisi (t, h, w), tag modalitas per baris, dan indeks timestep per baris. Urutan tidak membawa padding — implementasi referensi mem-padded-nya menjadi kelipatan 64 untuk FlashAttention dan memisahkan ekor dengan cu_seqlens = [0, used, S], yang tidak digunakan oleh port ini — sehingga perhatian berjalan tanpa masker di atas satu dokumen dan semua backend perhatian tetap tersedia.
Sumbu batch adalah sumbu replikasi murni: argumen struktural (timestep, timestep_indices, token_tags, position_ids dan tiga tensor indeks) menggambarkan satu tata letak terpadu yang dibagikan oleh setiap item batch, dan setiap item adalah satu dokumen perhatian.
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
Parameter
- hidden_states (
torch.Tensordengan bentuk(batch_size, num_video_tokens, in_channels * prod(patch_size))) — Baris latensi video yang telah di-patch — baris kondisioning dan baris target — yang diurutkan sesuai kemunculannya dalam urutan yang dikemas, yaitu sesuai denganvideo_indices. - audio_hidden_states (
torch.Tensordengan bentuk(batch_size, num_audio_tokens, audio_in_channels)) — Baris laten audio, diurutkan agar sesuai denganaudio_indices. - encoder_hidden_states (
torch.Tensordengan bentuk(batch_size, num_text_tokens, text_dim)) — Kondisi teks, diurutkan agar sesuai dengantext_indices. - timestep (
torch.Tensordengan bentuk(num_timesteps,)) — Nilai timestep yang berbeda yang ada dalam urutan yang dikemas, dalam rentang[0, 1]dan tidak diskalakan. Satu langkah forward melayani baris pada tingkat noise yang berbeda (video target, audio target, baris kondisioning). - timestep_indices (
torch.Tensordengan bentuk(seq_len,)) — Untuk setiap baris dari urutan yang dikemas, indeks timestep-nya dalamtimestep. - token_tags (
torch.Tensordengan bentuk(seq_len,)) — Untuk setiap baris dari urutan yang dikemas, modalitasnya:0video,1teks,2audio. - position_ids (
torch.Tensordengan bentuk(seq_len, 3)) — Koordinat rotasi(t, h, w)untuk setiap baris dari urutan yang dikemas. - video_indices (
torch.Tensordengan bentuk(num_video_tokens,)) — Posisi baris video dalam urutan yang dikemas. - audio_indices (
torch.Tensordengan bentuk(num_audio_tokens,)) — Posisi baris audio dalam urutan yang dikemas. - text_indices (
torch.Tensordengan bentuk(num_text_tokens,)) — Posisi baris teks dalam urutan yang dikemas. - attention_kwargs (
dict, opsional) — Kamus kwargs yang, jika ditentukan, dapat membawa entriscaleyang diterapkan ke lapisan LoRA. - return_dict (
bool, defaultnyaTrue) — Apakah akan mengembalikanMiniMaxH3TransformerOutputalih-alih tuple biasa.
Mengembalikan
MiniMaxH3TransformerOutput atau tuple
Kecepatan video dengan bentuk (batch_size, num_video_tokens, in_channels * prod(patch_size)) dan kecepatan audio dengan bentuk (batch_size, num_audio_tokens, audio_in_channels), dalam urutan baris dari video_indices dan audio_indices.
MiniMaxH3TransformerOutput
kelas diffusers.models.transformers.transformer_minimax_h3.MiniMaxH3TransformerOutput
< source >( sample: Tensoraudio_sample: typing.Optional[torch.Tensor] = None )
Parameter
- sample (
torch.Tensordengan bentuk(batch_size, num_video_tokens, in_channels * prod(patch_size))) — Prediksi kecepatan video untuk baris yang ditunjuk olehvideo_indices, dalam urutan yang sama. Baris kondisioning dikembalikan tanpa masker — tugas pemanggil untuk memaskerinya sebelum langkah scheduler. - audio_sample (
torch.Tensordengan bentuk(batch_size, num_audio_tokens, audio_in_channels), defaultnyaNone) — Prediksi kecepatan audio untuk baris yang ditunjuk olehaudio_indices, dalam urutan yang sama.forwardselalu mengisinya; nilainya hanya default keNoneagar output dapat dibangun kembali dari dict biasa dari field-fieldnya, yang merupakan cara hook offload accelerate memindahkanBaseOutputkembali ke perangkat input.
Output dari MiniMaxH3Transformer3DModel.