第 5 章 使用 AMD ROCm AI Accelerators 使用 Podman 提供和推断
使用 Podman 和在 AMD ROCm AI Accelerator 上运行的 Red Hat AI Inference Server 提供大型语言模型。
先决条件
- 已安装 Podman 或 Docker。
- 您以具有 sudo 访问权限的用户身份登录。
-
您可以访问
registry.redhat.io并已登录。 - 您有一个 Hugging Face 帐户,并生成了一个 Hugging Face 访问令牌。
您可以访问安装了数据中心等级 AMD ROCm AI Accelerators 的 Linux 服务器。
对于 AMD GPU:
有关加速器支持的 vLLM 量化方案的更多信息,请参阅 支持的硬件。
流程
在服务器主机上打开一个终端,并登录到
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-cache创建或附加
HF_TOKENHugging Face 令牌到private.env文件。提供private.env文件。$ echo "export HF_TOKEN=<your_HF_token>" > private.env$ source private.env启动 AI 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
- 您必须属于 AMD 系统上的视频和呈现组才能使用 GPU。要访问 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 } }