第5章 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次のコマンドを実行して、AMD ROCm イメージをプルします。
$ podman pull registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.2.5システムで SELinux が有効になっている場合は、デバイスアクセスを許可するように SELinux を設定します。
$ sudo setsebool -P container_use_devices 1ボリュームを作成してコンテナーにマウントします。コンテナーが使用できるようにコンテナーの権限を調整します。
$ mkdir -p rhaiis-cache$ chmod g+rwX rhaiis-cacheHF_TOKENHugging Face トークンを作成するか、private.envファイルに追加します。source コマンドでprivate.envファイルを読み込みます。$ echo "export HF_TOKEN=<your_HF_token>" > private.env$ source private.envAI Inference Server コンテナーイメージを起動します。
AMD ROCm アクセラレーターの場合:
amd-smi static -aを使用して、コンテナーがホストシステムの GPU にアクセスできることを確認します。$ podman run -ti --rm --pull=newer \ --security-opt=label=disable \ --device=/dev/kfd --device=/dev/dri \ --group-add keep-groups \1 --entrypoint="" \ registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.2.5 \ amd-smi static -a- 1
- GPU を使用するには、AMD システムのビデオグループとレンダリンググループの両方に属している必要があります。GPU にアクセスするには、
--group-add=keep-groupsで補助グループオプションをコンテナーに渡す必要があります。
コンテナーを起動します。
podman run --rm -it \ --device /dev/kfd --device /dev/dri \ --security-opt=label=disable \1 --group-add keep-groups \ --shm-size=4GB -p 8000:8000 \2 --env "HUGGING_FACE_HUB_TOKEN=$HF_TOKEN" \ --env "HF_HUB_OFFLINE=0" \ -v ./rhaiis-cache:/opt/app-root/src/.cache \ registry.redhat.io/rhaiis/vllm-rocm-rhel9:3.2.5 \ --model RedHatAI/Llama-3.2-1B-Instruct-FP8 \ --tensor-parallel-size 23
ターミナルの別のタブで、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出力例
{ "id": "cmpl-b84aeda1d5a4485c9cb9ed4a13072fca", "object": "text_completion", "created": 1746555421, "model": "RedHatAI/Llama-3.2-1B-Instruct-FP8", "choices": [ { "index": 0, "text": " Paris.\nThe capital of France is Paris.", "logprobs": null, "finish_reason": "stop", "stop_reason": null, "prompt_logprobs": null } ], "usage": { "prompt_tokens": 8, "total_tokens": 18, "completion_tokens": 10, "prompt_tokens_details": null } }