Buckets:
AutoencoderSAME
SAME(Semantically-Aligned Music Encoder) 오토인코더는 Stable Audio 3에서 스테레오 오디오 웨이브폼을 압축된 잠재 변수 시퀀스로 변환하고 이를 재구성하는 데 사용됩니다.
인코더는 SAMETransformerResamplingBlock 모듈을 적층하며, 각 모듈은 고정된 수의 오디오 패치 프레임을 그룹화하여 차등 변환기(differential transformer)를 통해 하나의 학습 가능한 출력 토큰을 생성합니다. 디코더는 이 과정을 역으로 수행하여 각 잠재 토큰을 오디오 프레임 패치로 다시 확장합니다.
소프트 노름 병목(SoftNormBottleneck)은 diffusion 모델의 전후로 latents를 정규화하여 안정적인 학습 동역학을 제공합니다.
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의 기본 채널 수. SAME-S의 경우 128, SAME-L의 경우 256입니다.
encoder_c_mults : 각 TRB 레벨에 대한 채널 배율(TRB당 하나의 항목). SAME-S와 SAME-L 모두 (6,)를 사용합니다. 이는 숨겨진 차원이 encoder_channels × 6인 단일 TRB입니다.
encoder_strides : 각 TRB 레벨에 대한 다운/업 샘플링 스트라이드. SAME-S와 SAME-L 모두 (16,)를 사용합니다 — 스트라이드 16인 TRB 하나.
encoder_transformer_depths : TRB 레벨당 Transformer 레이어 수. SAME-S의 경우 6, SAME-L의 경우 12입니다.
latent_dim : 잠재 공간의 차원. 두 변형 모두 256입니다.
use_differential_attention : True인 경우, 각 TRB transformer 블록 내에서 differential attention을 사용합니다(SAME-S/L의 경우 기본값으로 활성화되어 있습니다).
dim_heads : Attention head 차원. 프로덕션 SAME-S/L의 경우 64입니다.
ff_mult : SwiGLU 피드포워드 확장 계수.
sliding_window : band-mask attention의 sliding-window 반폭(latents 단위). 프로덕션 SAME-S/L은 1을 사용합니다.
encoder_sinusoidal_blocks : 인코더에서 sin FFN 게이팅을 사용하는 후행 트랜스포머 레이어의 TRB별 개수 (SAME-L: (0,)).
decoder_sinusoidal_blocks : 디코더에서 sin FFN 게이팅을 사용하는 후행 트랜스포머 레이어의 TRB별 개수 (SAME-L: (8,)).
sampling_rate : Hz 단위의 오디오 샘플링 주파수 (예: 44100).
Stable Audio 3의 Semantically-Aligned Music Encoder(SAME) 오토인코더(arXiv 2605.17991).
모델은 다음으로 구성됩니다:
- 패치 임베딩 — 스테레오 오디오를 겹치지 않는 패치로 재구성하여 채널을 시간으로 교환합니다(
patch_size ×다운샘플링, 학습 가능한 매개변수 없음). - Encoder TRB 스택 —
∏(encoder_strides)배율로 추가 다운샘플링을 수행하는SAMETransformerResamplingBlock블록들. - Soft-norm bottleneck — running std를 사용하는 학습 가능한 affine 정규화
- Decoder 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) 형태의 잠재 텐서(return_dict가 True인 경우 AutoencoderSAMEOutput에 래핑됨).
스테레오 오디오를 latents로 인코딩합니다.
decode[[diffusers.AutoencoderSAME.decode]]
decode(latents: Tensor, return_dict: bool = True)
매개변수:
latents : (B, latent_dim, T_latent) latent 텐서.
return_dict : True인 경우 AutoencoderSAMEDecoderOutput를 반환합니다.
반환값:
(B, audio_channels, T_latent × downsampling_ratio) 형태의 웨이브폼 텐서(return_dict가 True인 경우 AutoencoderSAMEDecoderOutput에 래핑됨).
latents를 스테레오 오디오로 디코딩합니다.
forward[[diffusers.AutoencoderSAME.forward]]
forward(sample: Tensor, return_dict: bool = True)
매개변수:
sample : (B, audio_channels, T) 웨이브폼 텐서.
return_dict : True인 경우 AutoencoderSAMEDecoderOutput를 반환합니다.
반환값:
재구성된 웨이브폼(sample과 동일한 형태이며, 패딩으로 인해 더 길 수 있음). return_dict가 True인 경우 AutoencoderSAMEDecoderOutput에 래핑됩니다.
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 : Attention 헤드 차원.
use_differential : 차등 주의(differential attention)를 사용할지 여부.
ff_mult : 피드포워드 확장 계수.
sliding_window : latents의 슬라이딩 윈도우 반폭(밴드 반폭은 sliding_window * (stride + 1)입니다).
sinusoidal_blocks : SiLU 대신 sin FFN 게이팅을 사용하는 후행 transformer 레이어의 수.
SAME의 핵심 구성 요소
인코더 모드(스트라이드 S): S개의 연속된 입력 프레임을 하나의 세그먼트로 묶고, 학습 가능한 출력 임베딩 하나를 추가한 뒤, 전체적으로 평탄화된 세그먼트 시퀀스에 대해 D개의 트랜스포머 레이어를 실행하며 출력 임베딩만 유지합니다 → S배 다운샘플링.
디코더 모드(스트라이드 S): 1개의 입력 프레임과 S개의 학습 가능한 출력 임베딩을 그룹화하고, 전체 평탄화 시퀀스에 대해 D개의 트랜스포머 레이어를 실행한 후 S개의 출력 임베딩만 유지하여 S배 업샘플링을 수행합니다.
Attention은 평탄화된 세그먼트 시퀀스에 겹치는 슬라이딩 윈도우 밴드 마스크를 사용합니다. 각 토큰은 양쪽에서 sliding_window * (stride + 1)개의 이웃 토큰에 대해 attention을 수행합니다. 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:
- 10.4 kB
- Xet hash:
- e13f5cd7db33d5fcf0e5a10d936f215008b3109cd930ae4405ab14f612732773
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.