コンテンツにスキップ

推論パフォーマンス調整の概要

概要

vLLM や SGLang などのオープンソース推論エンジンは優れた推論性能を提供しますが、調整済みのデプロイと未調整のデプロイの性能差は、想像以上に大きい場合があります。最も有効な検証方法は、実際のトラフィックを使って対象デバイスでベンチマークを実行することです。一方で、私たちは推論エンジン、GPU、モデル、設定パラメーターの組み合わせを変えて多くの実験を行っています。そこから得られた一般的な知見は、詳細な最適化を始める際の参考になります。

実験から得られた知見

以下の知見は現在の実験範囲に基づいており、追加のテストやコミュニティの進展に応じて更新・補足される可能性があります。特定の GPU 上の特定モデルに対する最適化手法と結論は、それぞれの実験資料を参照してください。

推論エンジン

推論エンジンの選択は重要です。推論の最適化では、モデル、量子化方式、GPU などのシナリオごとに、エンジン固有の細かな調整が必要になることがよくあります。そのため、対象のシナリオにエンジンが最適化されているかどうかで大きな差が生じます。たとえば、A100 GPU 上の gpt-oss-20b は、vLLM では SGLang/TensorRT-LLM の十倍以上の速度で動作します(詳細)。ただし、あるエンジンが常に他より優れているとは言えません。実験では vLLM、SGLang、TensorRT-LLM のいずれも、特定のシナリオで最高性能を示しました。

  1. vLLM は使いやすさ、互換性、幅広く迅速なモデル対応が特長です。安定して高い推論性能を発揮し、さまざまなシナリオでバランスの良い、信頼できる選択肢となります。
  2. SGLang も使いやすく、競争力のある推論性能を備えています。互換性と対応モデルの広さでは vLLM にやや劣るものの、新しいモデルへの対応速度はトップクラスです。特に投機的デコーディングと、Hopper GPU 上での大規模 FP8 MoE モデルの実行に優れています。
  3. TensorRT-LLM は推論性能を高度に最適化しており、一部の実験では非常に優れた結果を示しました。ただし、ベンダーとの結び付きが強く、新しいモデルへの対応も比較的遅いため、適用範囲はより限定的です。

量子化

  1. 量子化はスループットの最大化に重要な手法です。
  2. 重みとアクティベーションの量子化は、レイテンシーの短縮にも役立ちます。

投機的デコーディング

投機的デコーディングは、レイテンシーの最適化に有効です。ただし、バッチサイズが大きくなると効果が大幅に低下するため、スループットの改善には適していません。

並列化戦略

複数 GPU による分散推論では、並列化戦略が重要です。

カーネル

vLLM/SGLang は、通常、ハードウェア環境に応じて適切なデフォルトを選択します。多くの場合、デフォルトのアテンションバックエンドが最適です。DeepGEMM などのカーネル最適化は、特定の精度や GPU を対象とします。通常はデフォルトで有効ですが、無効にするほうが適切な場合もあります。

汎用性

性能の良いデプロイ設定は、通常、入力シーケンス長(ISL)と出力シーケンス長(OSL)が異なっても性能を改善しますが、改善率は大きく変わることがあります。

さらに詳細な調整

一部のパラメーターは、ISL/OSL、データ中のプレフィックスの繰り返し、並列度など、実際の推論リクエストの特性に応じた調整が必要です。具体的には次の項目があります:

  1. 最大バッチサイズ(並列度に関連)
  2. スケジューリング設定(API サーバーのスケールアウト [vLLM]、非同期スケジューリング [vLLM]、スケジュールの保守性 [SGLang]、スケジュールポリシー [SGLang] など。さまざまな要因に関連)
  3. 拡張 KV キャッシュ(シーケンス長とプレフィックスの繰り返しに関連)
  4. CUDA graph(並列度に関連)
  5. Torch compile(モデルアーキテクチャと並列度に関連)