Diffusers documentation
Ideogram4Transformer2DModel
Ideogram4Transformer2DModel
Ideogram 4의 이미지형 데이터용 transformer입니다.
Ideogram4Transformer2DModel
클래스 diffusers.Ideogram4Transformer2DModel
< source >( in_channels: int = 128num_layers: int = 34attention_head_dim: int = 256num_attention_heads: int = 18intermediate_size: int = 12288adaln_dim: int = 512llm_features_dim: int = 53248rope_theta: int = 5000000mrope_section: tuple = (24, 20, 20)norm_eps: float = 1e-05 )
매개변수
- in_channels (
int, 기본값 128) — 패치화 이후의 Latent 채널 수(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) — Attention head의 수. - intermediate_size (
int, 기본값 12288) — 각 블록 내부의 SwiGLU MLP에서 사용되는 피드포워드 히든 크기입니다. - adaln_dim (
int, 기본값 512) — AdaLN 변조가 사용하는 조건 벡터의 차원입니다. - llm_features_dim (
int, 기본값 53248) — 모델에 입력되는 토큰별 텍스트 특징의 차원(보통 텍스트 인코더의 여러 레이어에서 나온 hidden states의 연결입니다). - 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
< source >( hidden_states: Tensortimestep: Tensorencoder_hidden_states: Tensorposition_ids: Tensorsegment_ids: Tensorindicator: Tensorattention_kwargs: dict | None = Nonereturn_dict: bool = True )
매개변수
- 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)) —(t, h, w)좌표. multi-axis RoPE가 사용합니다. - segment_ids (
torch.Tensor, shape(batch_size, sequence_length)) — 패킹된 배치 내에서 토큰별 샘플 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"항목은 LoRA 가중치를 스케일링합니다(PEFT 백엔드가 활성화된 경우). - return_dict (
bool, 선택 사항, 기본값True) — 일반 튜플 대신 Transformer2DModelOutput을 반환할지 여부.
패킹된 시퀀스의 이미지 토큰 위치에서 flow-matching 속도를 예측합니다.