Diffusers documentation

PixArtTransformer2DModel

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[str, torch.Tensor] = Nonecross_attention_kwargs: dict[str, typing.Any] = 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