スタートガイド
Red Hat AI Inference Server のスタートガイド
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AI Inference Server は、LLM でのサービングと推論を最適化するコンテナーイメージです。AI Inference Server を使用すると、コストを削減しながらパフォーマンスを向上させる方法でモデルをサービングおよび推論できます。
第1章 AI Inference Server について リンクのコピーリンクがクリップボードにコピーされました!
AI Inference Server は、アップストリームのオープンソースソフトウェアを基盤として、エンタープライズグレードの安定性とセキュリティーを提供します。AI Inference Server は、最先端の推論機能を提供するアップストリーム vLLM プロジェクト を活用します。
たとえば、AI Inference Server は、完全なバッチが蓄積されるまで待つのではなく、継続的なバッチ処理を使用して、リクエストが到着するとすぐに処理します。テンソル並列処理により、LLM ワークロードが複数の GPU に分散されます。これらの機能により、レイテンシーが短縮され、スループットが向上します。
推論モデルのコストを削減するために、AI Inference Server はページングされたアテンションを使用します。LLM は、ユーザーとの会話を理解するためにアテンションと呼ばれるメカニズムを使用します。通常、アテンションは大量のメモリーが使用され、その多くは無駄になっています。ページングアテンションは、オペレーティングシステムの仮想メモリーの動作と同様に、LLM にメモリーをプロビジョニングすることで、このメモリーの浪費に対処します。このアプローチではメモリーの消費量が少なくなり、コストが削減されます。
AI Inference Server によるコスト削減とパフォーマンス向上を確認するには、次の手順を実行します。
- AI Inference Server を使用したサービングおよび推論
- 主要なメトリクスを使用した Red Hat AI Inference Server の利点の検証
第2章 製品とバージョンの互換性 リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Red Hat AI Inference Server 3.2 でサポートされている製品バージョンを示しています。
製品 | サポート対象バージョン |
---|---|
Red Hat AI Inference Server | 3.2 |
vLLM core | v0.10.0 |
LLM Compressor (テクノロジープレビュー) | LLM Compressor は、Red Hat AI Inference Server 3.2.1 コンテナーイメージに同梱されていません。AI Inference Server で LLM Compressor を使用するには、以前の 3.2.0 コンテナーイメージをプルします。 |
第3章 NVIDIA CUDA AI アクセラレーターを使用した Podman によるサービングと推論 リンクのコピーリンクがクリップボードにコピーされました!
NVIDIA CUDA AI アクセラレーター上で実行される Podman と Red Hat AI Inference Server を使用して、大規模言語モデルのサービングおよび推論を行います。
前提条件
- Podman または Docker がインストールされている。
- sudo 権限のあるユーザーでログインする。
-
registry.redhat.io
にアクセスでき、ログインしてている。 - Hugging Face アカウントがあり、Hugging Face アクセストークンが生成されている。
データセンターグレードの NVIDIA AI アクセラレーターがインストールされた Linux サーバーにアクセスできる。
NVIDIA GPU の場合:
- NVIDIA ドライバーがインストールされている
- NVIDIA Container Toolkit がインストールされている
- システムに NVswitch を使用する NVIDIA GPU が複数ある場合は、Fabric Manager を起動するための root アクセスが割り当てられている。
アクセラレーターでサポートされている vLLM 量子化スキームの詳細は、Supported hardware を参照してください。
手順
サーバーホストでターミナルを開き、
registry.redhat.io
にログインします。podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、関連する NVIDIA CUDA イメージを取得します。
podman pull registry.redhat.io/rhaiis/vllm-cuda-rhel9:3.2.1
$ podman pull registry.redhat.io/rhaiis/vllm-cuda-rhel9:3.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムで SELinux が有効になっている場合は、デバイスアクセスを許可するように SELinux を設定します。
sudo setsebool -P container_use_devices 1
$ sudo setsebool -P container_use_devices 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ボリュームを作成してコンテナーにマウントします。コンテナーが使用できるようにコンテナーの権限を調整します。
mkdir -p rhaiis-cache
$ mkdir -p rhaiis-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod g+rwX rhaiis-cache
$ chmod g+rwX rhaiis-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HF_TOKEN
Hugging Face トークンを作成するか、private.env
ファイルに追加します。source コマンドでprivate.env
ファイルを読み込みます。echo "export HF_TOKEN=<your_HF_token>" > private.env
$ echo "export HF_TOKEN=<your_HF_token>" > private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source private.env
$ source private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AI Inference Server コンテナーイメージを起動します。
NVIDIA CUDA アクセラレーターの場合、ホストシステムに複数の GPU があり、NVSwitch を使用している場合は、NVIDIA Fabric Manager を起動します。システムで NVSwitch が使用されているかどうかを検出するには、まず
/proc/driver/nvidia-nvswitch/devices/
にファイルが存在するかどうかを確認してから NVIDIA Fabric Manager を起動します。NVIDIA Fabric Manager を起動するには root 権限が必要です。ls /proc/driver/nvidia-nvswitch/devices/
$ ls /proc/driver/nvidia-nvswitch/devices/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
0000:0c:09.0 0000:0c:0a.0 0000:0c:0b.0 0000:0c:0c.0 0000:0c:0d.0 0000:0c:0e.0
0000:0c:09.0 0000:0c:0a.0 0000:0c:0b.0 0000:0c:0c.0 0000:0c:0d.0 0000:0c:0e.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start nvidia-fabricmanager
$ systemctl start nvidia-fabricmanager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要NVIDIA Fabric Manager は、NVswitch を使用する複数の GPU を搭載したシステムにのみ必要です。詳細は、NVIDIA Server Architectures を参照してください。
次のコマンドを実行して、Red Hat AI Inference Server コンテナーがホスト上の NVIDIA GPU にアクセスできることを確認します。
podman run --rm -it \ --security-opt=label=disable \ --device nvidia.com/gpu=all \ nvcr.io/nvidia/cuda:12.4.1-base-ubi9 \ nvidia-smi
$ podman run --rm -it \ --security-opt=label=disable \ --device nvidia.com/gpu=all \ nvcr.io/nvidia/cuda:12.4.1-base-ubi9 \ nvidia-smi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーを起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- SELinux が有効になっているシステムに必要です。
--security-opt=label=disable
は、SELinux がボリュームマウント内のファイルを再ラベル付けするのを防ぎます。この引数を使用しない場合、コンテナーが正常に実行されない可能性があります。 - 2
- 共有メモリーに問題が発生する場合は、
--shm-size
を8GB
に増やしてください。 - 3
- ホスト UID をコンテナー内の vLLM プロセスの有効な UID にマッピングします。
--user=0
を渡すこともできますが、これは--userns
オプションよりも安全性が低くなります。--user=0
を設定すると、コンテナー内で vLLM が root として実行されます。 - 4
- Hugging Face API アクセストークン を使用して
HF_TOKEN
を設定してエクスポートします。 - 5
- SELinux が有効になっているシステムに必要です。Debian または Ubuntu オペレーティングシステムの場合、または SELinux なしで Docker を使用する場合は、
:Z
接尾辞は使用できません。 - 6
- AI Inference Server コンテナーを複数の GPU で実行する場合は、GPU の数に合わせて
--tensor-parallel-size
を設定します。
ターミナルの別のタブで、API を使用してモデルにリクエストを送信します。
curl -X POST -H "Content-Type: application/json" -d '{ "prompt": "What is the capital of France?", "max_tokens": 50 }' http://<your_server_ip>:8000/v1/completions | jq
curl -X POST -H "Content-Type: application/json" -d '{ "prompt": "What is the capital of France?", "max_tokens": 50 }' http://<your_server_ip>:8000/v1/completions | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 AMD ROCm AI アクセラレーターを使用した Podman によるサービングと推論 リンクのコピーリンクがクリップボードにコピーされました!
AMD ROCm AI アクセラレーター上で実行される Podman と Red Hat AI Inference Server を使用して、大規模言語モデルのサービングおよび推論を行います。
前提条件
- Podman または Docker がインストールされている。
- sudo 権限のあるユーザーでログインする。
-
registry.redhat.io
にアクセスでき、ログインしてている。 - Hugging Face アカウントがあり、Hugging Face アクセストークンが生成されている。
データセンターグレードの AMD ROCm AI アクセラレーターがインストールされた Linux サーバーにアクセスできる。
AMD GPU の場合:
アクセラレーターでサポートされている vLLM 量子化スキームの詳細は、Supported hardware を参照してください。
手順
サーバーホストでターミナルを開き、
registry.redhat.io
にログインします。podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、AMD ROCm イメージをプルします。
podman pull registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.2.1
$ podman pull registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow システムで SELinux が有効になっている場合は、デバイスアクセスを許可するように SELinux を設定します。
sudo setsebool -P container_use_devices 1
$ sudo setsebool -P container_use_devices 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ボリュームを作成してコンテナーにマウントします。コンテナーが使用できるようにコンテナーの権限を調整します。
mkdir -p rhaiis-cache
$ mkdir -p rhaiis-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod g+rwX rhaiis-cache
$ chmod g+rwX rhaiis-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HF_TOKEN
Hugging Face トークンを作成するか、private.env
ファイルに追加します。source コマンドでprivate.env
ファイルを読み込みます。echo "export HF_TOKEN=<your_HF_token>" > private.env
$ echo "export HF_TOKEN=<your_HF_token>" > private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source private.env
$ source private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AI Inference Server コンテナーイメージを起動します。
AMD ROCm アクセラレーターの場合:
amd-smi static -a
を使用して、コンテナーがホストシステムの GPU にアクセスできることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- GPU を使用するには、AMD システムのビデオグループとレンダリンググループの両方に属している必要があります。GPU にアクセスするには、
--group-add=keep-groups
で補助グループオプションをコンテナーに渡す必要があります。
コンテナーを起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ターミナルの別のタブで、API を使用してモデルにリクエストを送信します。
curl -X POST -H "Content-Type: application/json" -d '{ "prompt": "What is the capital of France?", "max_tokens": 50 }' http://<your_server_ip>:8000/v1/completions | jq
curl -X POST -H "Content-Type: application/json" -d '{ "prompt": "What is the capital of France?", "max_tokens": 50 }' http://<your_server_ip>:8000/v1/completions | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 Google TPU AI アクセラレーターを使用した Podman による言語モデルのサービングと推論 リンクのコピーリンクがクリップボードにコピーされました!
Google TPU AI アクセラレーターが利用可能な Google クラウド仮想マシンで、Podman または Docker と Red Hat AI Inference Server を使用して大規模言語モデルのサービングおよび推論を行います。
前提条件
Google TPU AI アクセラレーターが設定された Google Cloud TPU 仮想マシンにアクセスできる。詳細は以下を参照してください。
- Podman または Docker がインストールされている。
- sudo 権限のあるユーザーでログインする。
-
registry.redhat.io
イメージレジストリーにアクセスでき、ログインしている。 - Hugging Face アカウントがあり、Hugging Face アクセストークンが生成されている。
アクセラレーターでサポートされている vLLM 量子化スキームの詳細は、Supported hardware を参照してください。
手順
TPU サーバーホストでターミナルを開き、
registry.redhat.io
にログインします。podman login registry.redhat.io
$ podman login registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Red Hat AI Inference Server イメージをプルします。
podman pull registry.redhat.io/rhaiis/vllm-tpu-rhel9:3.2.1
$ podman pull registry.redhat.io/rhaiis/vllm-tpu-rhel9:3.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: ホストで TPU が使用可能であることを確認します。
Red Hat AI Inference Server コンテナーでシェルプロンプトを開きます。以下のコマンドを実行します。
podman run -it --net=host --privileged -e PJRT_DEVICE=TPU --rm --entrypoint /bin/bash registry.redhat.io/rhaiis/vllm-tpu-rhel9:3.2.1
$ podman run -it --net=host --privileged -e PJRT_DEVICE=TPU --rm --entrypoint /bin/bash registry.redhat.io/rhaiis/vllm-tpu-rhel9:3.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーシェルプロンプトで次の Python コードを実行して、システム TPU アクセスと基本操作を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シェルプロンプトを終了します。
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ボリュームを作成してコンテナーにマウントします。コンテナーが使用できるようにコンテナーの権限を調整します。
mkdir ./.cache/rhaiis
$ mkdir ./.cache/rhaiis
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod g+rwX ./.cache/rhaiis
$ chmod g+rwX ./.cache/rhaiis
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HF_TOKEN
Hugging Face トークンをprivate.env
ファイルに追加します。echo "export HF_TOKEN=<huggingface_token>" > private.env
$ echo "export HF_TOKEN=<huggingface_token>" > private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow HF_HOME
変数をprivate.env
ファイルに追加します。echo "export HF_HOME=./.cache/rhaiis" >> private.env
$ echo "export HF_HOME=./.cache/rhaiis" >> private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source コマンドで
private.env
ファイルを読み込みます。source private.env
$ source private.env
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AI Inference Server コンテナーイメージを起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- TPU の数に合わせて
--tensor-parallel-size
を設定します。
検証
AI Inference Server サーバーが起動していることを確認します。ターミナルで別のタブを開き、API を使用してモデルリクエストを作成します。
出力例
第6章 主要なメトリクスを使用した Red Hat AI Inference Server の利点の検証 リンクのコピーリンクがクリップボードにコピーされました!
AI Inference Server でサービングされる LLM モデルのパフォーマンスを評価するには、次のメトリクスを使用します。
- Time to first token (TTFT): 要求が送信されてから応答の最初のトークンが受信されるまでの時間。
- Time per output token (TPOT): 最初のトークンの後に各トークンの生成にかかる平均時間。
- レイテンシー: 完全な応答の生成に必要な合計時間。
- スループット: モデルがすべてのユーザーとリクエストを合わせた全体で同時に生成できる出力トークンの合計数。
AI Inference Server およびその他の推論サーバーがこれらのメトリクスに従ってどのように動作するかを示すベンチマークテストを実行するには、以下の手順を実行します。
前提条件
- AI Inference Server コンテナーイメージ
- GitHub アカウント
- Python 3.9 以降
手順
ホストシステムで、AI Inference Server を起動し、モデルをサービングします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 別のターミナルタブで、ベンチマークツールの依存関係をインストールします。
pip install vllm pandas datasets
$ pip install vllm pandas datasets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vLLM Git repository のクローンを作成します。
git clone https://github.com/vllm-project/vllm.git
$ git clone https://github.com/vllm-project/vllm.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./vllm/benchmarks/benchmark_serving.py
スクリプトを実行します。python vllm/benchmarks/benchmark_serving.py --backend vllm --model RedHatAI/Llama-3.2-1B-Instruct-FP8 --num-prompts 100 --dataset-name random --random-input 1024 --random-output 512 --port 8000
$ python vllm/benchmarks/benchmark_serving.py --backend vllm --model RedHatAI/Llama-3.2-1B-Instruct-FP8 --num-prompts 100 --dataset-name random --random-input 1024 --random-output 512 --port 8000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
結果は、主要なサーバーメトリクスをもとにした AI Inference Server のパフォーマンスを示しています。
このベンチマークのパラメーターを変更して、再度実行してみてください。バックエンドとしての vllm
が他のオプションとどのように比較されるかに注目してください。スループットは一貫して高くなり、レイテンシーは低くなるはずです。
-
--backend
の他のオプションは、tgi
、lmdeploy
、deepspeed-mii
、openai
、openai-chat
です。 -
--dataset-name
の他のオプションはsharegpt
、burstgpt
、sonnet
、random
、hf
です。
関連情報
- vLLM ドキュメント
- LLM Inference Performance Engineering: Best Practices、Mosaic AI Research 著。スループットやレイテンシーなどのメトリクスを解説しています。
第7章 トラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AI Inference Server 3.2.1 の次のトラブルシューティング情報では、モデルの読み込み、メモリー、モデルの応答品質、ネットワーク、および GPU ドライバーに関連する一般的な問題を説明します。一般的な問題に対する回避策 (ある場合) が説明されています。
vLLM で最も一般的な問題は、インストール、モデルの読み込み、メモリー管理、および GPU 通信などに関連するものです。ほとんどの問題は、正しく設定された環境を使用し、互換性のあるハードウェアとソフトウェアのバージョンを確保し、推奨の設定方法に従うことで解決できます。
問題が解決しない場合は、VLLM_LOGGING_LEVEL=DEBUG
をエクスポートしてデバッグログを有効にし、ログを確認してください。
export VLLM_LOGGING_LEVEL=DEBUG
$ export VLLM_LOGGING_LEVEL=DEBUG
7.1. モデル読み込みエラー リンクのコピーリンクがクリップボードにコピーされました!
ユーザー namespace 指定せずに Red Hat AI Inference Server コンテナーイメージを実行すると、認識されないモデルエラーが返されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ValueError: Unrecognized model in RedHatAI/Llama-3.2-1B-Instruct-FP8. Should have a model_type key in its config.json
ValueError: Unrecognized model in RedHatAI/Llama-3.2-1B-Instruct-FP8. Should have a model_type key in its config.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このエラーを解決するには、コンテナーが root ユーザーで実行されるように、Podman パラメーターとして
--userns=keep-id:uid=1001
を渡します。Red Hat AI Inference Server がモデルをダウンロードするときに、ダウンロードが失敗したり、停止したりすることがあります。モデルのダウンロードがハングしないようにするには、まず
huggingface-cli
を使用してモデルをダウンロードします。以下に例を示します。huggingface-cli download <MODEL_ID> --local-dir <DOWNLOAD_PATH>
$ huggingface-cli download <MODEL_ID> --local-dir <DOWNLOAD_PATH>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow モデルをサービングするときは、モデルが再度ダウンロードされないように、ローカルモデルパスを vLLM に渡します。
Red Hat AI Inference Server がディスクからモデルをロードすると、プロセスが停止することがあります。大規模なモデルはメモリーを消費し、メモリーが不足すると、RAM とディスク間でデータをスワップするため、システムの速度が低下します。ネットワークファイルシステムの速度が遅いか、使用可能なメモリーが不足すると、過剰なスワップが発生する可能性があります。これは、ファイルシステムがクラスターノード間で共有されているクラスターで発生する可能性があります。
可能な場合は、モデルをローカルディスクに保存して、モデルの読み込み時の速度が低下しないようにします。システムに十分な CPU メモリーがあることを確認してください。
システムにモデルを処理するのに十分な CPU 容量があることを確認してください。
場合によっては、Red Hat AI Inference Server がモデルの検査に失敗することがあります。エラーはログに報告されます。以下に例を示します。
#... File "vllm/model_executor/models/registry.py", line xxx, in \_raise_for_unsupported raise ValueError( ValueError: Model architectures [''] failed to be inspected. Please check the logs for more details.
#... File "vllm/model_executor/models/registry.py", line xxx, in \_raise_for_unsupported raise ValueError( ValueError: Model architectures [''] failed to be inspected. Please check the logs for more details.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このエラーは、vLLM がモデルファイルのインポートに失敗した場合に発生します。これは通常、vLLM ビルド内の依存関係が欠落しているか、バイナリーが古くなっていることに関連しています。
モデルのアーキテクチャーによってはサポートされないものがあります。検証済みモデル のリストを参照してください。たとえば、次のエラーは、使用しようとしているモデルがサポートされていないことを示しています。
Traceback (most recent call last): #... File "vllm/model_executor/models/registry.py", line xxx, in inspect_model_cls for arch in architectures: TypeError: 'NoneType' object is not iterable
Traceback (most recent call last): #... File "vllm/model_executor/models/registry.py", line xxx, in inspect_model_cls for arch in architectures: TypeError: 'NoneType' object is not iterable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #... File "vllm/model_executor/models/registry.py", line xxx, in \_raise_for_unsupported raise ValueError( ValueError: Model architectures [''] are not supported for now. Supported architectures: #...
#... File "vllm/model_executor/models/registry.py", line xxx, in \_raise_for_unsupported raise ValueError( ValueError: Model architectures [''] are not supported for now. Supported architectures: #...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記DeepSeekV2VL
などの一部のアーキテクチャーでは、--hf_overrides
フラグを使用してアーキテクチャーを明示的に指定する必要があります。次に例を示します。--hf_overrides '{\"architectures\": [\"DeepseekVLV2ForCausalLM\"]}
--hf_overrides '{\"architectures\": [\"DeepseekVLV2ForCausalLM\"]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 8 ビット浮動小数点 (FP8) モデルをロードすると、特定のハードウェアでランタイムエラーが発生することがあります。FP8 には GPU ハードウェアアクセラレーションが必要です。
deepseek-r1
などの FP8 モデルや、F8_E4M3
テンソルタイプでタグ付けされたモデルをロードすると、エラーが発生します。以下に例を示します。triton.compiler.errors.CompilationError: at 1:0: def \_per_token_group_quant_fp8( \^ ValueError("type fp8e4nv not supported in this architecture. The supported fp8 dtypes are ('fp8e4b15', 'fp8e5')") [rank0]:[W502 11:12:56.323757996 ProcessGroupNCCL.cpp:1496] Warning: WARNING: destroy_process_group() was not called before program exit, which can leak resources. For more info, please see https://pytorch.org/docs/stable/distributed.html#shutdown (function operator())
triton.compiler.errors.CompilationError: at 1:0: def \_per_token_group_quant_fp8( \^ ValueError("type fp8e4nv not supported in this architecture. The supported fp8 dtypes are ('fp8e4b15', 'fp8e5')") [rank0]:[W502 11:12:56.323757996 ProcessGroupNCCL.cpp:1496] Warning: WARNING: destroy_process_group() was not called before program exit, which can leak resources. For more info, please see https://pytorch.org/docs/stable/distributed.html#shutdown (function operator())
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記特定のアクセラレーターがサポートされていることを確認するには、スタートガイド を参照してください。現在 FP8 モデルに対応するアクセラレーターは次のとおりです。
モデルをサービングするときに、ホストシステムに関連するランタイムエラーが発生することがあります。たとえば、以下のようなエラーがログに表示される場合があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この問題は、
vllm
の起動時に--shm-size=2g
引数を渡すことで回避できます。
7.2. メモリーの最適化 リンクのコピーリンクがクリップボードにコピーされました!
- モデルが大きすぎて単一の GPU で実行できない場合は、メモリー不足 (OOM) エラーが発生します。量子化、テンソル並列化、精度の低下などのメモリー最適化オプションを使用して、メモリー消費を削減します。詳細は、Conserving memory を参照してください。
7.3. 生成されたモデルの応答品質 リンクのコピーリンクがクリップボードにコピーされました!
シナリオによっては、更新後に生成されたモデル応答の品質が低下する可能性があります。
新しいバージョンでは、デフォルトのサンプリングパラメーターソースが更新されました。vLLM バージョン 0.8.4 以降の場合、デフォルトのサンプリングパラメーターは、モデル作成者によって提供される
generation_config.json
ファイルから取得されます。ほとんどの場合、モデル作成者はどのサンプリングパラメーターがモデルに最適かを把握している可能性が高いため、このパラメーターにより応答の品質が向上するはずです。ただし、場合によっては、モデル作成者が提供するデフォルトが原因でパフォーマンスが低下する可能性があります。この問題が発生した場合は、
--generation-config vllm
サーバー引数を使用して、古いデフォルトでモデルをサービングしてみてください。重要--generation-config vllm
サーバー引数を適用することでモデル出力が改善される場合は、引き続き vLLM のデフォルトを使用し、Hugging Face のモデル作成者にデフォルトのgeneration_config.json
を更新して、より品質の高い世代を生成するように依頼してください。
7.4. CUDA アクセラレーターエラー リンクのコピーリンクがクリップボードにコピーされました!
CUDA アクセラレーターを使用してモデルを実行すると
self.graph.replay()
エラーが発生する可能性があります。vLLM がクラッシュし、エラートレースが
vllm/worker/model_runner.py
モジュールのself.graph.replay()
メソッドの付近でエラーが発生した場合、CUDAGraph
クラス内で発生する CUDA エラーである可能性が最も高くなります。エラーの原因となる特定の CUDA 操作を特定するには、
vllm
コマンドラインに--enforce-eager
サーバー引数を追加してCUDAGraph
の最適化を無効にし、問題のある CUDA 操作を分離します。ハードウェアまたはドライバーの設定が誤っているために、アクセラレーターと CPU の通信に問題が発生する可能性があります。
一部の NVIDIA GPU タイプが搭載されたマルチ GPU システムでは、NVIDIA Fabric Manager が必要です。
nvidia-fabricmanager
パッケージおよび関連する systemd サービスがインストールされていないか、パッケージが実行されていない可能性があります。diagnostic Python script を実行して、NVIDIA Collective Communications Library (NCCL) と Gloo ライブラリーコンポーネントが正しく通信しているかどうかを確認します。
NVIDIA システムでは、次のコマンドを実行して Fabric Manager のステータスを確認します。
systemctl status nvidia-fabricmanager
$ systemctl status nvidia-fabricmanager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正常に設定されたシステムでは、サービスはアクティブになり、エラーなく実行されるはずです。
-
テンソル並列処理を有効にして vLLM を実行し、NVIDIA マルチインスタンス GPU (MIG) ハードウェアで
--tensor-parallel-size
を 1 より大きく設定すると、初期モデルの読み込みフェーズまたはシェイプチェックフェーズでAssertionError
が発生します。これは通常、vLLM を起動したときに最初に発生するエラーです。
7.5. ネットワークエラー リンクのコピーリンクがクリップボードにコピーされました!
複雑なネットワーク設定ではネットワークエラーが発生する可能性があります。
ネットワークの問題のトラブルシューティングを行うには、以下のように誤った IP アドレスが表示されている DEBUG ステートメントのログを検索します。
DEBUG 06-10 21:32:17 parallel_state.py:88] world_size=8 rank=0 local_rank=0 distributed_init_method=tcp://<incorrect_ip_address>:54641 backend=nccl
DEBUG 06-10 21:32:17 parallel_state.py:88] world_size=8 rank=0 local_rank=0 distributed_init_method=tcp://<incorrect_ip_address>:54641 backend=nccl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この問題を修正するには、以下のように
VLLM_HOST_IP
環境変数で正しい IP アドレスを設定します。export VLLM_HOST_IP=<correct_ip_address>
$ export VLLM_HOST_IP=<correct_ip_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NCCL および Gloo の IP アドレスに関連付けられたネットワークインターフェイスを指定します。
export NCCL_SOCKET_IFNAME=<your_network_interface>
$ export NCCL_SOCKET_IFNAME=<your_network_interface>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export GLOO_SOCKET_IFNAME=<your_network_interface>
$ export GLOO_SOCKET_IFNAME=<your_network_interface>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6. Python マルチプロセスエラー リンクのコピーリンクがクリップボードにコピーされました!
Python マルチプロセスの警告またはランタイムエラーが発生する可能性があります。これは、コードが Python マルチプロセス用に適切に構造化されていない場合に発生する可能性があります。以下は、コンソールの警告の例です。
WARNING 12-11 14:50:37 multiproc_worker_utils.py:281] CUDA was previously initialized. We must use the `spawn` multiprocessing start method. Setting VLLM_WORKER_MULTIPROC_METHOD to 'spawn'. See https://docs.vllm.ai/en/latest/getting_started/troubleshooting.html#python-multiprocessing for more information.
WARNING 12-11 14:50:37 multiproc_worker_utils.py:281] CUDA was previously initialized. We must use the `spawn` multiprocessing start method. Setting VLLM_WORKER_MULTIPROC_METHOD to 'spawn'. See https://docs.vllm.ai/en/latest/getting_started/troubleshooting.html#python-multiprocessing for more information.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下は Python ランタイムエラーの例です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ランタイムエラーを解決するには、Python コードを更新し、
if__name__ = "__main__":
ブロックの背後でvllm
の使用を保護します。以下に例を示します。if __name__ = "__main__": import vllm llm = vllm.LLM(...)
if __name__ = "__main__": import vllm llm = vllm.LLM(...)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7. GPU ドライバーまたはデバイスパススルーの問題 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AI Inference Server コンテナーイメージを実行すると、デバイスパススルーエラーが GPU ドライバーによって発生しているのか、NVIDIA Container Toolkit などのツールによって発生しているのか不明な場合があります。
ホストマシンにインストールされている NVIDIA Container Toolkit がホスト GPU を認識できることを確認します。
nvidia-ctk cdi list
$ nvidia-ctk cdi list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NVIDIA アクセラレーター設定がホストマシンに作成されていることを確認します。
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
$ sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Red Hat AI Inference Server コンテナーがホスト上の NVIDIA GPU にアクセスできることを確認します。
podman run --rm -it --security-opt=label=disable --device nvidia.com/gpu=all nvcr.io/nvidia/cuda:12.4.1-base-ubi9 nvidia-smi
$ podman run --rm -it --security-opt=label=disable --device nvidia.com/gpu=all nvcr.io/nvidia/cuda:12.4.1-base-ubi9 nvidia-smi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow