Buckets:

hf-doc-build/doc / diffusers /main /ko /api /models /sd3_transformer2d.md
mishig's picture
|
download
raw
6.25 kB
# SD3 Transformer 모델
[Stable Diffusion 3](https://hf.co/papers/2403.03206)에 소개된 Transformer 모델입니다. MMDiT transformer 블록에 그 독창성이 있습니다.
## SD3Transformer2DModel[[diffusers.SD3Transformer2DModel]]
#### diffusers.SD3Transformer2DModel[[diffusers.SD3Transformer2DModel]]
```python
diffusers.SD3Transformer2DModel(sample_size: int = 128, patch_size: int = 2, in_channels: int = 16, num_layers: int = 18, attention_head_dim: int = 64, num_attention_heads: int = 18, joint_attention_dim: int = 4096, caption_projection_dim: int = 1152, pooled_projection_dim: int = 2048, out_channels: int = 16, pos_embed_max_size: int = 96, dual_attention_layers: tuple = (), qk_norm: str | None = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sd3.py#L79)
**매개변수:**
sample_size (`int`, 기본값 `128`) : latents의 너비/높이입니다. 학습 중에 position embeddings의 수를 학습하는 데 사용되므로 고정됩니다.
patch_size (`int`, 기본값 `2`) : 입력 데이터를 작은 패치로 변환하기 위한 패치 크기.
in_channels (`int`, 기본값 `16`) : 입력의 잠재 채널 수입니다.
num_layers (`int`, 기본값 `18`) : 사용할 transformer 블록의 레이어 수입니다.
attention_head_dim (`int`, 기본값 `64`) : 각 헤드(head)의 채널 수.
num_attention_heads (`int`, 기본값 `18`) : multi-head attention에 사용할 헤드 수입니다.
joint_attention_dim (`int`, 기본값 `4096`) : 텍스트-이미지 결합 주의를 사용할 임베딩 차원입니다.
caption_projection_dim (`int`, 기본값 `1152`) : 캡션 임베딩의 임베딩 차원입니다.
pooled_projection_dim (`int`, 기본값 `2048`) : 풀링된 텍스트 투영의 임베딩 차원입니다.
out_channels (`int`, 기본값 `16`) : 출력의 잠재 채널 수입니다.
pos_embed_max_size (`int`, 기본값 `96`) : 위치 임베딩의 최대 잠재 높이/너비.
dual_attention_layers (`tuple[int, ...]`, 기본값 `()`) : 사용할 dual-stream transformer 블록의 수입니다.
qk_norm (`str`, *선택 사항*, 기본값 `None`) : attention 레이어에서 query와 key에 사용할 정규화입니다. `None`인 경우 정규화를 사용하지 않습니다.
[Stable Diffusion 3](https://huggingface.co/papers/2403.03206)에 소개된 Transformer 모델입니다.
#### enable_forward_chunking[[diffusers.SD3Transformer2DModel.enable_forward_chunking]]
```python
enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sd3.py#L175)
**매개변수:**
chunk_size (`int`, *선택 사항*) : 피드포워드 레이어의 청크 크기입니다. 지정하지 않으면 `dim` 차원의 각 텐서에 대해 피드포워드 레이어를 개별적으로 실행합니다.
dim (`int`, *선택 사항*, 기본값 `0`) : 피드포워드 계산을 청킹할 차원입니다. dim=0 (배치) 또는 dim=1 (시퀀스 길이) 중 하나를 선택합니다.
[feed forward chunking](https://huggingface.co/blog/reformer#2-chunked-feed-forward-layers)을 사용할 attention processor를 설정합니다.
#### forward[[diffusers.SD3Transformer2DModel.forward]]
```python
forward(hidden_states: Tensor, encoder_hidden_states: Tensor = None, pooled_projections: Tensor = None, timestep: LongTensor = None, block_controlnet_hidden_states: list = None, joint_attention_kwargs: dict[str, typing.Any] | None = None, return_dict: bool = True, skip_layers: list[int] | None = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sd3.py#L248)
**매개변수:**
hidden_states (`torch.Tensor`, shape `(batch size, channel, height, width)`) : 입력 `hidden_states`.
encoder_hidden_states (`torch.Tensor`, shape `(batch size, sequence_len, embed_dims)`) : 사용할 조건 임베딩(프롬프트와 같은 입력 조건에서 계산된 임베딩).
pooled_projections (`torch.Tensor`, shape `(batch_size, projection_dim)`) : 입력 조건의 임베딩에서 투영된 임베딩.
timestep (`torch.LongTensor`) : 노이즈 제거 단계를 나타내는 데 사용됩니다.
block_controlnet_hidden_states (`list` of `torch.Tensor`) : 지정된 경우, transformer 블록의 잔차(residuals)에 추가되는 텐서 목록입니다.
joint_attention_kwargs (`dict`, *선택 사항*) : 지정된 경우 [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py)의 `self.processor` 아래에서 정의된 `AttentionProcessor`로 전달되는 kwargs 사전입니다.
return_dict (`bool`, *선택 사항*, 기본값 `True`) : 일반 튜플 대신 `~models.transformer_2d.Transformer2DModelOutput`을 반환할지 여부.
skip_layers (`list` of `int`, *선택 사항*) : forward pass 중에 건너뛸 레이어 인덱스 목록입니다.
**반환값:**
`return_dict`가 True이면 `~models.transformer_2d.Transformer2DModelOutput`이 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 `tuple`이 반환됩니다.
[SD3Transformer2DModel](/docs/diffusers/main/ko/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel)의 forward 메서드입니다.
#### fuse_qkv_projections[[diffusers.SD3Transformer2DModel.fuse_qkv_projections]]
```python
fuse_qkv_projections()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sd3.py#L217)
융합된 QKV 투영을 활성화합니다. 셀프 어텐션 모듈의 경우, 모든 투영 행렬(즉, 쿼리, 키, 값)이 융합됩니다. 크로스 어텐션 모듈의 경우, 키와 값 투영 행렬이 융합됩니다.
> [!WARNING] > 이 API는 🧪 실험적입니다.
#### unfuse_qkv_projections[[diffusers.SD3Transformer2DModel.unfuse_qkv_projections]]
```python
unfuse_qkv_projections()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_sd3.py#L239)
활성화된 경우, 융합된 QKV 투영을 비활성화합니다.
> [!WARNING] > 이 API는 🧪 실험적입니다.

Xet Storage Details

Size:
6.25 kB
·
Xet hash:
0c410eb795f479e7a5471c311816507890eb473d07206ca6b3f082a21919740b

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