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.42.1).
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)은 diffusion 모델의 전후로 latents를 정규화하여 안정적인 학습 동역학을 제공합니다.

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 ×만큼 기여합니다. 프로덕션 값: 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 — 밴드 마스크 어텐션의 슬라이딩 윈도우 반폭(잠재 변수 단위). 프로덕션 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

< >

( sample: Tensorreturn_dict: bool = True )

매개변수

  • sample — (B, audio_channels, T) 웨이브폼 텐서.
  • return_dict — True인 경우 AutoencoderSAMEOutput를 반환합니다.

스테레오 오디오를 latents로 인코딩합니다.

decode

< >

( latents: Tensorreturn_dict: bool = True )

매개변수

  • latents — (B, latent_dim, T_latent) latent 텐서.
  • return_dict — True인 경우 AutoencoderSAMEDecoderOutput를 반환합니다.

latents를 스테레오 오디오로 디코딩합니다.

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 — 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

< >

( latents: Tensor )

AutoencoderSAME.encode()의 출력입니다.

AutoencoderSAMEDecoderOutput

class diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput

< >

( sample: Tensor )

AutoencoderSAME.decode()의 출력입니다.

Update on GitHub