Cloudflare Workers AI: Kimi 및 GLM 추론의 대규모 최적화
Cloudflare는 Moonshot의 Kimi K-시리즈 및 Z.ai의 GLM과 같은 대규모, 긴 컨텍스트 mixture-of-experts 모델을 서비스하기 위해 KV cache quantization, model weight compression, 그리고 cache integrity checking이라는 세 가지 주요 최적화 기술을 구현했습니다. SGLang 추론 프레임워크와 prefill 및 decode 단계를 분리하는 disaggregated architecture를 활용함으로써, Cloudflare는 모델 정확도를 유지하면서 요청 동시성(concurrency)과 처리량(throughput)을 높입니다.
동시성 증대를 위한 KV Cache Quantization
Key-Value (KV) cache를 16비트 정밀도(BF16)에서 8비트 부동 소수점(FP8, e4m3)으로 양자화(quantizing)하면 가용 컨텍스트 메모리가 두 배로 늘어나, 단일 GPU에서 더 많은 동시 요청을 수용할 수 있습니다.
Kimi K2.6 모델의 경우, FP8 양자화를 통해 메모리 용량이 약 686,000 토큰에서 137만 토큰으로 증가합니다. 낮은 동시성에서는 BF16이 토큰당 속도가 약간 더 빠르지만, FP8은 높은 부하 상황에서 "out of memory" 오류를 방지하여 전체 시스템 처리량을 크게 향상시킵니다. disaggregated H200 배포 환경에서의 벤치마크 결과, FP8은 초당 2,192 토큰에 도달하는 64개의 동시 요청을 지원한 반면, BF16은 최대 32개의 동시 요청에 그쳤습니다.
Cloudflare는 이 최적화를 선택적으로 적용합니다. decode 단계에서는 동시성을 극대화하기 위해 FP8을 사용하지만, prefill 단계는 compute-bound가 아닌 memory-bound가 아니기 때문에 BF16을 유지합니다.
낮은 지연 시간을 위한 Model Weight Compression
모델 가중치(weights)를 8비트 부동 소수점(FP8)에서 4비트 정수(INT4)로 압축하면 모델의 메모리 점유율이 줄어들어, GPU 메모리에서 스트리밍되는 데이터 양이 감소함으로써 decode 단계를 직접적으로 가속화합니다.
GLM 5.2의 경우, 가중치 압축을 통해 체크포인트 크기가 705 GB에서 421 GB로 줄어들었습니다. 8-way tensor-parallel 배포 환경에서 GPU당 메모리 사용량은 88 GB에서 52 GB로 감소하여, 추가로 118만 토큰의 KV cache를 위한 공간을 확보했습니다. 이는 decode 단계에서 상당한 지연 시간 이득을 가져왔으며, 특히 단일 동시 요청 시 초당 토큰 수가 55% 증가했습니다.
INT4 가중치는 곱셈 전에 확장되어야 하므로, compute-bound인 prefill 단계는 FP8(10,160 tok/s)에 비해 INT4(8,660 tok/s)에서 더 느립니다. 따라서 Cloudflare는 prefill에는 FP8을 사용하고 decode에는 INT4를 사용합니다.
KV Cache Integrity Checking
단일 GPU 메모리를 공유하는 요청의 수가 늘어나면 paged attention 및 continuous batching에서의 bookkeeping errors의 위험이 높아집니다. 이를 완화하기 위해 Cloudflare는 KV cache integrity checking 레이어를 구현했습니다.
이 시스템은 재할당 시 변경되는 모든 물리적 캐시 페이지에 태그를 할당합니다. 서버는 decode 작업이 캐시를 읽기 전에 이 태그들을 검증합니다. 만약 불일치가 감지되면, 모델이 잘못된 페이지의 데이터를 반환하는 것을 방지하기 위해 요청이 중단됩니다.
이 안전 검사(safety check)에 대한 성능 오버헤드는 미미하며, 중간 규모의 프로덕션 모델에 대해 처리량과 p95 지연 시간 변화는 1% 미만으로 유지됩니다. 검증은 attention kernel 내의 race conditions를 방지하기 위해 별도의 배치 검사로 실행됩니다.
성능 및 정확도 벤치마크
Cloudflare는 KV cache quantization이나 weight compression이 표준 벤치마크 전반에 걸쳐 모델 품질에 큰 영향을 미치지 않는다고 보고합니다.
Kimi K2.6 (BF16 vs FP8 KV Cache):
- GSM8K: 94.24 (BF16) vs 94.09 (FP8)
- MMLU: 89.11 (BF16) vs 89.04 (FP8)
- Tool-call validity: 92.2% (BF16) vs 92.6% (FP8)
GLM 5.2 (FP8 vs INT4 Weights):
- GSM8K (Exact match): 94.39% (FP8) vs 93.56% (INT4)
- MMLU Average: 86.60% (FP8) vs 86.54% (INT4)
- ARC-Challenge Accuracy: 64.93% (FP8) vs 64.85% (INT4)
커뮤니티 관점
Cloudflare가 정확도 손실이 없음을 강조하는 반면, some community members on Hacker News는 평가의 깊이에 대해 우려를 제약합니다:
"some model families are more sensitive to KV quantisation than others... the evaluation suite they use to claim that FP8 KV quantisation is indistinguishable is noticeably lacking coding benchmarks; in long-running tasks, minor tool call errors compound over time."
다른 비평가들은 모델의 랜딩 페이지에 명시적인 경고 없이 양자화된 모델을 서비스하는 것이 코딩 에이전트와 같이 복잡한 작업을 위해 최대 정밀도가 필요한 사용자들에게 오해를 불러일으킬 수 있다고 주장합니다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- 프로젝트