ROCm 环境搭建避坑指南,Conda 与 Docker 的选择建议
Conda 与 Docker新手该如何选择部署方式刚拿到 AMD Instinct 系列显卡兴奋之余最让人头大的往往是环境搭建。很多从 NVIDIA 平台转过来的朋友第一反应就是“我的代码全是 CUDA 写的难道要推倒重来”其实大可不必焦虑ROCm 生态早已不是当年的“荒野”尤其是工具链的成熟让迁移和部署变得简单许多。但在动手写代码之前我们得先解决“在哪跑”的问题——是选熟悉的 Conda 虚拟环境还是直接上 Docker 容器对于新手而言Conda的优势在于交互友好它和你本地的 Python 开发习惯无缝衔接调试脚本、安装小依赖都很顺手。如果你只是想在单卡上做做实验、跑通 Hello WorldConda 是个不错的起点。但它的痛点也很明显系统级的 ROCm 驱动版本必须严格匹配一旦你升级了内核或者换了显卡驱动整个环境可能瞬间崩塌。更别提那些编译型的依赖库如 flash-attention在 Conda 里经常因为找不到正确的头文件路径而报错排查起来极其耗时。相比之下Docker虽然上手曲线稍陡却是生产环境和复杂项目的“定海神针”。AMD 官方提供的 ROCm Docker 镜像已经预装了所有底层驱动映射、编译器工具链以及经过验证的 PyTorch 版本。这意味着你完全隔离了宿主机的干扰无论宿主机怎么折腾容器内部的环境始终如一。特别是当你要复现 SGLang 或 LLaMA-Factory 这类对依赖极其敏感的大模型项目时Docker 能帮你避开 90% 以上的“在我机器上能跑”的玄学问题。我的建议很明确学习探索期可以用 Conda 试水但一旦涉及实际训练或推理部署请毫不犹豫地使用 Docker。避坑实录PyTorch 安装与环境变量那些事儿如果你坚持先用 Conda 体验一下那么恭喜你大概率会撞上依赖冲突的“欢迎仪式”。在安装 PyTorch ROCm 版时最常见的情况是 pip 默认去拉取 CUDA 版本的 wheel 包或者编译本地扩展时链接到了错误的库目录。这时候环境变量就是你的救命稻草。很多教程只告诉你pip install torch却忽略了显式指定平台的重要性。在构建任何涉及 GPU 加速的库之前务必在终端执行以下导出操作告诉编译系统我们身处 ROCm 世界exportROCM_PATH/opt/rocmexportHIP_VISIBLE_DEVICES0exportCMAKE_PREFIX_PATH$ROCM_PATH特别是在编译deepspeed或自定义算子时如果缺少ROCM_PATH的指引编译器往往会去/usr/local/cuda下寻找不存在的文件导致满屏的file not found错误。此外安装 PyTorch 时请务必使用官方指定的索引地址例如pip3installtorch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0注意版本号需与你宿主机安装的 ROCm 驱动版本严格对应如 6.0, 6.1 等。即便这样Conda 环境下仍可能遇到libamdhip64.so加载失败的问题这通常是因为动态库路径未加入LD_LIBRARY_PATH。与其在这些琐碎的链接问题上反复横跳不如看看下面这套经过验证的 Docker 方案真正实现开箱即用。开箱即用一套稳如老狗的 Dockerfile 实战为了让大家少走弯路我整理了一套基于 Ubuntu 22.04 和 ROCm 6.0 的 Dockerfile。它不仅包含了 PyTorch 的最新稳定版还预装了 SGLang 和 LLaMA-Factory 运行所需的基础组件甚至处理好了权限映射问题让你无需在容器内 sudo 也能操作文件。FROM rocm/pytorch:rocm6.0_ubuntu22.04_py3.10_pytorch_release_2.5.1 # 设置工作目录 WORKDIR /workspace # 避免交互式安装提示并更新源 ENV DEBIAN_FRONTENDnoninteractive RUN apt-get update apt-get install -y \ git \ vim \ wget \ libnuma-dev \ rm -rf /var/lib/apt/lists/* # 安装大模型常用依赖 # 注意flash-attn 在 ROCm 下可能需要特定参数编译这里先安装基础版 RUN pip3 install --no-cache-dir \ vllm \ sglang \ llama-factory \ transformers \ accelerate \ datasets # 配置环境变量确保容器内能正确识别 GPU ENV HSA_OVERRIDE_GFX_VERSION9.4.2 # 上述 GFX_VERSION 需根据实际显卡型号调整MI300X 通常为 9.4.2 # 创建非 root 用户以避免权限问题 (可选视安全策略而定) # 此处简化处理直接使用 root 以便新手快速上手文件操作 CMD [/bin/bash]保存为Dockerfile后构建镜像非常简单dockerbuild-trocm-stable-env.接下来是启动容器的关键命令。很多新手忽略了设备映射和共享内存大小导致容器内看不到显卡或多卡通信失败。请使用以下命令启动dockerrun--rm-it\--device/dev/kfd\--device/dev/dri\--group-add video\--ipchost\--shm-size 16G\-v$(pwd):/workspace\rocm-stable-env这里--device参数将宿主机的 KFD 和 DRI 设备透传给容器--group-add video确保当前用户有访问权限而--ipchost则是多卡分布式训练如使用 DeepSpeed ZeRO的必备选项否则极易出现通信死锁。挂载卷-v $(pwd):/workspace让你在本机编辑的代码能实时同步到容器中。进入容器后你可以直接运行python -c import torch; print(torch.cuda.is_available())注意在 ROCm 中 torch 依然沿用 cuda 接口名但底层调用的是 HIP若返回True且显示显卡型号恭喜你环境搭建大功告成。接下来无论是用 HIPify 迁移旧代码还是直接部署 SGLang 推理服务你都已经拥有了一个坚实、干净的起跑线。200小时GPU算力已就位快来领取https://marketing.csdn.net/questions/Q2604140858304426315?utm_sourceAIpaper