Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /ru /api /models /autoencoder_same.md
mishig's picture
|
download
raw
13.3 kB

AutoencoderSAME

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

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

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

AutoencoderSAME[[diffusers.AutoencoderSAME]]

diffusers.AutoencoderSAME[[diffusers.AutoencoderSAME]]

diffusers.AutoencoderSAME(audio_channels: int = 2, patch_size: int = 256, encoder_channels: int = 128, encoder_c_mults: typing.List[int] = (6,), encoder_strides: typing.List[int] = (16,), encoder_transformer_depths: typing.List[int] = (6,), latent_dim: int = 256, use_differential_attention: bool = True, dim_heads: int = 64, ff_mult: int = 3, sliding_window: int = 1, encoder_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 × в общее соотношение даунсемплинга. Значение для продакшена: 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, использовать дифференциальное внимание внутри каждого блока трансформера TRB (по умолчанию включено для SAME-S/L).

dim_heads : Размер измерения головы внимания. 64 для SAME-S/L в продакшене.

ff_mult : коэффициент расширения SwiGLU для полносвязного слоя.

sliding_window : Полуполоса (в латентах) для внимания с полосным маскированием. В производственных системах SAME-S/L используется значение 1.

encoder_sinusoidal_blocks : Количество последовательных трансформерных слоёв в кодере, использующих sin FFN-гейтинг на каждый TRB (SAME-L: (0,)).

decoder_sinusoidal_blocks : Количество последовательных трансформерных слоёв в декодере, использующих sin FFN-гейтинг, для каждого TRB (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[[diffusers.AutoencoderSAME.encode]]

encode(sample: Tensor, return_dict: bool = True)

Источник

Параметры:

sample : тензор волновой формы (B, audio_channels, T).

return_dict : Если True, возвращает AutoencoderSAMEOutput.

Возвращает:

Латентный тензор формы (B, latent_dim, T // downsampling_ratio) (обёрнут в AutoencoderSAMEOutput, если return_dict равно True).

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

decode[[diffusers.AutoencoderSAME.decode]]

decode(latents: Tensor, return_dict: bool = True)

Источник

Параметры:

latents : тензор латентных представлений (B, latent_dim, T_latent).

return_dict : Если True, возвращает AutoencoderSAMEDecoderOutput.

Возвращает:

Тензор формы (B, audio_channels, T_latent × downsampling_ratio) (обёрнут в AutoencoderSAMEDecoderOutput, если return_dict равно True).

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

forward[[diffusers.AutoencoderSAME.forward]]

forward(sample: Tensor, return_dict: bool = True)

Источник

Параметры:

sample : тензор волновой формы (B, audio_channels, T).

return_dict : Если True, возвращает AutoencoderSAMEDecoderOutput.

Возвращает:

Восстановленная волна (та же форма, что и у sample, возможно, длиннее из-за дополнения), обернутая в AutoencoderSAMEDecoderOutput, если return_dict равно True.

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

SAMETransformerResamplingBlock[[diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock]]

diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock[[diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock]]

diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock(in_channels: int, out_channels: int, stride: int, mode: str = 'encoder', transformer_depth: int = 3, dim_heads: int = 128, use_differential: bool = True, ff_mult: int = 3, sliding_window: int = 1, sinusoidal_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]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput(latents: Tensor)

Источник

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

AutoencoderSAMEDecoderOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput(sample: Tensor)

Источник

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

Xet Storage Details

Size:
13.3 kB
·
Xet hash:
807f7745140ed55bda5d1a5b4af2d3e5717cfd63738fd20a675340748a33420b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.