Buckets:

hf-doc-build/doc / diffusers /main /ru /api /models /autoencoder_same.md
mishig's picture
|
download
raw
13.3 kB
# AutoencoderSAME
Автоэнкодер **SAME** (Semantically-Aligned Music Encoder) используется в [Stable Audio 3](https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models) для сжатия стереоаудио-волновых форм в компактную латентную последовательность и их последующей реконструкции.
Кодировщик складывает модули `SAMETransformerResamplingBlock`, каждый из которых группирует фиксированное количество кадров аудиопатчей и формирует один обучаемый выходной токен с помощью дифференциального трансформера. Декодировщик обращает этот процесс, расширяя каждый латентный токен обратно в патч аудиоканов.
Мягкое нормализующее узкое место (`SoftNormBottleneck`) нормализует латенты до и после диффузионной модели, обеспечивая стабильную динамику обучения.
## AutoencoderSAME[[diffusers.AutoencoderSAME]]
#### diffusers.AutoencoderSAME[[diffusers.AutoencoderSAME]]
```python
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)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L608)
**Параметры:**
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](https://arxiv.org/abs/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,)`.
```python
# 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]]
```python
encode(sample: Tensor, return_dict: bool = True)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L733)
**Параметры:**
sample : тензор волновой формы `(B, audio_channels, T)`.
return_dict : Если `True`, возвращает `AutoencoderSAMEOutput`.
**Возвращает:**
Латентный тензор формы `(B, latent_dim, T // downsampling_ratio)` (обёрнут в `AutoencoderSAMEOutput`, если *return_dict* равно `True`).
Кодирование стереозвука в латенты.
#### decode[[diffusers.AutoencoderSAME.decode]]
```python
decode(latents: Tensor, return_dict: bool = True)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L758)
**Параметры:**
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]]
```python
forward(sample: Tensor, return_dict: bool = True)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L783)
**Параметры:**
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]]
```python
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)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L294)
**Параметры:**
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]]
```python
diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput(latents: Tensor)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L52)
Результат работы [AutoencoderSAME.encode()](/docs/diffusers/main/ru/api/models/autoencoder_same#diffusers.AutoencoderSAME.encode).
## AutoencoderSAMEDecoderOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput]]
#### diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput]]
```python
diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput(sample: Tensor)
```
[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_same.py#L59)
Результат работы [AutoencoderSAME.decode()](/docs/diffusers/main/ru/api/models/autoencoder_same#diffusers.AutoencoderSAME.decode).

Xet Storage Details

Size:
13.3 kB
·
Xet hash:
952ae707052349364d58508a07e13ad027414c43310522256d97ca59bac7d3d6

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