Krea-2
Krea-2
Krea-2는 Krea의 포토리얼리스틱 텍스트-이미지 제품군으로, Qwen3-VL 텍스트 인코더와 Qwen-Image VAE를 갖춘 단일 스트림 MMDiT로 구성돼요. 두 공개 변형 모두 같은 네이티브 SGLang 파이프라인을 사용하며 주로 샘플링 목표가 달라요. 인터랙티브 생성에는 8-step으로 증류되어 guidance_scale=1.0인 Turbo를, 지연 시간보다 최대 충실도가 중요할 때는 classifier-free guidance와 함께 약 52 step을 쓰는 Raw를 선택해요.
둘 다 이미지 편집 모델은 아니므로, 입력 이미지를 보존하거나 변형해야 할 때는 Qwen-Image-Edit 또는 FLUX.2 경로를 사용하세요.
출처: 문서
본문
1. 모델 소개
Krea-2는 Krea의 포토리얼리스틱 텍스트-이미지 제품군으로, Qwen3-VL 텍스트 인코더와 Qwen-Image VAE를 갖춘 단일 스트림 MMDiT로 만들어졌어요. 두 공개 변형 모두 같은 네이티브 SGLang 파이프라인을 사용하고 주로 샘플링 목표가 달라요.
인터랙티브 생성에는 Turbo를 고르세요: 8 step으로 증류되어 guidance_scale=1.0이에요. 지연 시간보다 최대 충실도가 더 중요할 때는 Raw를 고르세요: classifier-free guidance와 함께 약 52 step을 사용해요. 둘 다 이미지 편집 모델이 아닙니다. 입력 이미지를 보존하거나 변형해야 할 때는 Qwen-Image-Edit 또는 FLUX.2 경로를 사용하세요.
| Variant | Model ID | Sampling profile |
|---|---|---|
| Turbo | krea/Krea-2-Turbo |
8 steps, CFG 없음; 가장 빠른 경로 |
| Raw | krea/Krea-2-Raw |
CFG와 함께 약 52 steps; 더 높은 충실도 경로 |
2. SGLang-diffusion 설치
SGLang-diffusion은 여러 설치 방법을 제공해요. 하드웨어 플랫폼과 요구사항에 따라 가장 적합한 방법을 고를 수 있어요.
설치 지침은 공식 SGLang-diffusion 설치 가이드를 참고하세요.
3. 모델 배포
이 절은 빠르고 고품질의 이미지 생성을 위한 Krea-2-Turbo 배포를 다뤄요.
3.1 기본 구성
Krea-2-Turbo는 단 8번의 추론 step으로 고품질 이미지를 생성해요. 서버를 다음으로 시작하세요:
sglang serve \
--model-path krea/Krea-2-Turbo \
--num-gpus 1 \
--port 30000
step 수와 guidance scale은 요청 시각 설정이에요 (API Usage 참고). Krea-2-Turbo는 기본적으로 guidance_scale = 1.0을 쓰는 8 step이에요.
3.2 구성 팁
가속 기능과 런타임 요구사항은 Performance Optimization을 참고하세요.
--num-gpus: 사용할 GPU 수.- 멀티 GPU(텐서 및/또는 시퀀스 병렬 처리): 섹션 3.3 참고.
3.3 멀티 GPU: 텐서 및 시퀀스 병렬 처리
Krea-2는 결합할 수 있는 두 개의 멀티 GPU 축을 지원해요. --num-gpus는 tp_size × ulysses_degree와 같아야 해요.
- 텐서 병렬 처리 (
--tp-size N) 는 DiT 가중치를 GPU들에 걸쳐 샤딩해 GPU당 VRAM을 낮춰요. Krea-2의 어텐션 헤드(48 query / 12 KV)와 텍스트 헤드(20)는 tp size 1, 2, 4로 나눌 수 있어요. - 시퀀스 병렬 처리 / Ulysses (
--ulysses-degree N) 는 텍스트 prefix를 복제한 채 이미지-토큰 시퀀스를 GPU들에 걸쳐 샤딩해요. 가중치는 샤딩하지 않고(GPU당 VRAM은 그대로) 출력은 단일 GPU와 비트 단위로 동일해요. 현재 요청당 단일 프롬프트가 필요해요(SP에서 ragged/padded 멀티 프롬프트 배치는 지원되지 않음 — 그런 경우에는--tp-size사용).
# Tensor parallel (2 GPUs) — GPU당 최저 VRAM (DiT 가중치 샤딩)
sglang serve --model-path krea/Krea-2-Turbo --num-gpus 2 --tp-size 2 --port 30000
# Sequence parallel / Ulysses (2 GPUs) — 단일 GPU와 비트 단위 동일 출력
sglang serve --model-path krea/Krea-2-Turbo --num-gpus 2 --ulysses-degree 2 --port 30000
# Hybrid TP × SP (4 GPUs) — 두 축 합성
sglang serve --model-path krea/Krea-2-Turbo --num-gpus 4 --tp-size 2 --ulysses-degree 2 --port 30000
2× H200에서 측정(Krea-2-Turbo, 8 steps, 1024×1024): --tp-size 2와 --ulysses-degree 2 각각은 단일 GPU 대비 ~1.7× denoise 속도 향상, 하이브리드 TP=2 × SP=2는 4 GPU에서 ~2.8×에 도달해요. 선택: 메모리 제약 GPU에서는 --tp-size를 선호해요(~24 GB DiT 샤딩, 예: 2 GPU에서 ~38 GB → GPU당 ~27 GB). 대형 VRAM GPU에서는 시퀀스 병렬 처리가 약간 더 빠르고 수치적으로 정확하며, 두 방식이 가장 높은 처리량을 위해 합성돼요.
4. API 사용
전체 API 문서는 공식 API 사용 가이드를 참고하세요.
4.1 이미지 생성
OpenAI 호환 이미지 API로 이미지를 생성하세요:
from openai import OpenAI
client = OpenAI(api_key="EMPTY", base_url="http://localhost:30000/v1")
response = client.images.generate(
model="krea/Krea-2-Turbo",
prompt="a red fox sitting in fresh snow, golden hour, photorealistic",
n=1,
response_format="b64_json",
)
# 생성된 이미지 저장
image_bytes = base64.b64decode(response.data[0].b64_json)
with open("output.png", "wb") as f:
f.write(image_bytes)
명령줄에서 단일 이미지를 생성할 수도 있어요:
sglang generate --model-path krea/Krea-2-Turbo \
--prompt "a red fox sitting in fresh snow, golden hour, photorealistic" \
--num-inference-steps 8 --height 1024 --width 1024 --save-output
4.2 고급 사용
4.2.1 Cache-DiT 가속
SGLang은 Diffusion Transformer(DiT)용 캐싱 가속 엔진인 Cache-DiT를 통합해 최소한의 품질 손실로 추론을 가속해요. SGLANG_CACHE_DIT_ENABLED=true를 설정해 활성화하세요. 자세한 내용은 SGLang Cache-DiT 문서를 참고하세요.
Cache-DiT는 추가 구성 없이 두 Krea-2 변형 모두에서 동작해요. SGLang이 각 요청의 classifier-free-guidance 모드를 추적하므로 Krea-2-Turbo(CFG 없음, guidance_scale = 1.0)와 Krea-2-Raw(CFG, guidance_scale ≈ 4.5) 모두 자동으로 올바르게 캐싱돼요.
기본 사용
SGLANG_CACHE_DIT_ENABLED=true sglang serve \
--model-path krea/Krea-2-Turbo \
--num-gpus 1 \
--port 30000
기본 캐시 설정으로 측정된 이미지당 denoise 속도 향상(NVIDIA H200, 1024x1024, seed 0):
| Variant | Inference steps | Denoise (no cache → cache) | Speedup |
|---|---|---|---|
| Krea-2-Turbo (no CFG) | 8 | 1.27s → 0.92s | ~1.4x |
| Krea-2-Raw (CFG 4.5) | 50 | 18.0s → 6.3s | ~2.9x |
캐싱은 Raw의 더 긴 스케줄에서 여유가 가장 커요. 8-step 증류 Turbo는 warmup 후 캐시 가능한 step이 몇 개뿐이에요.
고급 사용
- DBCache 파라미터: DBCache는 블록 단위 캐싱 동작을 제어해요:
| Parameter | Env Variable | Default | Description |
|---|---|---|---|
| Fn | SGLANG_CACHE_DIT_FN |
1 | 항상 계산할 첫 블록 수 |
| Bn | SGLANG_CACHE_DIT_BN |
0 | 항상 계산할 마지막 블록 수 |
| W | SGLANG_CACHE_DIT_WARMUP |
4 | 캐싱 시작 전 warmup step 수 |
| R | SGLANG_CACHE_DIT_RDT |
0.24 | 잔차 차이 임계값 |
| MC | SGLANG_CACHE_DIT_MC |
3 | 최대 연속 캐시 step 수 |
- TaylorSeer 구성: TaylorSeer는 테일러 전개로 캐싱 정확도를 높여요(긴 Raw 스케줄에 가장 적합하며 8-step Turbo에는 권장되지 않음):
| Parameter | Env Variable | Default | Description |
|---|---|---|---|
| Enable | SGLANG_CACHE_DIT_TAYLORSEER |
false | TaylorSeer calibrator 활성화 |
| Order | SGLANG_CACHE_DIT_TS_ORDER |
1 | 테일러 전개 차수 (1 또는 2) |
결합 구성 예시 (Krea-2-Raw, 기본 캐시 설정을 명시적으로 표시):
SGLANG_CACHE_DIT_ENABLED=true \
SGLANG_CACHE_DIT_FN=1 \
SGLANG_CACHE_DIT_BN=0 \
SGLANG_CACHE_DIT_WARMUP=4 \
SGLANG_CACHE_DIT_RDT=0.24 \
SGLANG_CACHE_DIT_MC=3 \
sglang serve --model-path krea/Krea-2-Raw
4.2.2 메모리 및 컴포넌트 상주
Krea-2의 DiT는 bf16에서 ~24 GB(모델의 대부분)예요. 메모리 제약 GPU에서는 덜 상주시킬 수 있어요:
--component-residency dit=layerwise-offload: DiT의 트랜스포머 블록을 비동기 host-to-device prefetch 오버랩으로 레이어 단위로 스트리밍해 작은 워킹 셋만 GPU에 남겨요. 소비자/32 GB급 카드에 Krea-2를 맞추는 주된 방법이며 약간의 지연 시간 비용이 들어요.--dit-offload-prefetch-size로 메모리/지연 시간 트레이드오프를 조정해요(0.0은 최저 메모리를 위해 레이어 하나를 prefetch, 더 큰 값은 더 많은 레이어를 prefetch — 더 빠르지만 더 많은 메모리).--component-residency dit=component-offload: denoising 사용 사이에 완전한 DiT를 CPU에 유지. 이 모드와 layerwise offload는 서로 다른 모드이며 같은 컴포넌트에 결합하지 마세요.--component-residency text_encoder=component-offload: denoising 중 유휴한 Qwen3-VL 텍스트 인코더를 오프로드.--component-residency vae=component-offload: 사용 사이에 VAE 오프로드.--pin-cpu-memory: 오프로드용 호스트 메모리를 고정.CUDA error: invalid argument가 뜨면 임시 해결책으로만 추가하세요.
레거시 --dit-layerwise-offload, --dit-cpu-offload, --text-encoder-cpu-offload, --vae-cpu-offload 형식도 계속 허용돼요. 레거시 DiT 오프로드 플래그가 둘 다 켜지면 유효 DiT 모드는 layerwise offload예요.
대형 VRAM GPU(예: H200)에서는 가장 빠른 지연 시간을 위해 모든 것을 상주(오프로드 꺼짐) 상태로 유지하세요.
5. 벤치마크
테스트 환경:
- 하드웨어: NVIDIA H200 GPU (1x)
- 모델: krea/Krea-2-Turbo (8 inference steps)
- sglang diffusion 버전: 0.5.13
서버 명령 (아래 두 벤치마크 모두에 사용):
sglang serve --model-path krea/Krea-2-Turbo --port 30000
5.1 이미지 생성
벤치마크 명령:
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
--model krea/Krea-2-Turbo --dataset vbench --task text-to-image \
--num-prompts 1 --max-concurrency 1
결과:
================= Serving Benchmark Result =================
Task: text-to-image
Model: krea/Krea-2-Turbo
Dataset: vbench
--------------------------------------------------
Benchmark duration (s): 1.56
Request rate: inf
Max request concurrency: 1
Successful requests: 1/1
--------------------------------------------------
Request throughput (req/s): 0.64
Latency Mean (s): 1.5600
Latency Median (s): 1.5600
Latency P99 (s): 1.5600
--------------------------------------------------
Peak Memory Max (MB): 37466.00
Peak Memory Mean (MB): 37466.00
Peak Memory Median (MB): 37466.00
============================================================
5.2 고동시성 이미지 생성
벤치마크 명령:
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
--model krea/Krea-2-Turbo --dataset vbench --task text-to-image \
--num-prompts 20 --max-concurrency 20
결과:
================= Serving Benchmark Result =================
Task: text-to-image
Model: krea/Krea-2-Turbo
Dataset: vbench
--------------------------------------------------
Benchmark duration (s): 31.47
Request rate: inf
Max request concurrency: 20
Successful requests: 20/20
--------------------------------------------------
Request throughput (req/s): 0.64
Latency Mean (s): 16.5000
Latency Median (s): 16.5200
Latency P99 (s): 31.1300
--------------------------------------------------
Peak Memory Max (MB): 37468.00
Peak Memory Mean (MB): 37466.40
Peak Memory Median (MB): 37466.00
============================================================