Cloudflare Workers AI: Kimi および GLM の推論を大規模に最適化する

Cloudflare は、Moonshot の Kimi K シリーズや Z.ai の GLM のような、大規模で長いコンテキストを持つ Mixture-of-Experts モデルを提供するために、KV キャッシュ量子化、モデル重みの圧縮、およびキャッシュ整合性チェックという 3 つの主要な最適化技術を実装しました。SGLang 推論フレームワークと、prefill(プリフィル)および decode(デコード)フェーズを分離する disaggregated architecture(分離型アーキテクチャ)を活用することで、Cloudflare はモデルの精度を維持しながら、リクエストの並行性とスループットを向上させています。

並行性を高めるための KV キャッシュ量子化

Key-Value (KV) キャッシュを 16 ビット精度 (BF16) から 8 ビット浮動小数点 (FP8, e4m3) に量子化することで、利用可能なコンテキストメモリが 2 倍になり、単一の GPU 上により多くの並行リクエストを保持できるようになります。

Kimi K2.6 モデルの場合、FP8 量子化により、メモリ容量が約 686,000 トークンから 1.37 百万トークンに増加します。低並行性では BF16 の方がトークンあたりの速度がわずかに速いものの、FP8 は高負荷時における "out of memory" エラーを回避することで、システム全体の総スループットを大幅に向上させます。分離型 H200 デプロイメントにおけるベンチマークでは、BF16 が最大 32 並行リクエストであったのに対し、FP8 は 64 並行リクエストをサポートし、毎秒 2,192 トークンに達しました。

Cloudflare はこの最適化を限定的に適用しています。decode フェーズでは並行性を最大化するために FP8 を使用し、prefill フェーズは compute-bound(計算量依存)であり memory-bound(メモリ帯域依存)ではないため、BF16 のまま維持されます。

低レイテンシを実現するためのモデル重みの圧縮

モデルの重みを 8 ビット浮動小数点 (FP8) から 4 ビット整数 (INT4) に圧縮することで、モデルのメモリフットプリントが削減され、GPU メモリからストリーミングされるデータ量が減少するため、decode フェーズが直接的に加速されます。

GLM 5.2 の場合、重み圧縮によりチェックポイントのサイズが 705 GB から 421 GB に削減されました。8-way tensor-parallel デプロイメントでは、GPU ごとのメモリ使用量が 88 GB から 52 GB に低下し、KV キャッシュ用にさらに 1.18 百万トークンの空きスペースが確保されました。これにより、decode フェーズにおいて大幅なレイテンシ向上が実現し、特に単一の並行リクエストにおける 1 秒あたりのトークン数が 55% 増加しました。

INT4 重みは乗算の前に展開する必要があるため、compute-bound である prefill フェーズは、FP8 (10,160 tok/s) と比較して INT4 (8,660 tok/s) では低速になります。したがって、Cloudflare は prefill に FP8 を、decode に INT4 を使用しています。

KV キャッシュ整合性チェック

単一の GPU メモリを共有するリクエスト数を増やすと、paged attention や continuous batching における管理エラーのリスクが高まります。これを軽減するために、Cloudflare は KV キャッシュ整合性チェック層を実装しました。

このシステムは、すべての物理キャッシュページに、再割り当て時に変更されるタグを割り当てます。サーバーは、decode 操作がキャッシュから読み取る前にこれらのタグを検証します。不一致が検出された場合、モデルが誤ったページからデータを返さないように、リクエストは中断されます。

この安全性のためのチェックによるパフォーマンスオーバーヘッドは無視できる程度であり、中規模のプロダクションモデルにおけるスループットと p95 レイテンシの変化は 1% 未満に抑えられています。検証は、attention kernel 内でのレースコンディションを避けるため、個別のバッチチェックとして実行されます。

パフォーマンスと精度のベンチマーク

Cloudflare は、KV キャッシュ量子化も重み圧縮も、標準的なベンチマークにおいてモデルの品質に大きな影響を与を与えないと報告しています。

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 は精度の低下がないことを強調していますが、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

関連