Diffusers documentation

MiniMaxH3ImageTransformer2DModel

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

MiniMaxH3ImageTransformer2DModel

Модель Diffusion Transformer для генерации и редактирования изображений, представленная в MiniMax-H3-Image от MiniMax.

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

Чекпоинт дистиллирован до шести шагов сэмплирования с помощью Parallel Decoding Distillation (PDD), который сохраняет один выходной слой на каждый шаг. Поэтому forward принимает pdd_step_index, указывающий текущий шаг, и выполняет проекцию с помощью выходного слоя этого шага.

import torch
from diffusers import MiniMaxH3ImageTransformer2DModel

transformer = MiniMaxH3ImageTransformer2DModel.from_pretrained(
    "MiniMaxAI/MiniMax-H3-Image", subfolder="transformer_diffusers", 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) после загрузки.

MiniMaxH3ImageTransformer2DModel

класс diffusers.MiniMaxH3ImageTransformer2DModel

< >

( num_attention_heads: int = 56attention_head_dim: int = 128hidden_size: int = 5376num_layers: int = 50num_refiner_layers: int = 2ffn_dim: int = 14336in_channels: int = 24patch_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-05num_pdd_heads: int = 6 )

Параметры

  • num_attention_heads (int, по умолчанию 56) — Количество голов, используемых для многоголовного внимания.
  • attention_head_dim (int, по умолчанию 128) — Количество каналов в каждой голове внимания. Обратите внимание, что num_attention_heads * attention_head_dim больше, чем hidden_size.
  • hidden_size (int, по умолчанию 5376) — Количество каналов упакованной последовательности (остаточного потока).
  • num_layers (int, по умолчанию 50) — Количество блоков трансформера.
  • num_refiner_layers (int, по умолчанию 2) — Количество блоков уточнения токенов, применяемых к проецированному текстовому потоку.
  • ffn_dim (int, по умолчанию 14336) — Внутреннее измерение полносвязных слоёв SwiGLU.
  • in_channels (int, по умолчанию 24) — Количество каналов в латентном представлении изображения.
  • 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.
  • num_pdd_heads (int, по умолчанию 6) — Количество шагов сэмплирования, до которых был дистиллирован чекпоинт, каждый из которых имеет собственный выходной слой.

Модель Transformer для генерации и редактирования изображений, представленная в MiniMax-H3-Image.

Это трансформер MiniMax-H3 без аудиопотока: единый стек блоков обрабатывает одну упакованную одномерную последовательность, содержащую текстовое условие, строки референсных изображений и строки генерируемого изображения. Внимательность — это полное само-внимательность по этой последовательности; кросс-внимательности нет. Чекпоинт дистиллирован до фиксированного числа шагов сэмплирования с помощью Parallel Decoding Distillation (PDD), который сохраняет один выходной слой на каждый шаг, поэтому forward принимает индекс текущего шага.

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

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

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: Tensortimestep_indices: Tensortoken_tags: Tensorposition_ids: Tensorimage_indices: Tensortext_indices: Tensorpdd_step_index: intreturn_dict: bool = True ) → Transformer2DModelOutput or tuple

Параметры

  • hidden_states (torch.Tensor формы (batch_size, num_image_tokens, in_channels * prod(patch_size))) — Строки латентных представлений, разбитые на патчи — строки эталонных изображений и строки сгенерированного изображения — в том порядке, в котором они появляются в упакованной последовательности, то есть в соответствии с image_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 текст.
  • position_ids (torch.Tensor формы (seq_len, 3)) — Ротационные координаты (t, h, w) каждой строки упакованной последовательности.
  • image_indices (torch.Tensor формы (num_image_tokens,)) — Позиции строк изображений в упакованной последовательности.
  • text_indices (torch.Tensor формы (num_text_tokens,)) — Позиции строк текста в упакованной последовательности.
  • pdd_step_index (int) — Шаг сэмплирования, который выбирает выходную голову.
  • return_dict (bool, по умолчанию True) — Определяет, следует ли возвращать Transformer2DModelOutput вместо обычного кортежа.

Возвращает

Transformer2DModelOutput или tuple

Скорость каждой строки изображения, с формой (batch_size, num_image_tokens, in_channels * prod(patch_size)), в порядке строк image_indices.

Update on GitHub