Diffusers documentation

MiniMaxH3Transformer3DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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

< >

( 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, defaultnya 56) — Jumlah head yang digunakan untuk multi-head attention.
  • attention_head_dim (int, defaultnya 128) — Jumlah channel di setiap kepala perhatian. Perhatikan bahwa num_attention_heads * attention_head_dim lebih besar daripada hidden_size di MiniMax-H3.
  • hidden_size (int, defaultnya 5376) — Jumlah saluran dari urutan yang dikemas (aliran residual).
  • num_layers (int, defaultnya 50) — Jumlah blok transformer.
  • num_refiner_layers (int, defaultnya 2) — Jumlah blok refiner token yang diterapkan pada stream teks yang diproyeksikan.
  • ffn_dim (int, defaultnya 14336) — Dimensi internal dari lapisan feed-forward SwiGLU.
  • in_channels (int, defaultnya 24) — Jumlah channel dari latens video.
  • audio_in_channels (int, defaultnya 32) — 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, defaultnya 5120) — Jumlah channel dari kondisi teks yang dihasilkan oleh text encoder.
  • freq_dim (int, defaultnya 256) — Dimensi dari embedding sinusoidal timestep. Timestep dikonsumsi tanpa penskalaan dalam [0, 1].
  • time_embed_hidden_dim (int, defaultnya 5376) — Dimensi internal dari MLP timestep.
  • time_embed_dim (int, defaultnya 2688) — Dimensi output dari MLP timestep, yaitu input dari setiap proyeksi AdaLN.
  • rope_freq_dim (int, defaultnya 16) — Jumlah frekuensi rotasi per sumbu. Sumbu (t, h, w) berbagi satu buffer inv_freq dengan panjang ini dan 2 * 3 * rope_freq_dim dari kanal attention_head_dim dirotasi.
  • rope_theta (float, defaultnya 10000.0) — Dasar dari jadwal frekuensi rotasi yang digunakan untuk menghitung buffer rope.inv_freq.
  • norm_eps (float, defaultnya 1e-5) — Epsilon dari norm sebelum attention dan sebelum feed-forward.
  • qk_norm_eps (float, defaultnya 1e-5) — Epsilon dari norma query/key per-head.
  • final_norm_eps (float, defaultnya 1e-5) — Epsilon dari norm output token refiner dan dari norm_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

< >

( 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.Tensor dengan 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 dengan video_indices.
  • audio_hidden_states (torch.Tensor dengan bentuk (batch_size, num_audio_tokens, audio_in_channels)) — Baris laten audio, diurutkan agar sesuai dengan audio_indices.
  • encoder_hidden_states (torch.Tensor dengan bentuk (batch_size, num_text_tokens, text_dim)) — Kondisi teks, diurutkan agar sesuai dengan text_indices.
  • timestep (torch.Tensor dengan 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.Tensor dengan bentuk (seq_len,)) — Untuk setiap baris dari urutan yang dikemas, indeks timestep-nya dalam timestep.
  • token_tags (torch.Tensor dengan bentuk (seq_len,)) — Untuk setiap baris dari urutan yang dikemas, modalitasnya: 0 video, 1 teks, 2 audio.
  • position_ids (torch.Tensor dengan bentuk (seq_len, 3)) — Koordinat rotasi (t, h, w) untuk setiap baris dari urutan yang dikemas.
  • video_indices (torch.Tensor dengan bentuk (num_video_tokens,)) — Posisi baris video dalam urutan yang dikemas.
  • audio_indices (torch.Tensor dengan bentuk (num_audio_tokens,)) — Posisi baris audio dalam urutan yang dikemas.
  • text_indices (torch.Tensor dengan bentuk (num_text_tokens,)) — Posisi baris teks dalam urutan yang dikemas.
  • attention_kwargs (dict, opsional) — Kamus kwargs yang, jika ditentukan, dapat membawa entri scale yang diterapkan ke lapisan LoRA.
  • return_dict (bool, defaultnya True) — Apakah akan mengembalikan MiniMaxH3TransformerOutput alih-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

< >

( sample: Tensoraudio_sample: typing.Optional[torch.Tensor] = None )

Parameter

  • sample (torch.Tensor dengan bentuk (batch_size, num_video_tokens, in_channels * prod(patch_size))) — Prediksi kecepatan video untuk baris yang ditunjuk oleh video_indices, dalam urutan yang sama. Baris kondisioning dikembalikan tanpa masker — tugas pemanggil untuk memaskerinya sebelum langkah scheduler.
  • audio_sample (torch.Tensor dengan bentuk (batch_size, num_audio_tokens, audio_in_channels), defaultnya None) — Prediksi kecepatan audio untuk baris yang ditunjuk oleh audio_indices, dalam urutan yang sama. forward selalu mengisinya; nilainya hanya default ke None agar output dapat dibangun kembali dari dict biasa dari field-fieldnya, yang merupakan cara hook offload accelerate memindahkan BaseOutput kembali ke perangkat input.

Output dari MiniMaxH3Transformer3DModel.

Update on GitHub