
从零搭建AMD Instinct GPU 上的 vLLM 推理环境手里拿到 AMD Instinct MI300X 这类加速卡想跑大模型推理第一道坎往往不是算法而是环境配置。ROCm 生态虽然进步飞快但细节上的“坑”依然不少。很多开发者卡在驱动版本不对、编译参数遗漏或者权限设置错误上导致服务根本起不来。今天我就把自己在 DevCloud 上从零搭建 ROCm 7.x PyTorch vLLM 全流程的实战经验梳理一遍重点聊聊那些文档里语焉不详、容易让人踩雷的关键步骤。系统底座与用户权限初始化在动手安装任何软件之前必须确保操作系统层面的基础环境干净且受控。我推荐使用 Ubuntu 22.04 LTS较新的内核对硬件调度支持更友好。拿到机器后的第一件事是检查当前用户是否具备 sudo 权限并将用户加入video和render用户组。这是后续 ROCm 驱动正常调用 GPU 硬件的前提缺了这一步后面所有操作都会报权限错误。执行以下命令完成用户组配置sudousermod-aGvideo,render$USER注意执行完后务必重启系统否则组权限不会生效。接下来是工具链的检查。ROCm 生态对编译器版本非常敏感GCC 11 或 Clang 15 是比较稳妥的选择。使用gcc --version和clang --version确认当前版本。如果系统默认版本过高如 GCC 13或过低建议通过update-alternatives进行切换避免后续编译 PyTorch 时出现奇怪的链接错误。此外CMake 版本建议在 3.20 以上Git 需保持最新以支持浅克隆大仓库。Python 环境方面强烈建议使用 Conda 创建独立的虚拟环境这能有效防止后续安装 PyTorch 时污染系统包或产生依赖冲突。ROCm 7.x 驱动安装与核心验证驱动是整个栈的基石。对于 AMD GPU 用户直接添加官方 ROCm 软件源是最可靠的安装方式切勿随意下载第三方打包的驱动。安装完成后不要急于测试深度学习框架先使用rocm-smi命令查看显卡状态。如果该命令能清晰列出所有 GPU 的温度、功耗、显存使用率以及当前的频率策略说明内核态驱动工作正常。rocm-smi若输出中包含类似Card0、GPU_0等详细信息且无报错则驱动层已通过初步检验。版本验证是关键一步。运行rocminfo可以获取详细的硬件架构信息确认系统识别到的 GPU 架构如gfx942对应 MI300 系列与你预期的型号一致。特别注意检查 HSA 代理状态确保没有报错。对于 ROCm 7.x 系列还需验证hipcc编译器是否可用尝试编译一个简单的 Hello World HIP 程序如果能成功输出且无链接错误则表明开发环境已就绪。这一步看似繁琐但能提前暴露 80% 以上的硬件识别问题。PyTorch 源码编译与架构指定虽然 PyTorch 提供了预编译的 ROCm 版本但在生产环境中为了获得最佳性能和对新算子的支持源码编译往往是必经之路。在激活 Conda 环境后首先安装构建依赖包括ninja、wheel以及特定版本的hipblaslt库。最关键的一步是设置环境变量PYTORCH_ROCM_ARCH。必须明确指定为你的显卡架构代码例如 MI300X 需指定为gfx942否则编译出的二进制文件可能无法在当前硬件上运行导致illegal instruction错误。exportPYTORCH_ROCM_ARCHgfx942exportMAX_JOBS32# 利用多核 CPU 加速编译pipinstallninja wheelgitclone--recursivehttps://github.com/pytorch/pytorch.gitcdpytorch python setup.pyinstall待 PyTorch 安装完毕通过python -c import torch; print(torch.cuda.is_available())进行快速验证在 ROCm 中通常也兼容此接口。随后进行 vLLM 的编译vLLM 对 Triton 编译器有强依赖需确保安装的 Triton 版本与当前 PyTorch 版本匹配。在执行pip install vllm时同样需要传入正确的HIP_PATH和架构参数确保其内部的 HIP 内核能被正确编译和优化。如果遇到链接器找不到 HIP 库的错误通常是因为LD_LIBRARY_PATH未正确包含 ROCm 的 lib 目录需在.bashrc中永久导出该路径。vLLM 启动与显存调优实战大模型推理最核心的瓶颈在于显存。vLLM 引入了 PagedAttention 技术极大地提升了显存利用率但在 AMD 平台上仍需精细配置。启动服务前需根据模型参数量估算显存需求。除了模型权重本身还要预留足够的空间用于 KV Cache。通过--gpu-memory-utilization参数可以控制 vLLM 占用显存的比例。在 ROCm 7.x 环境下建议将该值设定在0.90 至 0.92之间留出少量余量给系统开销防止 OOM内存溢出。针对显存碎片化问题可以启用--block-size参数调整内存块大小较小的 block size 能提高细粒度利用率但可能增加管理开销需根据实际业务场景的序列长度分布进行权衡。启动命令示例如下vllm serve meta-llama/Llama-3-8B-Instruct\--host0.0.0.0\--port8000\--tensor-parallel-size1\--gpu-memory-utilization0.92\--block-size16\--quantizationfp8若模型支持开启--quantization选项使用 FP8 量化不仅能减少显存占用还能显著提升推理速度。在 ROCm 环境下需确认量化算子是否已被后端完全支持。启动过程中密切观察日志输出一旦看到Uvicorn running on…字样说明服务已成功拉起。此时利用curl向/v1/completions接口发送测试数据重点关注返回的 JSON 结构是否完整以及首字延迟是否在可接受范围内。如果在测试中发现连接被重置大概率是显存不足导致进程崩溃需回头检查显存配置。200小时GPU算力已就位快来领取https://marketing.csdn.net/questions/Q2604140858304426315?utm_sourceAIpaper