Diffusers documentation

PixArtTransformer2DModel

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

PixArtTransformer2DModel

PixArt-Alpha와 PixArt-Sigma의 이미지형 데이터용 Transformer 모델입니다.

PixArtTransformer2DModel

클래스 diffusers.PixArtTransformer2DModel

< >

( num_attention_heads: int = 16attention_head_dim: int = 72in_channels: int = 4out_channels: int | None = 8num_layers: int = 28dropout: float = 0.0norm_num_groups: int = 32cross_attention_dim: int | None = 1152attention_bias: bool = Truesample_size: int = 128patch_size: int = 2activation_fn: str = 'gelu-approximate'num_embeds_ada_norm: int | None = 1000upcast_attention: bool = Falsenorm_type: str = 'ada_norm_single'norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = Noneuse_additional_conditions: bool | None = Nonecaption_channels: int | None = Noneattention_type: str | None = 'default' )

매개변수

  • num_attention_heads (int, optional, 기본값 16) — 멀티헤드 어텐션에 사용할 헤드 수입니다.
  • attention_head_dim (int, optional, 기본값 72) — 각 헤드당 채널 수.
  • in_channels (int, 기본값 4) — 입력의 채널 수입니다.
  • out_channels (int, optional) — 출력의 채널 수입니다. 입력과 출력의 채널 수가 다른 경우 이 매개변수를 지정하세요.
  • num_layers (int, optional, 기본값 28) — 사용할 Transformer 블록의 레이어 수입니다.
  • dropout (float, optional, 기본값 0.0) — Transformer 블록 내에서 사용할 dropout 확률입니다.
  • norm_num_groups (int, optional, 기본값 32) — Transformer 블록 내에서 그룹 정규화에 사용할 그룹 수.
  • cross_attention_dim (int, optional) — 크로스 어텐션 레이어의 차원으로, 일반적으로 인코더의 히든 차원과 일치합니다.
  • attention_bias (bool, optional, 기본값 True) — Transformer 블록의 attention에 bias 매개변수를 포함할지 설정합니다.
  • sample_size (int, 기본값 128) — 잠재 이미지(latent images)의 너비입니다. 이 매개변수는 학습 중에 고정됩니다.
  • patch_size (int, 기본값 2) — 모델이 처리하는 패치의 크기입니다. 순차적이지 않은 데이터를 다루는 아키텍처에 관련이 있습니다.
  • activation_fn (str, optional, 기본값 “gelu-approximate”) — Transformer 블록 내 피드포워드 네트워크에 사용할 활성화 함수.
  • num_embeds_ada_norm (int, optional, 기본값 1000) — AdaLayerNorm에 사용되는 임베딩의 수입니다. 학습 중에 고정되며 추론 시 최대 디노이징 스텝에 영향을 줍니다.
  • upcast_attention (bool, optional, 기본값 False) — true인 경우, 성능 향상을 위해 attention 메커니즘의 차원을 upcast합니다.
  • norm_type (str, optional, 기본값 “ada_norm_zero”) — 사용할 정규화 유형을 지정하며, ‘ada_norm_zero’를 사용할 수 있습니다.
  • norm_elementwise_affine (bool, optional, 기본값 False) — true인 경우, 정규화 레이어에서 요소별 affine 매개변수를 활성화합니다.
  • norm_eps (float, optional, 기본값 1e-6) — 0으로 나누는 것을 방지하기 위해 정규화 레이어의 분모에 추가되는 작은 상수입니다.
  • interpolation_scale (int, optional) — 위치 임베딩을 보간할 때 사용할 스케일 팩터.
  • use_additional_conditions (bool, optional) — 추가 조건을 입력으로 사용할 경우.
  • attention_type (str, optional, 기본값 “default”) — 사용할 attention 메커니즘의 종류.
  • caption_channels (int, optional, 기본값 None) — 캡션 임베딩을 투영하는 데 사용할 채널 수.
  • use_linear_projection (bool, optional, 기본값 False) — 비추천되는 인자입니다. 향후 버전에서 제거될 예정입니다.
  • num_vector_embeds (bool, optional, 기본값 False) — 비추천되는 인자입니다. 향후 버전에서 제거될 예정입니다.

PixArt 모델 계열(https://huggingface.co/papers/2310.00426, https://huggingface.co/papers/2403.04692)에서 소개된 2D Transformer 모델입니다.

forward

< >

( hidden_states: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Nonetimestep: typing.Optional[torch.LongTensor] = Noneadded_cond_kwargs: dict = Nonecross_attention_kwargs: dict = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

매개변수

  • hidden_states (torch.FloatTensor, shape (batch size, channel, height, width)) — 입력 hidden_states.
  • encoder_hidden_states (torch.FloatTensor, shape (batch size, sequence len, embed dims), 선택 사항) — 크로스 어텐션 레이어에 사용되는 조건부 임베딩입니다. 제공되지 않으면 크로스 어텐션은 기본적으로 셀프 어텐션으로 동작합니다.
  • timestep (torch.LongTensor, 선택 사항) — 디노이징 단계를 나타내는 데 사용됩니다. AdaLayerNorm에서 임베딩으로 적용될 선택적 timestep입니다.
  • added_cond_kwargs — (dict[str, Any], 선택 사항): 입력으로 사용할 추가 조건.
  • cross_attention_kwargs ( dict[str, Any], 선택) — 지정된 경우 diffusers.models.attention_processor의 self.processor에서 정의된 AttentionProcessor로 전달되는 kwargs 사전입니다.
  • attention_mask ( torch.Tensor, 선택 사항) — encoder_hidden_states에 (batch, key_tokens) 모양의 어텐션 마스크가 적용됩니다. 1인 경우 마스크가 유지되고, 0인 경우 폐기됩니다. 마스크는 바이어스로 변환되어 “폐기” 토큰에 해당하는 어텐션 점수에 큰 음의 값을 더합니다.
  • encoder_attention_mask ( torch.Tensor, 선택 사항) — 에 적용되는 크로스 어텐션 마스크 encoder_hidden_states. 두 가지 형식을 지원합니다:
    • Mask (batch, sequence_length) True = 유지, False = 제거.
    • Bias (batch, 1, sequence_length) 0 = 유지, -10000 = 폐기.

    ndim == 2인 경우: 마스크로 해석된 후, 위 형식과 일관된 바이어스로 변환됩니다. 이 바이어스는 크로스 어텐션 점수에 추가됩니다.

  • return_dict (bool, 선택 사항, 기본값 True) — 단순 tuple 대신 UNet2DConditionOutput를 반환할지 여부.

PixArtTransformer2DModel의 forward 메서드입니다.

fuse_qkv_projections

< >

( )

융합된 QKV 투영을 활성화합니다. 셀프 어텐션 모듈의 경우, 모든 투영 행렬(즉, 쿼리, 키, 값)이 융합됩니다. 크로스 어텐션 모듈의 경우, 키와 값 투영 행렬이 융합됩니다.

> 이 API는 🧪 실험적입니다.

set_default_attn_processor

< >

( )

커스텀 어텐션 프로세서를 비활성화하고 기본 어텐션 구현을 설정합니다.

기본 모델에 특별한 attention processor가 없으므로 AttnProcessor()를 그대로 사용해도 안전합니다.

unfuse_qkv_projections

< >

( )

활성화된 경우, 융합된 QKV 투영을 비활성화합니다.

> 이 API는 🧪 실험적입니다.

Update on GitHub