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

Модель Diffusion Transformer для совместной генерации видео и аудио, представленная в MiniMax-H3 от MiniMax.

MiniMax-H3 выполняет пропуск через единый стек блоков по одной упакованной одномерной последовательности, которая одновременно содержит текстовые условия, строки изображения-условия и видео, строки аудио и целевые строки видео. Вниманием является полное само-внимание по этой последовательности, поэтому кросс-внимания и отдельных весов блоков для каждой модальности нет. Поведение, специфичное для модальности, обеспечивается только двумя входными проекциями патчей, тегом модальности для каждой строки, который выбирает параметры модуляции AdaLN, и двумя выходными головами.

Создание упакованной раскладки — задача вызывающего кода, поэтому сигнатура forward принимает раскладку отдельно от латентов: сетку позиций (t, h, w), теги модальности для каждой строки, индексы временных шагов для каждой строки и три тензора индексов, указывающие на строки видео, аудио и текста. MiniMaxH3Blocks и MiniMaxH3Ref2VABlocks формируют всё это.

Раскладка, содержащая строки отступов (тег -1), требует бэкенда маскированного внимания, поскольку эти строки сохраняются в собственном документе внимания с помощью булевой маски; последовательность без отступов не требует маски и сохраняет доступность всех бэкендов.

Один репозиторий содержит как выпущенные, так и контрольные точки, поэтому подпапка определяет задачу: transformer/ для задач с текстом и ключевыми кадрами, transformer_ref/ для задачи 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"

Чекпоинт использует смешанную точность: два входных проекционных слоя патчей, MLP временных шагов и два выходных слоя имеют тип float32, а стек блоков — bfloat16. from_pretrained сохраняет эту структуру благодаря _keep_in_fp32_modules, поэтому передавайте dtype=torch.bfloat16 и позвольте функции разместить модули float32, а не приводить модель к типу bfloat16 с помощью .to(torch.bfloat16) после загрузки.

MiniMaxH3Transformer3DModel

класс 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 )

Параметры

  • num_attention_heads (int, по умолчанию 56) — Количество голов, используемых для многоголовного внимания.
  • attention_head_dim (int, по умолчанию 128) — Количество каналов в каждой голове внимания. Обратите внимание, что num_attention_heads * attention_head_dim больше, чем hidden_size в MiniMax-H3.
  • hidden_size (int, по умолчанию 5376) — Количество каналов упакованной последовательности (остаточного потока).
  • num_layers (int, по умолчанию 50) — Количество блоков трансформера.
  • num_refiner_layers (int, по умолчанию 2) — Количество блоков уточнения токенов, применяемых к проецированному текстовому потоку.
  • ffn_dim (int, по умолчанию 14336) — Внутреннее измерение полносвязных слоёв SwiGLU.
  • in_channels (int, по умолчанию 24) — Количество каналов латентов видео.
  • audio_in_channels (int, по умолчанию 32) — Количество каналов аудиовыходных латентов.
  • patch_size (tuple[int, int, int], по умолчанию (1, 2, 2)) — Патч (t, h, w), используемый для упаковки латентов видео в строки.
  • text_dim (int, по умолчанию 5120) — Количество каналов текстового условия, создаваемого текстовым энкодером.
  • freq_dim (int, по умолчанию 256) — Размерность синусоидального эмбеддинга временных шагов. Временные шаги используются без масштабирования в диапазоне [0, 1].
  • time_embed_hidden_dim (int, по умолчанию 5376) — Внутреннее измерение MLP для временных шагов.
  • time_embed_dim (int, по умолчанию 2688) — Выходное измерение MLP для временного шага, то есть вход для каждого проекционного слоя AdaLN.
  • rope_freq_dim (int, по умолчанию 16) — Количество ротационных частот на ось. Оси (t, h, w) используют общий буфер inv_freq этой длины, а 2 * 3 * rope_freq_dim из каналов attention_head_dim подвергаются ротации.
  • rope_theta (float, по умолчанию 10000.0) — Основание расписания вращательных частот, по которому вычисляется буфер rope.inv_freq.
  • norm_eps (float, по умолчанию 1e-5) — Epsilon для нормализации перед attention и перед feed-forward.
  • qk_norm_eps (float, по умолчанию 1e-5) — Epsilon для норм запросов/ключей по каждой голове.
  • final_norm_eps (float, по умолчанию 1e-5) — Epsilon для нормализации вывода токенового рефинера и для norm_out.

Модель Transformer для совместной генерации видео и аудио, представленная в MiniMax-H3.

