# Ideogram4Transformer2DModel

[Ideogram 4](https://github.com/ideogram-oss/ideogram-4)의 이미지형 데이터용 transformer입니다.

## Ideogram4Transformer2DModel[[diffusers.Ideogram4Transformer2DModel]]

#### diffusers.Ideogram4Transformer2DModel[[diffusers.Ideogram4Transformer2DModel]]

```python
diffusers.Ideogram4Transformer2DModel(in_channels: int = 128, num_layers: int = 34, attention_head_dim: int = 256, num_attention_heads: int = 18, intermediate_size: int = 12288, adaln_dim: int = 512, llm_features_dim: int = 53248, rope_theta: int = 5000000, mrope_section: tuple = (24, 20, 20), norm_eps: float = 1e-05)
```

[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_ideogram4.py#L278)

**매개변수:**

in_channels (`int`, 기본값 128) : 패치화 이후의 잠재 채널 수 (`ae_channels * patch_size ** 2`).

num_layers (`int`, 기본값 34) : Transformer 블록의 수.

attention_head_dim (`int`, 기본값 256) : 각 attention head의 차원; 전체 hidden size는 `attention_head_dim * num_attention_heads`입니다.

num_attention_heads (`int`, 기본값 18) : 어텐션 헤드 수.

intermediate_size (`int`, 기본값 12288) : 각 블록 내부의 SwiGLU MLP에서 사용되는 피드포워드 히든 크기입니다.

adaln_dim (`int`, 기본값 512) : AdaLN 변조가 사용하는 조건 벡터의 차원입니다.

llm_features_dim (`int`, 기본값 53248) : 모델에 입력되는 토큰별 텍스트 특징의 차원(일반적으로 텍스트 인코더의 여러 레이어에서 나온 숨겨진 상태의 연결입니다).

rope_theta (`int`, 기본값 5_000_000) : 다중 축 회전 위치 임베딩에 사용되는 기본값입니다.

mrope_section (`tuple[int, int, int]`, 기본값 `(24, 20, 20)`) : MRoPE의 (t, h, w) 축 각각에 할당되는 주파수의 수입니다.

norm_eps (`float`, 기본값 1e-5) : Transformer 블록 내부의 RMSNorm 모듈에서 사용되는 Epsilon 값입니다.

Ideogram 4 파이프라인에서 사용되는 flow-matching transformer 백본입니다.

Transformer는 멀티모달 텍스트 인코더가 생성한 텍스트 조건 토큰과 패치화된 이미지 잠재 변수를 모두 포함하는 단일 패킹된 시퀀스를 처리합니다. 토큰별 지표가 두 역할을 구분하며, `segment_ids`에서 파생된 블록 대각선 어텐션 마스크는 패킹된 배치 내에서 각 샘플이 자신에게만 어텐션하도록 제한합니다.

#### forward[[diffusers.Ideogram4Transformer2DModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, encoder_hidden_states: Tensor, position_ids: Tensor, segment_ids: Tensor, indicator: Tensor, attention_kwargs: dict | None = None, return_dict: bool = True)
```

[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_ideogram4.py#L373)

**매개변수:**

hidden_states (`torch.Tensor`, shape `(batch_size, sequence_length, in_channels)`) : 패치화된 노이즈 이미지 토큰의 패킹된 시퀀스. 이미지 외 위치는 내부적으로 마스킹됩니다.

timestep (`torch.Tensor`, shape `(batch_size,)` 또는 `(batch_size, sequence_length)`) : `[0, 1]` 범위의 Flow-matching 시간 (0은 순수 노이즈, 1은 깨끗한 데이터).

encoder_hidden_states (`torch.Tensor`, shape `(batch_size, sequence_length, llm_features_dim)`) : 토큰별 텍스트 조건화 특징. 텍스트가 아닌 위치는 내부적으로 마스킹됩니다.

position_ids (`torch.Tensor`, shape `(batch_size, sequence_length, 3)`) : multi-axis RoPE가 사용하는 `(t, h, w)` 좌표.

segment_ids (`torch.Tensor`, shape `(batch_size, sequence_length)`) : packed batch 내에서 토큰별 샘플 ID. 동일한 `segment_id`를 공유하는 위치들은 서로 attend합니다.

indicator (`torch.Tensor`, shape `(batch_size, sequence_length)`) : 토큰별 역할: `LLM_TOKEN_INDICATOR` (텍스트) 또는 `OUTPUT_IMAGE_INDICATOR` (이미지).

attention_kwargs (`dict`, *선택 사항*) : attention processor로 전달되는 kwargs 딕셔너리입니다. `"scale"` 항목은 PEFT 백엔드가 활성화된 경우 LoRA 가중치를 스케일링합니다.

return_dict (`bool`, *선택 사항*, 기본값 `True`) : 일반 튜플 대신 [Transformer2DModelOutput](/docs/diffusers/main/ko/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput)을 반환할지 여부.

**반환값:**

[Transformer2DModelOutput](/docs/diffusers/main/ko/api/models/cogview3plus_transformer2d#diffusers.models.modeling_outputs.Transformer2DModelOutput) 또는 첫 번째 요소가 모델의 compute dtype으로 `(batch_size, sequence_length, in_channels)` 형태의 텐서인 `tuple`입니다. `OUTPUT_IMAGE_INDICATOR`로 태그된 위치에서만 의미 있는 velocity 예측을 포함합니다.

패킹된 시퀀스의 이미지 토큰 위치에서 flow-matching 속도를 예측합니다.

