skip to content

Search

在 AMD APU 上部署 vLLM 推理

4 min read

拿到了一台 Ryzen AI Max+ 395,需要在上面部署 vLLM 以便运行一些模型服务。

# deploy
# vllm
Not in series

Background

在开始工作之前,先做了一些背景调研。

  1. APU 是 AMD 推出的一种把 CPU 和 GPU 做在同一颗芯片上的处理器,显存和内存共享,可以在一些小型工作站上跑模型。

  2. ROCm 是 AMD 推出的类似于 NVIDIA CUDA 的计算平台,官方文档里扬言

    vLLM: Full support.

    但至于部署的时候遇到的奇奇怪怪的环境问题…

Start up

我参考了 AMD 和 vLLM 的官方文档:

事实上,知乎上已经有了前人的失败经验。运气很好,我折磨了几个小时最终成功了。

本机使用的操作系统是 Ubuntu 24.04。

vLLM 官方要求 ROCm 版本必须是 7.0.2 及以上,执行amd-smi后发现目前装的是 7.0.1,遂根据教程卸载后重装了 7.1.1 这个稳定版本。

有个奇怪的点是文档里提供的amd-ttm好像没法正常用,但后续似乎没啥影响,就先不管了。

然后就是用 Docker 拉取并运行镜像,这些 ROCm 平台上的 vLLM 镜像似乎都是 AMD 官方在维护的(这为了自家的生态也是很努力了,另外 vLLM 官方也建议 ROCm 平台在容器内运行模型推理),我第一次用的是稳定版本的rocm/vllm:latest,然而并没法用,在容器内试图启动 vLLM 提供的 OpenAI-Compatible Server 不管加上什么限制的环境变量都会报错,事实上这个镜像已经是一个月前构建的了。

好在 AMD 还维护了一个每日构建的版本rocm/vllm-dev:nightly,遂尝试:

sudo docker run -it --rm \
--network=host \
--group-add=video \
--ipc=host \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--device /dev/kfd \
--device /dev/dri \
-v /home/ubuntu/vllm/models:/app/models \
-e HF_HOME="/app/models" \
rocm/vllm-dev:nightly

这次终于成功了,执行

vllm serve Qwen/Qwen2.5-1.5B-Instruct

看到服务器启动的日志给我激动坏了,再执行

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen/Qwen2.5-1.5B-Instruct",
        "prompt": "San Francisco is a",
        "max_tokens": 7,
        "temperature": 0
    }'

得到了正常的输出,拿下!

Postscript

  • ToDo: 交给我机器的老师让我去部署一个可以支持同声传译的服务。

和朋友吐槽在这逆天 AMD APU 上用 ROCm 后端跑 vLLM 推理,配环境太折磨,得到回复:

评价是比ascend好 :tieba_laugh:

xx,你崛起罢!