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.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3Transformer3DModel

Một mô hình Diffusion Transformer cho việc tạo video và âm thanh đồng thời, được giới thiệu trong MiniMax-H3 bởi MiniMax.

MiniMax-H3 chạy một chồng khối duy nhất trên một chuỗi 1-D đóng gói chứa đồng thời điều kiện văn bản, hàng ảnh và hàng video điều kiện, hàng âm thanh và hàng video đích. Attention là self-attention đầy đủ trên chuỗi đó, do đó không có cross-attention và không có trọng số khối riêng cho từng phương thức. Hành vi đặc thù theo phương thức chỉ đến từ hai phép chiếu patch đầu vào, thẻ phương thức theo hàng chọn các tham số điều biến AdaLN, và hai đầu ra.

Việc xây dựng bố cục đóng gói là trách nhiệm của bên gọi, đó là lý do tại sao chữ ký forward tách riêng bố cục khỏi các biến tiềm ẩn: lưới vị trí (t, h, w), các thẻ phương thức cho từng hàng, các chỉ số bước thời gian cho từng hàng và ba tensor chỉ số để truy cập các hàng video, âm thanh và văn bản. MiniMaxH3Blocks và MiniMaxH3Ref2VABlocks xây dựng tất cả những điều này.

Một layout chứa các hàng padding (tag -1) cần một backend attention có mask, vì các hàng đó được giữ trong tài liệu attention riêng của chúng bằng một mask boolean; một chuỗi không có padding thì không cần mask và giữ mọi backend khả dụng.

Một kho chứa cả các phân vùng checkpoint đã phát hành, do đó thư mục con là thứ xác định tác vụ: transformer/ cho các tác vụ văn bản và keyframe, transformer_ref/ cho tác vụ 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 có độ chính xác hỗn hợp: hai phép chiếu patch đầu vào, MLP bước thời gian và hai đầu ra là float32 trong khi chồng khối là bfloat16. from_pretrained giữ nguyên bố cục đó thông qua _keep_in_fp32_modules, vì vậy hãy truyền dtype=torch.bfloat16 và để nó đặt các module float32 thay vì ép kiểu mô hình bằng .to(torch.bfloat16) sau đó.

MiniMaxH3Transformer3DModel

lớp 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[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-05 )

Tham số

  • num_attention_heads (int, mặc định là 56) — Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention).
  • attention_head_dim (int, mặc định là 128) — Số lượng kênh trong mỗi đầu chú ý. Lưu ý rằng num_attention_heads * attention_head_dim lớn hơn hidden_size trong MiniMax-H3.
  • hidden_size (int, mặc định là 5376) — Số lượng kênh của chuỗi đã đóng gói (dòng dư).
  • num_layers (int, mặc định là 50) — Số lượng khối transformer.
  • num_refiner_layers (int, mặc định là 2) — Số lượng khối token refiner được áp dụng cho luồng văn bản đã được chiếu (projected).
  • ffn_dim (int, mặc định là 14336) — Kích thước chiều trong của các lớp feed-forward SwiGLU.
  • in_channels (int, mặc định là 24) — Số lượng kênh của các latent video.
  • audio_in_channels (int, mặc định là 32) — Số lượng kênh của các latent âm thanh.
  • patch_size (tuple[int, int, int], mặc định là (1, 2, 2)) — Patch (t, h, w) được dùng để đóng gói các latents của video thành các hàng.
  • text_dim (int, mặc định là 5120) — Số lượng kênh của điều kiện văn bản do trình mã hóa văn bản tạo ra.
  • freq_dim (int, mặc định là 256) — Kích thước của nhúng bước thời gian hình sin. Các bước thời gian được sử dụng không có hệ số trong [0, 1].
  • time_embed_hidden_dim (int, mặc định là 5376) — Chiều kích bên trong của MLP bước thời gian.
  • time_embed_dim (int, mặc định là 2688) — Kích thước đầu ra của MLP bước thời gian, tức là đầu vào của mọi phép chiếu AdaLN.
  • rope_freq_dim (int, mặc định là 16) — Số lượng tần số xoay (rotary) trên mỗi trục. Các trục (t, h, w) dùng chung một bộ đệm inv_freq có độ dài này và 2 * 3 * rope_freq_dim trong số các kênh attention_head_dim sẽ được xoay.
  • rope_theta (float, mặc định là 10000.0) — Cơ số của lịch trình tần số quay mà bộ đệm rope.inv_freq được tính từ đó.
  • norm_eps (float, mặc định là 1e-5) — Epsilon của các chuẩn hóa (norms) trước chú ý (pre-attention) và trước mạng tiền hướng (pre-feed-forward).
  • qk_norm_eps (float, mặc định là 1e-5) — Epsilon của các chuẩn query/key trên mỗi head.
  • final_norm_eps (float, mặc định là 1e-5) — Epsilon của chuẩn hóa đầu ra của bộ tinh chỉnh token và của norm_out.

Một mô hình Transformer cho việc tạo video + âm thanh đồng thời, được giới thiệu trong MiniMax-H3.

