618ZXW

[vLLM Learning] OpenVINOを使ったインストール

vLLMは、大規模言語モデルの推論を高速化するために設計されたフレームワークです。KVキャッシュにおけるメモリの無駄をほぼゼロに抑え、メモリ管理のボトルネック問題を解決します。

vLLM の中国語ドキュメントとチュートリアルについては、こちらをご覧ください → https://vllm.hyper.ai/

OpenVINO を搭載した vLLM は、vLLM のサポート対象モデルリスト <../models/supported_models> に記載されているすべての LLM モデルをサポートし、すべての x86-64 CPU で最適なモデルサービングを提供します(少なくとも AVX2 のサポートが必要です)。OpenVINO vLLM バックエンドは、以下の高度な vLLM 機能をサポートしています。

  • プレフィックスキャッシュ (--enable-prefix-caching)
  • チャンク事前入力 (--enable-chunked-prefill)

環境依存性

  • オペレーティングシステム: Linux
  • 命令セットアーキテクチャ(ISA)の依存関係:少なくともAVX2

Dockerfileを使い始める

docker build -f Dockerfile.openvino -t vllm-openvino-env . docker run -it --rm vllm-openvino-env

ソースコードからインストール

  • まずPythonをインストールします。例えばUbuntu 22.04では、次のコマンドを実行できます。
 sudo apt-get update -y sudo apt-get install python3
  • 次に、vLLM OpenVINO バックエンドの依存関係をインストールします。
 pip install --upgrade pip pip install -r requirements-build.txt --extra-index-url https://download.pytorch.org/whl/cpu
  • 最後に、OpenVINO バックエンドを使用して vLLM をインストールします。
 PIP_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu" VLLM_TARGET_DEVICE=openvino python -m pip install -v .

パフォーマンスのヒント

vLLM OpenVINO バックエンドは、次の環境変数を使用して動作を制御します。

  • VLLM_OPENVINO_KVCACHE_SPACE はKVキャッシュサイズを指定します(例:VLLM_OPENVINO_KVCACHE_SPACE=40 はKVキャッシュスペースが40GBであることを意味します)。設定値が大きいほど、vLLMはより多くのリクエストを並列処理できます。このパラメータは、ユーザーのハードウェア構成とメモリ管理モードに応じて設定する必要があります。
  • `VLLM_OPENVINO_CPU_KV_CACHE_PRECISION=u8` はKVキャッシュの精度を制御します。デフォルトでは、プラットフォームに応じてFP16またはBF16のいずれかが使用されます。
  • `VLLM_OPENVINO_ENABLE_QUANTIZED_WEIGHTS=ON` に設定すると、モデルのロードフェーズで U8 重み圧縮が有効になります。圧縮はデフォルトでは無効です。`optimum-cli` を使用して、エクスポート先のフォルダを `<model_id>` として渡すことで、異なる圧縮手法でモデルをエクスポートすることもできます。

TPOT/TTFTのレイテンシを改善するには、vLLMのチャンクプリフィル機能(--enable-chunked-prefill)を使用できます。実験結果に基づき、バッチサイズは256(--max-num-batched-tokens)が推奨されます。

OpenVINO の最も有名な構成は次のとおりです。

 VLLM_OPENVINO_KVCACHE_SPACE=100 VLLM_OPENVINO_CPU_KV_CACHE_PRECISION=u8 VLLM_OPENVINO_ENABLE_QUANTIZED_WEIGHTS=ON \ python3 vllm/benchmarks/benchmark_throughput.py --model meta-llama/Llama-2-7b-chat-hf --dataset vllm/benchmarks/ShareGPT_V3_unfiltered_cleaned_split.json --enable-chunked-prefill --max-num-batched-tokens 256

制限

  • LoRA サービスはサポートされていません。
  • 現在、LLM モデルのみがサポートされています。LLaVa およびエンコーダー/デコーダー モデルは、vLLM OpenVINO 統合ではまだ有効になっていません。
  • vLLM 統合では、テンソルとパイプラインの並列処理は有効になっていません。