인퍼런스 배칭
인퍼런스 배칭 (Inference Batching)
이 페이지는 서빙 중 호환되는 네이티브 SGLang-Diffusion 요청을 배칭하는 동적 배칭(dynamic batching) 기능을 설명해요. 동적 배칭은 대기 중인 호환 요청을 하나의 네이티브 파이프라인 배치로 병합하는 SGLang-Diffusion 서빙 모드로, LLM 연속 배칭이나 토크나이저 배칭과는 별개예요.
출처: 문서
본문
동적 배칭은 대기 중인 호환 요청을 하나의 네이티브 파이프라인 배치로 병합하는 옵트인(opt-in) SGLang-Diffusion 서빙 모드예요. LLM 연속 배칭(continuous batching)과 토크나이저 배칭과는 별개예요.
동일한 모델과 샘플링 형태를 가진 동시 T2I 또는 T2V 트래픽에 사용해요. 지연 시간에 민감하거나 혼합된 트래픽에는 단일(singleton) 서빙을 유지하세요.
활성화 (Enable)
동적 배칭은 기본적으로 --batching-max-size 1이라 비활성화돼요.
외부 AR 서버를 사용하는 GLM-Image T2I의 경우 호환 요청이 하나의 배칭된 AR /generate 호출을 공유해요. DiT 디노이징과 VAE 디코딩은 요청별 독립 실행으로 유지되며, GLM-Image는 DiT 작업을 배칭하지 않아요.
sglang serve \
--model-path black-forest-labs/FLUX.1-dev \
--port 30010 \
--batching-mode dynamic \
--batching-max-size 8 \
--batching-delay-ms 5 \
--enable-batching-metrics
요청 형식은 OpenAI-Compatible API를 참고해 주세요.
모델이나 해상도가 --batching-max-size보다 낮은 상한을 필요로 할 때는 --batching-config /path/to/batching_config.json으로 JSON 규칙을 로드해요:
{
"schema_version": 1,
"rules": [
{
"model_contains": "Qwen-Image",
"resolution": "1024x1024",
"max_batch_size": 1
}
]
}
호환성 (Compatibility)
T2I 및 T2V 모델용 동적 배칭의 초기 구현은 #18764에서 찾을 수 있어요. 현재 호환성 그리드는 아래와 같으며, 커버리지가 추가됨에 따라 업데이트될 거예요. 일반적인 모델 ID는 Supported Models를 참고해 주세요.
✅는 지원, ❌는 현재 미지원, ?는 미테스트, -는 해당 없음을 의미해요.
이미지 (Image)
| Model | T2I | I2I |
|---|---|---|
| FLUX.1-dev | ✅ | - |
| FLUX.2-dev | ✅ | ❌ |
| FLUX.2-dev-NVFP4 | ? | ? |
| FLUX.2-Klein-4B | ✅ | ❌ |
| FLUX.2-Klein-9B | ? | ? |
| FLUX.2-Klein-Base-4B | ? | ? |
| FLUX.2-Klein-Base-9B | ? | ? |
| Z-Image | ? | - |
| Z-Image-Turbo | ✅ | - |
| GLM-Image (external AR) | ✅ | - |
| Qwen Image | ✅ | - |
| Qwen Image 2512 | ✅ | - |
| Qwen Image 2.1 | ✅ | ❌ |
| Qwen Image Edit | - | ❌ |
| Qwen Image Edit 2509 | - | ? |
| Qwen Image Edit 2511 | - | ? |
| Qwen Image Layered | ? | ? |
| SD3 Medium | ? | - |
| SD3.5 Medium | ? | - |
| SD3.5 Large | ? | - |
| Hunyuan3D-2 | ? | - |
| SANA 1.5 1.6B | ✅ | - |
| SANA 1.5 4.8B | ✅ | - |
| SANA 1600M 1024px | ? | - |
| SANA 600M 1024px | ? | - |
| SANA 1600M 512px | ? | - |
| SANA 600M 512px | ? | - |
| FireRed-Image-Edit 1.0 | - | ? |
| FireRed-Image-Edit 1.1 | - | ? |
| ERNIE-Image | ? | - |
| ERNIE-Image-Turbo | ? | - |
Qwen Image 2.1은 호환되는 text-to-image 요청의 병합을 지원해요. 이미지 편집은 요청 간에 병합되지 않으며, n > 1은 여전히 하나의 편집 요청 안에서 여러 출력을 생성해요. 배포 설정과 배칭 트레이드오프는 쿡북을 참고해 주세요.
비디오 (Video)
| Model | Support |
|---|---|
| FastWan2.1 T2V 1.3B | ✅ |
| FastWan2.2 TI2V 5B Full Attn | ❌ |
| Wan2.2 TI2V 5B | ❌ |
| Wan2.2 T2V A14B | ✅ |
| Wan2.2 I2V A14B | ❌ |
| HunyuanVideo | ❌ |
| FastHunyuan | ❌ |
| Wan2.1 T2V 1.3B | ✅ |
| Wan2.1 T2V 14B | ✅ |
| Wan2.1 I2V 480P | ? |
| Wan2.1 I2V 720P | ? |
| TurboWan2.1 T2V 1.3B | ✅ |
| TurboWan2.1 T2V 14B | ✅ |
| TurboWan2.1 T2V 14B 720P | ✅ |
| TurboWan2.2 I2V A14B | ? |
| Wan2.1 Fun 1.3B InP | ? |
| Helios Base | ? |
| Helios Mid | ? |
| Helios Distilled | ? |
| LTX-2 | ? |
| LTX-2.3 | ? |
참고 사항 (Notes)
- 요청은 모델 입력, 샘플링 파라미터, 출력 처리, 구성된 규칙이 모두 호환될 때만 배칭돼요.
- 시작 시 탐색(probing), 런타임 학습, OOM 재시도, 단일(singleton) 자동 폴백은 없어요. 병합된 배치가 실패하거나 분할할 수 없으면 해당 배치의 모든 요청이 오류를 받아요.
- 배치 형태가 커널을 바꿀 수 있으므로 단일 및 동적 출력이 비트 단위로 동일할 것이라 기대하지 마세요.
- 실현된 배치를 검사하려면
--enable-batching-metrics를 사용해요:
Dynamic batch dispatch: size=2/8, user_max=8, queue_wait=5.12ms, stop_reason=delay
Dynamic batch dispatch: size=1/8, user_max=8, queue_wait=0.04ms, stop_reason=config_cap:1
Dynamic batch stats (last 5 dispatches): avg_size=2.80, merged_rate=60.0%, full_rate=20.0%, utilization=35.0%, wait_avg=3.21ms, wait_p95=5.12ms, top_rejects=none