MiniMax-H3 chạy một chồng khối duy nhất trên một chuỗi 1-D đóng gói chứa điều kiện văn bản, các hàng ảnh / video điều kiện, các hàng âm thanh và các hàng video đích. Attention là self-attention đầy đủ trên chuỗi đó; không có cross-attention và không có trọng số khối riêng cho từng phương thức. Hành vi đặc thù cho từng phương thức chỉ đến từ hai phép chiếu patch đầu vào, thẻ phương thức AdaLN cho từng hàng và hai đầu ra.

Người gọi chịu trách nhiệm xây dựng bố cục đã đóng gói: patchify các latent của video, sắp xếp các hàng và tạo lưới vị trí (t, h, w), các thẻ modality cho từng hàng và các chỉ số timestep cho từng hàng. Chuỗi không chứa padding — bản tham chiếu sẽ pad nó thành bội số của 64 cho FlashAttention và tách phần đuôi bằng cu_seqlens = [0, used, S], điều mà bản port này không cần — do đó attention chạy không có mask trên một tài liệu và mọi backend attention đều khả dụng.

Trục batch là một trục nhân bản thuần túy: các đối số cấu trúc (timestep, timestep_indices, token_tags, position_ids và ba tensor chỉ số) mô tả một bố cục đóng gói duy nhất mà mọi phần tử trong batch cùng chia sẻ, và mỗi phần tử là một tài liệu attention đơn lẻ.

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

Tham số

  • hidden_states (torch.Tensor có hình dạng (batch_size, num_video_tokens, in_channels * prod(patch_size))) — Các hàng latent video đã được chia patch — gồm các hàng điều kiện và các hàng đích — được sắp xếp theo thứ tự xuất hiện trong chuỗi đã đóng gói, tức là khớp với video_indices.
  • audio_hidden_states (torch.Tensor có hình dạng (batch_size, num_audio_tokens, audio_in_channels)) — Các hàng ẩn của âm thanh, được sắp xếp để khớp với audio_indices.
  • encoder_hidden_states (torch.Tensor có hình dạng (batch_size, num_text_tokens, text_dim)) — Điều kiện văn bản, được sắp xếp để khớp với text_indices.
  • timestep (torch.Tensor có hình dạng (num_timesteps,)) — Các giá trị khác nhau của timestep có mặt trong chuỗi đã đóng gói, nằm trong khoảng [0, 1] và chưa được nhân hệ số. Một lần forward phục vụ các hàng ở các mức nhiễu khác nhau (video đích, âm thanh đích, các hàng điều kiện).
  • timestep_indices (torch.Tensor có hình dạng (seq_len,)) — Với mỗi hàng của chuỗi đã đóng gói, chỉ số của bước thời gian của nó trong timestep.
  • token_tags (torch.Tensor có hình dạng (seq_len,)) — Với mỗi hàng của chuỗi đã đóng gói, chế độ của nó: 0 video, 1 văn bản, 2 âm thanh.
  • position_ids (torch.Tensor có hình dạng (seq_len, 3)) — Các tọa độ xoay (t, h, w) của mọi hàng trong chuỗi được đóng gói.
  • video_indices (torch.Tensor có hình dạng (num_video_tokens,)) — Vị trí của các hàng video trong chuỗi đã đóng gói.
  • audio_indices (torch.Tensor có hình dạng (num_audio_tokens,)) — Vị trí của các hàng âm thanh trong chuỗi đã đóng gói.
  • text_indices (torch.Tensor có hình dạng (num_text_tokens,)) — Vị trí của các hàng văn bản trong chuỗi đã đóng gói.
  • attention_kwargs (dict, tùy chọn) — Một từ điển kwargs mà, nếu được chỉ định, có thể chứa mục scale được áp dụng cho các lớp LoRA.
  • return_dict (bool, mặc định là True) — Có nên trả về một MiniMaxH3TransformerOutput thay vì một tuple thông thường hay không.

Trả về

MiniMaxH3TransformerOutput hoặc tuple

Tốc độ video có hình dạng (batch_size, num_video_tokens, in_channels * prod(patch_size)) và tốc độ âm thanh có hình dạng (batch_size, num_audio_tokens, audio_in_channels), theo thứ tự hàng của video_indices và audio_indices.

MiniMaxH3TransformerOutput

lớp diffusers.models.transformers.transformer_minimax_h3.MiniMaxH3TransformerOutput

< >

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

Tham số

  • sample (torch.Tensor có hình dạng (batch_size, num_video_tokens, in_channels * prod(patch_size))) — Dự đoán vận tốc video cho các hàng được chỉ định bởi video_indices, theo cùng thứ tự. Các hàng điều kiện được trả về ở trạng thái chưa bị che — việc che chúng trước bước của scheduler là trách nhiệm của người gọi.
  • audio_sample (torch.Tensor có shape (batch_size, num_audio_tokens, audio_in_channels), mặc định là None) — Dự đoán vận tốc âm thanh cho các hàng được chỉ định bởi audio_indices, theo cùng thứ tự. forward luôn gán giá trị cho trường này; nó chỉ mặc định là None để đầu ra có thể được xây dựng lại từ một dict thông thường chứa các trường của nó, đây là cách các accelerate offload hooks đưa một BaseOutput trở lại thiết bị đầu vào.

Đầu ra của MiniMaxH3Transformer3DModel.

Update on GitHub