云端实例选型:别让硬件配置成为第一道坎

在 DevCloud 上启动 ROCm 推理服务,第一步往往不是敲代码,而是选对实例。很多新手容易陷入“显存越大越好”的误区,却忽略了 CPU 与内存的配比平衡。对于运行 vLLM 这类大模型推理框架,GPU 固然是核心,但数据预处理、张量并行通信以及操作系统本身的开销都需要充足的 CPU 算力和系统内存支撑。

根据实战经验,推荐选择搭载 AMD Instinct MI250 或 MI300 系列加速卡的实例。在 CPU 与内存配比上,建议遵循 1:41:8 的原则。例如,若实例配备 8 核 CPU,系统内存至少应配置 32GB,理想状态是 64GB。这是因为在模型加载阶段,权重文件会先读入系统内存再转移至显存,若系统内存捉襟见肘,极易触发 OOM(内存溢出)导致实例崩溃。此外,DevCloud 的部分高性能实例支持 RDMA 网络,若计划进行多卡张量并行(Tensor Parallelism)部署,务必勾选支持高速互联的机型,这能显著降低卡间通信延迟,避免吞吐量被网络带宽卡脖子。

一键部署 ROCm 7.x:告别手动编译噩梦

选定实例后,接下来是环境搭建。传统方式下,手动添加软件源、下载驱动、核对内核版本不仅繁琐,还容易因步骤遗漏导致“依赖地狱”。在 DevCloud 环境中,我们可以利用预置的初始化脚本实现 ROCm 7.x 的秒级安装。

登录实例后,首先执行以下脚本自动完成驱动安装与环境变量配置。该脚本会自动检测当前内核版本,拉取匹配的 ROCm 7.x 官方源,并安装包括 hip-runtimerocblasmiopen 在内的核心组件:

#!/bin/bash
# rocml_install.sh - 适用于 Ubuntu 22.04+ 的 ROCm 7.x 一键安装脚本

echo ">>> 开始检查系统依赖..."
sudo apt-get update && sudo apt-get install -y wget gnupg2 curl

echo ">>> 添加 ROCm 官方软件源..."
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | sudo apt-key add -
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/7.0/ jammy main' | sudo tee /etc/apt/sources.list.d/rocm.list

echo ">>> 安装 ROCm 7.x 核心组件..."
sudo apt-get update
sudo apt-get install -y rocm-dev hip-runtime-amd miopen-hip rocblas

echo ">>> 配置用户组权限..."
sudo usermod -aG video,render $USER

echo ">>> 设置环境变量..."
cat <<EOF >> ~/.bashrc
export PATH=/opt/rocm/bin:\$PATH
export LD_LIBRARY_PATH=/opt/rocm/lib:\$LD_LIBRARY_PATH
export HSA_OVERRIDE_GFX_VERSION=9.4.2  # 根据实际显卡架构调整,MI250 通常为 9.4.2
EOF

source ~/.bashrc
echo ">>> 安装完成!请重启实例或重新登录以使组权限生效。"

脚本执行完毕后,无需重启整个系统(除非内核模块未加载),只需重新登录终端或执行 newgrp video 即可生效。验证安装是否成功,直接运行 rocm-smi。如果能看到清晰的 GPU 列表、温度、功耗及显存使用率,说明驱动层已正常工作。接着运行 rocminfo 确认架构识别无误,这一步能规避掉 90% 因架构不匹配导致的后续编译错误。

网络防火墙配置:打通外部访问的“最后一公里”

环境就绪后,很多开发者会发现本地能启动服务,但外部无法连接。这通常是因为云平台的网络安全组(Security Group)或实例内部的防火墙阻挡了端口。vLLM 默认监听 8000 端口,必须显式放行才能对外提供服务。

在 DevCloud 控制台找到你的实例详情页,进入“安全组”或“防火墙”设置标签页。添加入站规则(Inbound Rule):

  • 协议类型:TCP
  • 端口范围:8000
  • 授权对象:0.0.0.0/0(若仅特定 IP 访问,建议填写具体 IP 以增强安全性)

除了云平台层面的设置,还需检查实例内部的 ufwiptables 状态。在终端执行以下命令确保内部防火墙放行:

# 检查 ufw 状态
sudo ufw status

# 若处于 active 状态,放行 8000 端口
sudo ufw allow 8000/tcp

# 验证端口监听情况
netstat -tulpn | grep 8000

完成上述两步后,建议在本地终端使用 curl <实例公网 IP>:8000 进行测试。若返回 HTML 报错页或连接超时,请再次核对云控制台的安全组规则是否已应用生效。

构建可复用镜像:Dockerfile 最佳实践

为了将这套环境固化下来,方便在其他云平台快速复用或进行 CI/CD 流水线集成,我们将上述步骤封装为一个 Dockerfile。该镜像基于 Ubuntu 22.04,预装了 ROCm 7.x 驱动基础库(注:容器内通常需宿主机透传驱动,此处主要配置用户态工具链与 PyTorch/vLLM 运行环境),并做好了网络与权限优化。

FROM ubuntu:22.04

# 避免交互式安装提示
ENV DEBIAN_FRONTEND=noninteractive

# 安装基础依赖
RUN apt-get update && apt-get install -y \
    wget gnupg2 curl git cmake ninja-build \
    python3 python3-pip python3-venv \
    && rm -rf /var/lib/apt/lists/*

# 添加 ROCm 源并安装运行时库 (容器内需宿主机有驱动)
RUN wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | apt-key add - \
    && echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/7.0/ jammy main' > /etc/apt/sources.list.d/rocm.list \
    && apt-get update \
    && apt-get install -y rocm-libs miopen-hip rocblas hip-runtime-amd \
    && rm -rf /var/lib/apt/lists/*

# 设置环境变量
ENV PATH=/opt/rocm/bin:$PATH \
    LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATH \
    HSA_OVERRIDE_GFX_VERSION=9.4.2 \
    PYTHONUNBUFFERED=1

# 创建非 root 用户以避免权限问题
RUN useradd -m -u 1000 devuser && \
    usermod -aG video,render devuser

# 安装 PyTorch (ROCm 版) 和 vLLM
# 注意:生产环境建议指定具体版本号以保证稳定性
RUN pip3 install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.0 \
    && pip3 install --no-cache-dir vllm

# 暴露 vLLM 默认端口
EXPOSE 8000

# 设置工作目录
WORKDIR /workspace

USER devuser

ENTRYPOINT ["vllm", "serve"]

构建该镜像后,你可以通过 docker run --device /dev/kfd --device /dev/dri --group-add video --ipc=host --shm-size 16g -p 8000:8000 <镜像名> 命令在任何支持 ROCm 的 Linux 宿主机上瞬间拉起服务。这种容器化方案不仅解决了环境一致性问题,也让从开发到生产的迁移变得像复制粘贴一样简单。

🎁 开发者“神装”补给站|CSDN 6 月宠粉专属福利
工欲善其事,必先利其器。为了帮大家扫清 AI 实践的障碍,CSDN AI 开发者计划,在文末为大家准备了一份「AI 开发者能量包」!
在这里插入图片描述

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