Diffusers documentation

AutoencoderSAME

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

AutoencoderSAME

Автоэнкодер SAME (Semantically-Aligned Music Encoder) используется в Stable Audio 3 для сжатия стереоаудио-волновых форм в компактную латентную последовательность и их последующей реконструкции.

Кодер складывает модули SAMETransformerResamplingBlock, каждый из которых группирует фиксированное количество кадров аудиопатчей и формирует один обучаемый выходной токен с помощью дифференциального трансформера. Декодер обращает этот процесс, расширяя каждый латентный токен обратно в патч аудиоканов.

Мягкое нормализующее узкое место (SoftNormBottleneck) нормализует латенты до и после диффузионной модели, обеспечивая стабильную динамику обучения.

AutoencoderSAME

класс diffusers.AutoencoderSAME

< >

( audio_channels: int = 2patch_size: int = 256encoder_channels: int = 128encoder_c_mults: typing.List[int] = (6,)encoder_strides: typing.List[int] = (16,)encoder_transformer_depths: typing.List[int] = (6,)latent_dim: int = 256use_differential_attention: bool = Truedim_heads: int = 64ff_mult: int = 3sliding_window: int = 1encoder_sinusoidal_blocks: typing.List[int] = (0,)decoder_sinusoidal_blocks: typing.List[int] = (0,)sampling_rate: int = 44100 )

Параметры

  • audio_channels — Количество аудиоканалов (2 для стерео).
  • patch_size — Размер неперекрывающихся патчей, применяемый перед кодировщиком TRB (и восстанавливаемый после декодера TRB). Вносит вклад patch_size × в общее соотношение downsampling. Значение для продакшена: 256.
  • encoder_channels — Базовое количество каналов для TRB. 128 для SAME-S, 256 для SAME-L.
  • encoder_c_mults — Множитель каналов для каждого уровня TRB (одна запись на TRB). И SAME-S, и SAME-L используют (6,) — один TRB, размерность скрытого слоя которого равна encoder_channels × 6.
  • encoder_strides — шаг даун-/ап-сэмплинга для каждого уровня TRB. Оба SAME-S и SAME-L используют (16,) — один TRB с шагом 16.
  • encoder_transformer_depths — слои Transformer на каждом уровне TRB. 6 для SAME-S, 12 для SAME-L.
  • latent_dim — Размерность латентного пространства. 256 для обоих вариантов.
  • use_differential_attention — Если True, использовать differential attention внутри каждого блока TRB-трансформера (по умолчанию включено для SAME-S/L).
  • dim_heads — Размерность головы внимания. 64 для SAME-S/L в продакшене.
  • ff_mult — коэффициент расширения SwiGLU для полносвязного слоя.
  • sliding_window — Полуширина скользящего окна (в латентах) для внимания с полосной маской. В производственных системах SAME-S/L используется значение 1.
  • encoder_sinusoidal_blocks — Количество конечных трансформерных слоёв на каждый TRB, использующих sin-гейтинг FFN в энкодере (SAME-L: (0,)).
  • decoder_sinusoidal_blocks — Количество конечных трансформерных слоёв в каждом TRB, использующих sin-гейтинг FFN в декодере (SAME-L: (8,)).
  • sampling_rate — Частота дискретизации аудио в Гц (например, 44100).

Автоэнкодер Semantically-Aligned Music Encoder (SAME) из Stable Audio 3 (arXiv 2605.17991).

Модель состоит из:

  • Встраивание патчей — преобразует стереоаудио в неперекрывающиеся патчи, жертвуя временным разрешением ради каналов (patch_size × даунсемплинг, без обучаемых параметров).
  • Стек TRB энкодера — блоки SAMETransformerResamplingBlock, которые дополнительно уменьшают размерность в ∏(encoder_strides) раз.
  • Soft-norm bottleneck — обучаемая аффинная нормализация с текущим стандартным отклонением.
  • Стек декодера TRB — зеркальное отражение энкодера в обратном порядке.
  • Unpatch — возвращает каналы обратно в размерность времени.

Общее отношение даунсемплинга: patch_size × ∏(encoder_strides).

Гиперпараметры по умолчанию соответствуют чекпоинту SAME-S (stabilityai/SAME-S). Чтобы загрузить SAME-L (stabilityai/SAME-L, используется в SA3 Medium), передайте encoder_channels=256, encoder_transformer_depths=(12,).

# SAME-S (108 M params, used by SA3 small models) model = AutoencoderSAME() # default values

# SAME-L (852 M params, used by SA3 Medium) model = AutoencoderSAME(encoder_channels=256,
encoder_transformer_depths=(12,))

encode

< >

( sample: Tensorreturn_dict: bool = True )

Параметры

  • sample — тензор формы (B, audio_channels, T).
  • return_dict — Если True, возвращает AutoencoderSAMEOutput.

Кодирование стереозвука в латенты.

decode

< >

( latents: Tensorreturn_dict: bool = True )

Параметры

  • latents — тензор латентов (B, latent_dim, T_latent).
  • return_dict — Если True, возвращает AutoencoderSAMEDecoderOutput.

Декодировать латенты обратно в стереоаудио.

forward

< >

( sample: Tensorreturn_dict: bool = True )

Параметры

  • sample — тензор формы (B, audio_channels, T).
  • return_dict — Если True, возвращает AutoencoderSAMEDecoderOutput.

Кодируйте и сразу декодируйте sample (восстановление).

SAMETransformerResamplingBlock

класс diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock

< >

( in_channels: intout_channels: intstride: intmode: str = 'encoder'transformer_depth: int = 3dim_heads: int = 128use_differential: bool = Trueff_mult: int = 3sliding_window: int = 1sinusoidal_blocks: int = 0 )

Параметры

  • in_channels — Количество входных каналов.
  • out_channels — Количество выходных каналов.
  • stride — коэффициент понижающего/повышающего дискретизирования.
  • mode — "encoder" или "decoder".
  • transformer_depth — количество слоёв TransformerBlock.
  • dim_heads — размерность головы внимания.
  • use_differential — Использовать ли дифференциальное внимание.
  • ff_mult — коэффициент расширения feed-forward.
  • sliding_window — Полуширина скользящего окна в латентах (полуширина полосы составляет sliding_window * (stride + 1)).
  • sinusoidal_blocks — количество конечных трансформерных слоёв, использующих sin FFN-гейтинг вместо SiLU.

Базовый строительный блок SAME.

Режим кодировщика (шаг S): Группирует S последовательных входных кадров в один сегмент, добавляет единственное обучаемое выходное вложение, затем прогоняет D слои трансформера по всей развёрнутой последовательности сегмента и сохраняет только выходное вложение → уменьшение размера в S раз.

Режим декодера (шаг S): Группирует 1 входной кадр с S обучаемыми выходными эмбеддингами, прогоняет D слои трансформера по всей развёрнутой последовательности, затем сохраняет S выходных эмбеддингов → апсемплинг с коэффициентом S.

Attention использует перекрывающуюся скользящую оконную маску по сглаженной последовательности сегментов: каждый токен обращается к sliding_window * (stride + 1) соседям с каждой стороны. RoPE вычисляется по полной длине последовательности. Это точно соответствует эталонной реализации (один неперекарывающийся чанк совпадал бы только для одного сегмента).

AutoencoderSAMEOutput

класс diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput

< >

( latents: Tensor )

Результат работы AutoencoderSAME.encode().

AutoencoderSAMEDecoderOutput

класс diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput

< >

( sample: Tensor )

Результат работы AutoencoderSAME.decode().

Update on GitHub