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

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

< >

( 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ı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: MiniMax-H3'te num_attention_heads * attention_head_dim, hidden_size'den 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) — Video latentlerinin kanal sayısı.
  • audio_in_channels (int, varsayılan 32) — 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ı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.

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

< >

( 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, yani video_indices ile eşleşir.
  • audio_hidden_states (torch.Tensor, şekli (batch_size, num_audio_tokens, audio_in_channels)) — audio_indices ile eşleşecek şekilde sıralanmış ses latent satırları.
  • 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ı (hedef video, hedef ses, koşullama 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 video, 1 metin, 2 ses.
  • 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 bir scale girdisi taşıyabilen bir kwargs sözlüğü.
  • return_dict (bool, varsayılan True) — Düz bir tuple yerine MiniMaxH3TransformerOutput dö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

< >

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

Parametreler

  • sample (torch.Tensor, şekli (batch_size, num_video_tokens, in_channels * prod(patch_size))) — video_indices ile 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ılan None) — audio_indices ile işaretlenen satırlar için, aynı sırayla ses hızı tahmini. forward her zaman bunu doldurur; yalnızca çıktı, alanlarının düz bir sözlüğünden yeniden oluşturulabilmesi için varsayılan olarak None olarak bırakılır. Bu, accelerate offload kancalarının bir BaseOutput nesnesini giriş cihazına geri taşıma biçimidir.

MiniMaxH3Transformer3DModel'in çıktısı.

Update on GitHub