Ideogram 4
Ideogram 4
Ideogram 4는 세련된 구성과 타이포그래피 인지 생성에 초점을 맞춘 텍스트-이미지 모델 제품군이에요. SGLang은 공식 NF4·FP8 체크포인트, Comfy-Org의 NVFP4 트랜스포머, fal의 증류(distilled) Fast·Instant 변형을 지원해요. 메모리가 가장 큰 제약일 때 NF4, 지원 가속기 배포에는 FP8/NVFP4, 20-step 균형이라면 Fast, 8-step 저지연 목표라면 Instant를 고르면 돼요.
공개 저장소는 게이티드(gated)되어 있고, 사용 가능한 릴리스는 단일 풀프리시전 기준선이 아니라 이미 양자화 또는 증류된 형태예요.
출처: 문서
본문
1. 모델 소개
Ideogram 4는 세련된 구성과 타이포그래피 인지 생성에 초점을 맞춘 텍스트-이미지 제품군이에요. SGLang은 공식 NF4·FP8 체크포인트, Comfy-Org의 NVFP4 트랜스포머, fal의 증류된 Fast·Instant 변형을 지원해요.
메모리가 주된 제약일 때 NF4, 지원 가속기 배포에는 FP8/NVFP4, 20-step 균형에는 Fast, 8-step 지연 시간 목표에는 Instant를 선택하세요. 공개 저장소는 게이티드이고, 제공되는 릴리스는 단일 풀프리시전 기준선이 아니라 이미 양자화 또는 증류된 형태예요.
| Variant | Hugging Face model ID | 참고 |
|---|---|---|
| NF4 | ideogram-ai/ideogram-4-nf4 |
공식 bitsandbytes NF4 체크포인트. 저메모리 배포에서는 이 경로를 먼저 써요. |
| FP8 | ideogram-ai/ideogram-4-fp8 |
공식 FP8 체크포인트. |
| NVFP4 | Comfy-Org/Ideogram-4 |
Comfy-Org NVFP4 트랜스포머 가중치. SGLang은 non-transformer 컴포넌트를 ideogram-ai/ideogram-4-fp8에서 로드해요. |
| Fast | fal/ideogram-v4-fast |
20-step, CFG-증류, FP4 타겟 부동 소수점 체크포인트. 기본값은 V4_FAST_20. |
| Instant | fal/ideogram-v4-instant |
8-step, CFG- 및 timestep-증류 BF16 체크포인트. 기본값은 V4_INSTANT_8. |
fal 저장소는 트랜스포머 컴포넌트만 포함해요. 두 모델 ID 중 하나를 --model-path에 직접 전달하면 SGLang이 fal의 모델 카드가 참조하는 ideogram-ai/ideogram-4-nf4-diffusers 리비전에서 텍스트 인코더, 토크나이저, VAE, 스케줄러를 로드하고, unconditional 브랜치 없이 증류된 트랜스포머를 실행해요.
2. 사전 요구사항
- NVIDIA CUDA GPU.
- diffusion 의존성과 함께 설치된 SGLang.
- NF4 체크포인트와 fal 변형의 공유 NF4 텍스트 인코더용
bitsandbytes>=0.46.1및accelerate>=1.1.0. - Ideogram 4 게이티드 저장소 접근 권한이 있는
HF_TOKEN.
3. 모델 서빙
NF4:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path ideogram-ai/ideogram-4-nf4 \
--num-gpus 1 \
--performance-mode auto \
--port 30010
FP8:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path ideogram-ai/ideogram-4-fp8 \
--num-gpus 1 \
--performance-mode auto \
--port 30010
Comfy-Org NVFP4:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path Comfy-Org/Ideogram-4 \
--num-gpus 1 \
--performance-mode auto \
--port 30010
NVFP4에는 B200 또는 다른 Blackwell GPU를 사용하세요.
fal Fast:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path fal/ideogram-v4-fast \
--num-gpus 1 \
--performance-mode auto \
--port 30010
fal Instant:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path fal/ideogram-v4-instant \
--num-gpus 1 \
--performance-mode auto \
--port 30010
텐서 및 시퀀스 병렬 처리
두 fal 변형 모두 네이티브 DiT 텐서 병렬 처리와 Ulysses 시퀀스 병렬 처리를 지원해요. 아래 두 GPU 레이아웃은 fal/ideogram-v4-fast와 fal/ideogram-v4-instant 모두에 대해 B200 GPU에서 1024×1024로 검증됐어요.
TP2는 증류된 DiT 가중치를 샤딩해요. 공유 bitsandbytes NF4 텍스트 인코더는 4-bit row-parallel 양자화 상태를 안전하게 샤딩할 수 없어서 복제돼요:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path fal/ideogram-v4-instant \
--num-gpus 2 \
--tp-size 2 \
--port 30010
Ulysses/SP2는 DiT 가중치를 복제한 채 이미지-토큰 시퀀스를 샤딩해요:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path fal/ideogram-v4-instant \
--num-gpus 2 \
--ulysses-degree 2 \
--port 30010
Fast에도 같은 레이아웃을 쓰려면 모델 ID를 fal/ideogram-v4-fast로 바꾸세요. TP2와 Ulysses/SP2가 검증된 구성이고, Ring SP는 이 파이프라인에서 아직 검증되지 않았어요. Ideogram 4는 어텐션 헤드가 18개이므로 그 외의 TP degree는 18을 나눌 수 있어야 해요.
레이어별 오프로드
증류된 DiT가 GPU 메모리에 맞지 않으면 트랜스포머 레이어별 오프로드를 활성화하세요. 이렇게 하면 공유 NF4 텍스트 인코더를 GPU에 유지하면서 DiT 블록을 고정(pinned) CPU 메모리에서 스트리밍해요. 추가 지연 시간을 대가로 최대 VRAM을 줄여줘요:
HF_TOKEN=$HF_TOKEN sglang serve \
--model-path fal/ideogram-v4-instant \
--num-gpus 1 \
--dit-layerwise-offload \
--layerwise-offload-components transformer \
--port 30010
같은 옵션이 Fast에도 적용돼요. 레이어별 오프로드는 실제 Instant 생성으로 검증됐고, TP2와 Ulysses/SP2는 오프로드 없이 별도로 검증됐어요.
릴리스된 Fast 가중치는 부동 소수점 사전 패킹(pre-pack) 형태로 저장되어 직접 로드할 수 있지만, fal은 NVFP4 실행 경로를 위해 QAD로 훈련했어요. SGLang은 현재 로드 시 dense NVIDIA DiT를 NVFP4로 양자화하지 않으므로, 직접 Fast 추론은 의도된 양자화 경로를 우회해서 눈에 띄게 저하될 수 있어요. 직접 부동 소수점 Fast 추론은 호환성/테스트 지원으로 취급하고, 프로덕션 품질 경로로는 쓰지 마세요. 릴리스된 Instant 체크포인트는 BF16이며 현재 권장되는 로컬 체크포인트예요.
4. 이미지 생성
from openai import OpenAI
client = OpenAI(api_key="EMPTY", base_url="http://localhost:30010/v1")
response = client.images.generate(
model="ideogram-ai/ideogram-4-nf4",
prompt="A cinematic poster of a quiet bookstore at dusk with elegant hand-lettered signage",
size="1024x1024",
n=1,
response_format="b64_json",
extra_body={"preset": "V4_QUALITY_48", "seed": 0},
)
image_bytes = base64.b64decode(response.data[0].b64_json)
with open("ideogram4.png", "wb") as f:
f.write(image_bytes)
fal의 호스팅 엔드포인트는 자연어 프롬프트를 확장하지만, 이 로컬 체크포인트들은 Ideogram 4의 구조화된 JSON 캡션 형식을 기대해요. API prompt로 완전한 캡션을 전달하세요. 예:
prompt = json.dumps(
{
"high_level_description": (
"A bold typographic poster centered on the exact words INSTANT BY FAL, "
"printed in black and electric orange on warm white paper."
),
"compositional_deconstruction": {
"background": "Warm white textured paper with generous negative space.",
"elements": [
{
"type": "text",
"text": "INSTANT BY FAL",
"desc": "Large uppercase geometric sans-serif lettering, precisely centered.",
}
],
},
},
ensure_ascii=False,
separators=(",", ":"),
)
response = client.images.generate(
model="fal/ideogram-v4-instant",
prompt=prompt,
size="1024x1024",
n=1,
response_format="b64_json",
extra_body={"seed": 42},
)
기본 Ideogram 4 프리셋은 V4_DEFAULT_20, V4_QUALITY_48, V4_TURBO_12예요. fal 변형은 각각 V4_FAST_20과 V4_INSTANT_8을 자동으로 선택해요. 프리셋은 num_inference_steps와 guidance를 모두 제어하므로 그 필드들을 직접 설정하면 안 돼요.