MiniMax-H3 выполняет пропуск через единый стек блоков по одной упакованной одномерной последовательности, содержащей текстовое условие, строки изображения/видео для условий, строки аудио и целевые строки видео. Вниманием является полное само-внимание по этой последовательности; кросс-внимания и отдельных весов блоков для каждой модальности нет. Поведение, специфичное для модальности, определяется только двумя входными проекциями патчей, тегом модальности AdaLN для каждой строки и двумя выходными головами.

Вызывающая сторона отвечает за формирование упакованной раскладки: патчификацию латентов видео, упорядочивание строк и построение сетки позиций (t, h, w), модальных тегов для каждой строки и индексов временных шагов для каждой строки. Последовательность не содержит заполнителей — эталонная реализация дополняет её до кратного 64 для FlashAttention и отрезает хвост с помощью cu_seqlens = [0, used, S], что в данном порту не требуется, — поэтому внимание выполняется без маски по одному документу, и остаются доступными все бэкенды внимания.

Ось батча является осью чистой репликации: структурные аргументы (timestep, timestep_indices, token_tags, position_ids и три тензора индексов) описывают один упакованный макет, общий для всех элементов батча, при этом каждый элемент представляет собой один документ внимания.

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

Параметры

  • hidden_states (torch.Tensor формы (batch_size, num_video_tokens, in_channels * prod(patch_size))) — Строки латентных представлений видео, разбитые на патчи — строки условий и целевые строки — в том порядке, в котором они появляются в упакованной последовательности, то есть в соответствии с video_indices.
  • audio_hidden_states (torch.Tensor формы (batch_size, num_audio_tokens, audio_in_channels)) — Латентные строки аудио, упорядоченные в соответствии с audio_indices.
  • encoder_hidden_states (torch.Tensor формы (batch_size, num_text_tokens, text_dim)) — Текстовое условие, упорядоченное в соответствии с text_indices.
  • timestep (torch.Tensor формы (num_timesteps,)) — Значения отдельных шагов времени, присутствующие в упакованной последовательности, в диапазоне [0, 1] и без масштабирования. Один прямой проход обрабатывает строки с разными уровнями шума (целевое видео, целевой звук, строки условий).
  • timestep_indices (torch.Tensor формы (seq_len,)) — Для каждой строки упакованной последовательности — индекс её временного шага в timestep.
  • token_tags (torch.Tensor формы (seq_len,)) — Для каждой строки упакованной последовательности её модальность: 0 видео, 1 текст, 2 аудио.
  • position_ids (torch.Tensor формы (seq_len, 3)) — Ротационные координаты (t, h, w) каждой строки упакованной последовательности.
  • video_indices (torch.Tensor формы (num_video_tokens,)) — Позиции строк видео в упакованной последовательности.
  • audio_indices (torch.Tensor формы (num_audio_tokens,)) — Позиции строк аудио в упакованной последовательности.
  • text_indices (torch.Tensor формы (num_text_tokens,)) — Позиции строк текста в упакованной последовательности.
  • attention_kwargs (dict, необязательный) — Словарь kwargs, который, если указан, может содержать запись scale, применяемую к слоям LoRA.
  • return_dict (bool, по умолчанию True) — Определяет, возвращать ли MiniMaxH3TransformerOutput вместо обычного кортежа.

Возвращает

MiniMaxH3TransformerOutput или tuple

Скорость видео формы (batch_size, num_video_tokens, in_channels * prod(patch_size)) и скорость аудио формы (batch_size, num_audio_tokens, audio_in_channels), в порядке строк video_indices и audio_indices.

MiniMaxH3TransformerOutput

класс diffusers.models.transformers.transformer_minimax_h3.MiniMaxH3TransformerOutput

< >

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

Параметры

  • sample (torch.Tensor формы (batch_size, num_video_tokens, in_channels * prod(patch_size))) — Прогноз скорости видео для строк, указанных в video_indices, в том же порядке. Строки условий возвращаются без маски — их маскирование перед шагом планировщика является обязанностью вызывающего кода.
  • audio_sample (torch.Tensor формы (batch_size, num_audio_tokens, audio_in_channels), по умолчанию None) — Прогноз скорости аудио для строк, указанных в audio_indices, в том же порядке. forward всегда заполняет это поле; оно принимает значение None по умолчанию только для того, чтобы выходной объект можно было восстановить из обычного словаря его полей — именно так хуки offload в accelerate возвращают BaseOutput на исходное устройство.

Вывод MiniMaxH3Transformer3DModel.

Update on GitHub