Diffusers documentation
StableAudio3DiTModel
StableAudio3DiTModel
Diffusion Transformer (DiT) для предсказания скорости rectified-flow, предназначенный для генерации аудио и используемый в Stable Audio 3.
Каждый StableAudio3DiTBlock выполняет:
- Self-attention — дифференциальное многоголовое внимание с вращательными позиционными эмбеддингами (RoPE).
- Кросс-внимание — обращается к последовательности токенов из текстового энкодера T5Gemma.
- Feed-forward — проекция SwiGLU.
Модель обусловлена timestep (экспоненциальные признаки Фурье → линейная проекция) и глобальным вектором обусловливания (эмбеддинг длительности из StableAudio3DurationEmbedder).
StableAudio3DiTModel
класс diffusers.StableAudio3DiTModel
< source >( io_channels: int = 256patch_size: int = 1embed_dim: int = 1536depth: int = 24num_heads: int = 24cond_token_dim: int = 768global_cond_dim: int = 768local_add_cond_dim: int = 257timestep_features_dim: int = 256ff_mult: float = 4.0num_memory_tokens: int = 64use_differential_attention: bool = True )
Параметры
- io_channels (
int, по умолчанию 256) — Количество латентных каналов. - patch_size (
int, по умолчанию 1) — размер временного патча, применяемого перед трансформером. - embed_dim (
int, по умолчанию 1536) — скрытое измерение Transformer. - depth (
int, по умолчанию 24) — количество слоёвStableAudio3DiTBlock. - num_heads (
int, по умолчанию 24) — Количество головок внимания. - cond_token_dim (
int, по умолчанию 768) — Размерность токенов контекста для кросс-внимания. - global_cond_dim (
int, по умолчанию 768) — Размерность глобального эмбеддинга длительности. - local_add_cond_dim (
int, по умолчанию 257) — Количество каналов локально-аддитивного (inpaint) тензора. - timestep_features_dim (
int, по умолчанию 256) — Выходная размерность признаков временных шагов Фурье. - ff_mult (
float, по умолчанию 4.0) — коэффициент расширения SwiGLU для полносвязного слоя. - num_memory_tokens (
int, по умолчанию 64) — Количество обучаемых токенов памяти. - use_differential_attention (
bool, по умолчаниюTrue) — Включает дифференциальное само- и кросс-внимание.
Базовая архитектура Diffusion Transformer (DiT) в Stable Audio 3.
Модель принимает пакет зашумленных аудиолатентов, скалярный временной шаг, контекст кросс-внимания (проецированные токены текста и длительности) и глобальное эмбеддинг длительности, и предсказывает поле скоростей (цель rectified-flow).
Условие:
- Контекст кросс-внимания (
encoder_hidden_states) проецируется с помощьюto_cond_embed. - Глобальное эмбеддинг длительности (
global_hidden_states) проецируется черезto_global_embed, суммируется с эмбеддингом временного шага, а затем расширяется черезglobal_cond_embedderв модуляцию AdaLN для каждого блока. local_add_cond(inpainting) проецируется по блокам с помощьюto_local_embed.
num_memory_tokens обучаемых токенов добавляются в начало аудиопоследовательности внутри трансформера и удаляются перед выходной проекцией.
forward
< source >( hidden_states: Tensortimestep: Tensorencoder_hidden_states: Tensorglobal_hidden_states: Tensorencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelocal_add_cond: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → StableAudio3DiTModelOutput or tuple
Параметры
- hidden_states (
torch.Tensor) — Шумные латентные аудио(batch, io_channels, T). - timestep (
torch.Tensor) — Шаг диффузии(batch,)в диапазоне[0, 1]. - encoder_hidden_states (
torch.Tensor) — Контекст кросс-внимания(batch, T_ctx, cond_token_dim). - global_hidden_states (
torch.Tensor) — Глобальное эмбедирование длительности(batch, global_cond_dim). - encoder_attention_mask (
torch.Tensor, необязательный) — Bool-маска(batch, T_ctx),True= валидный. - local_add_cond (
torch.Tensor, optional) — Локально-аддитивное (inpaint) условие(batch, local_add_cond_dim, T). - return_dict (
bool, по умолчаниюTrue) — возвращать лиStableAudio3DiTModelOutput.
Возвращает
StableAudio3DiTModelOutput или tuple
предсказанное поле скоростей, с той же формой, что и hidden_states.
StableAudio3DiTBlock
класс diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock
< source >( dim: intcontext_dim: intdim_heads: int = 64use_differential: bool = Trueff_mult: float = 4.0local_add_cond_dim: int = 257 )
Один блок трансформера SA3 DiT.
Порядок операций:
- Само-внимание с модуляцией AdaLN (частичный RoPE, нормализация RMS для QK)
- Кросс-внимание к контексту текста/длительности (обычный RMS pre-norm)
- SwiGLU-функция с модуляцией AdaLN
Модуляция AdaLN представляет собой to_scale_shift_gate + global_modulation, разбитую на шесть частей (scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff). Каждая ветвь с гейтом масштабируется множителем sigmoid(1 - gate). Кросс-внимание не модулируется через AdaLN, что соответствует эталонной реализации (cross_attend_norm — это обычный RMS-нормализатор).
Если задан local_seq (inpainting), он проецируется по блокам с помощью to_local_embed и добавляется к позициям аудио в остаточном потоке после cross-attention (и перед feed-forward), что соответствует эталонной реализации.
StableAudio3DiTModelOutput
класс diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput
< source >( sample: Tensor )
Вывод StableAudio3DiTModel.