Windows下AMD显卡pytorch+rocm炼丹环境配置
pzqking
2026年03月06日 22:18

0.序言

曾几何时,A卡跑AI一度成为某种禁忌。时至今日,A卡不能炼丹现阶段依旧是某种“共识”。但在那没人关注的角落里,新型号A卡炼丹之路正悄然发生一场深远的技术变革。到目前为止就使用pytorch而言,Windows下新型号A卡已实现与N卡相近的方便程度。本文将逐步介绍现阶段Windows下新型号A卡pytorch+rocm炼丹环境的配置,并介绍部分使用方法。

1.设备要求

现阶段,ROCm7.2已支持Windows下直接部署pytorch环境。因此对设备的需求为支持ROCm7.2的A卡。官方文档详见:https://rocm.docs.amd.com/projects/install-on-windows/en/latest/reference/system-requirements.html

省流来讲,6800以上的6000系A卡理论上基本支持本方案(6600到6750XT可能支持),7000系与9000系基本全系支持本方案,上述显卡对应的制图卡同样支持。另一方面,StrixHalo的APU也支持本方案。考虑到300系或400系的APU里的890M和StrixHalo的8040S基本一样而后者也有官方支持,且更早版本中出现过对890M的官方支持,因此有一定的概率300系或400系APU也能够支持本方案。

不满足上述条件但支持DX12时,可以走DML,详见:windows下A卡、I卡跑AI的救星:DirectML炼丹指南​

2.搭建步骤

首先,下载相关软件包:

1.驱动程序安装包(目前实测26.2.2能支持本文功能,建议在下面手动搜索产品下载离线驱动包,新的StrixHalo APU可以蹭AI MAX+ 395的驱动,后续如果有新版可以选择当前产品的最新支持:https://www.amd.com/zh-cn/support/download/drivers.html

2.HIP运行库(可以走左上角选版本,下面HIP SDK download page进入协议界面,拉到底可以看到下载按钮):https://rocm.docs.amd.com/projects/install-on-windows/en/latest/install/install.html

3.(如果有集成且支持NPU的AMD APU)Windows下AMD NPU支持(下面“Install NPU Drivers”处,版本号大的是最新版,小的是稳定版,登录后即可领取下载链接):https://ryzenai.docs.amd.com/en/latest/inst.html

此后,先安装ROCm软件包:

这里可以能装多少选多少,HIP核心对应CUDA,HIP库理论上对标CUDNN和部分CUDA,HIP编译器理论上部分对标NVCC,这仨能勾就给勾上。此后,傻瓜式下一步至安装完成,重启。

此后安装NPU驱动(如果需要使用AMD APU且带了NPU的话),解压,进入文件夹,复制文件路径,以管理员身份执行命令文件夹中的npu_sw_installer.exe文件,等待执行完成。

最后,执行驱动安装包:

把下面AI捆绑包给勾上即可安装AI捆绑包,里面有comfyUI、LMstudio、ollama等AI软件,同时也包括了搭建torch+rocm环境所需的接口。需下载30至40GB的内容。傻瓜式下一步至完成后重启电脑,桌面隐藏任务栏内右键红色或蓝色AMD图标进入AMD Sofrware : Adrenalin Edition或AMD Sofrware : PRO Edition内,上方标签切换至“AI”选项卡,第二栏切换至“应用程序”选项卡,找到AI工具里的Pytorch:

点击创建,设置名称与环境位置即可完成搭建。

该环境将创建一个python解释器与一个虚拟环境,在前文创建时可设置环境目录,点击“创建”按钮下方的箭头可以找到python解释器的位置。该python解释器可自动调用虚拟环境,基本无需其他操作。因此,可以通过上述信息将虚拟环境或解释器录入vscode或pycharm等IDE中。同时也可以通过设置环境变量直接调用python解释器以使用。在对应环境中打开终端,复制创建时提供的命令(可以直接点下图里的复制代码):

粘贴至对应终端中并执行即可完成环境搭建:

3.使用方法

与CUDA版本的pytorch相近,可以使用torch.cuda.is_available()来验证是否识别到ROCm设备:

还可以通过torch.cuda.get_device_name()来验证对应位置是哪张卡(括号里填设备序号,此处python基础知识小讲堂,python列表元素编号从0开始,只有一张卡时这张卡就是0号卡,有俩卡就有0、1两个位置上有设备):

还可以通过torch.cuda.device_count()来确认有几张卡:

还可以通过torch.cuda.get_device_properties()来确认显卡信息,包括显存容量。以此类推,N卡的torch代码几乎不需要做太多的改动即可完成移植。

简单跑一下之前的项目,发现不仅调用核显,同时还调用NPU,显存消耗量与N卡大差不差: