vLLM Arm CPU向け最適化

vLLMはPyTorch、oneDNN、KleidiAIと協力し、Arm Neoverseベースのサーバー向けにそのサービングスタックを最適化しました。これらのアップデートにより、使いやすさ、機能カバレッジ、パフォーマンスが大幅に向上し、CPUベースのインフラストラクチャ上で大規模言語モデル(LLM)をデプロイするコストと複雑さが軽減されました。

デプロイと機能有効化

Arm CPU上のvLLMは、すぐに使える使いやすさが向上し、モデルサポートが拡張されています。主要な有効化アップデートには以下が含まれます:

  • シンプルなインストール: プリビルドされたホイールとDockerイメージの利用可能性。
  • 拡張されたモデルサポート: GPT-OSS、Whisper、Qwen 3.5 / 3.6のサポート。
  • 新機能: チャンク済みプリフィル、プレフィックスキャッシング、INT8 W8A8およびINT8 W4A8推論のサポート。
  • 安定性: クラッシュ、精度、スレッド、CPU使用率に対処するバグ修正、およびPyTorchとUXLエコシステムとのより良い統合。

コアパフォーマンス最適化

パフォーマンスの向上は、GEMMカーネルにのみ焦点を当てるのではなく、推論スタック全体のボトルネックに対処することで達成されました。

mimallocを使用したメモリ割り当て

PyTorchのデフォルトであるglibcのmallocの使用は、KVキャッシュ管理とスケジューリングに必要な繰り返しテンソル割り当て中に、ページフォールトと競合が増加しました。vLLMは now mimalloc をArmベースのCPU上のPyTorchでのデフォルトアロケータとして有効にします。このキャッシュアロケータはマルチスレッドのプレッシャー下でより良くスケールし、Llama 3.1 8Bのオフラインスループットを2.3×向上させ、低同時実行シナリオでは最大7×の向上をもたらします。

同期とArm LSEアトミック

コア数が多い場合、OpenMPダイナミックスケジューリングでの競合により、以前はパフォーマンスが低下していました。プロファイリングの結果、gomp_iter_dynamic_next がロードリンク/ストア条件リトライループに依存していることが判明し、これが高いスレッド競合下で繰り返し失敗を引き起こしていました。

vLLMは、PyTorch内に**Arm Large System Extensions (LSE)**を利用するlibgompランタイムを構築することでこの問題に対処しました。LDADDALのようなハードウェアアトミック命令を使用することで、非効率的なリトライループを排除し、Llama 3.1 8Bのオフラインスループットを9%向上させ、低同時実行シナリオでのTime Per Output Token (TPOT)レイテンシを15%削減します。

Denseレイヤーのウェイトプリパック

毎回の呼び出しでフレームワークレイアウトからカーネルフレンドリーなフォーマットへのウェイト変換のオーバーヘッドをなくすため、vLLMはArmアーキテクチャ向けCompute Libraryによって加速された高速なoneDNNパスを有効にしました。これにより、BF16ウェイトはモデルウォームアップ中にパックされ、推論中に再利用できるようになり、TPOTレイテンシを60%削減し、低同時実行シナリオでのLlama 3.1 8Bオフラインスループットを16%向上させます。

最適化されたページドアテンション

以前、CPUのページドアテンションカーネルは、QKとPVの行列乗算およびソフトマックス指数関数の参照実装に依存していました。vLLMは次の方法でこれらのパスを最適化しました:

  • BFMMLA Advanced SIMD命令 を QK と PV パスに使用。
  • ベクトル化された3次多項式近似 を ソフトマックス指数関数 に使用。

これらの最適化により、ページドアテンションは最大4×高速化され、Llama 3.1 8Bのオフラインスループットが12%向上し、さらにArm CPU上でチャンク済みプリフィルとプレフィックスキャッシングのサポートが解放されました。

量子化パフォーマンス

INT8 W8A8 (8ビットウェイトとアクティベーション)

SVE128およびSVE256でのSMMLA(符号付きINT8行列乗算累積)命令を活用するoneDNN JITカーネルを使用して、vLLMは現在効率的なW8A8量子化をサポートしています。最適化されたBF16ベースラインと比較して、W8A8はスループットを最大88%向上させ、TPOTを45%削減し、TTFTを54%削減します。

INT8 W4A8 (4ビットウェイト、8ビットアクティベーション)

KleidiAI INT4マイクロカーネルによる加速により、W4A8はメモリ帯域幅の圧力をさらに軽減し、これは低同時実行かつメモリバウンドのシナリオで特に効果的です。W8A8ベースラインと比較して、W4A8はスループットを最大29%向上させ、TPOTを26%削減し、TTFTを18%削減します。

パフォーマンス向上のサマリー

2025年10月のBF16ベースラインと比較すると、これらの最適化の累積的な影響は大きいです:

構成 最大スループット向上 最大TPOT速上 最大TTFT速上
Optimized BF16 2.7× - -
INT8 W8A8 4.8× 5.7× -
INT8 W4A8 6.2× 7.8× 2.6×

これらの改善により、メモリ割り当てからランタイム同期、カーネルレベルの実行までのフルパスを最適化することで、vLLMはArm Neoverseベースのサーバー向けの本番準備完了した推論スタックとして確立されます。

Sources