PyTorch 篇
经典AI工具PyTorch。
在CUDA上用着非常痛快,但是ROCm版仅供Linux使用。
偶尔见到一个自行编译的教程,于是决定自己试一试。
步骤
- 安装python3.10+(已实测3.14),安装annaconda,安装Visual Studio(实际使用VS2026),git等工具
- 克隆TheRock仓库至本地
- 使用Command Prompt for VS,创建conda虚拟环境,按以下操作克隆pytorch仓库,生成
1 | conda create -n rocm python=3.14 -y |
- 注意重新编译前记得清理pytorch/build/CMakeCache.txt和vision,audio的build目录
- 然后生成的文件在rocm-output文件夹,打开真实python环境,依次安装rocm_sdk_core rocm_sdk_libraries rocm_sdk_devel rocm-*.tar.gz torch torchaudio torchvision
- 安装pytest,在external-build/pytorch目录下运行
python run_pytorch_smoke_tests.py --amdgpu-family gfx1150 - pytorch 2.11 更新:pytorch/third_party/build_bundled.py 118行分析分发许可证处,将分析失败的raise value error替换为return MIT或其他协议,以避免生成失败。这可能是由于setuptools的更新破坏了这部分的功能导致。
- 代码无改动但是部分生成失败需要重新生成时,可以临时注释掉therock/external-builds/pytorch/build_prod_wheels.py的force-reinstall,节省重新安装rocm全家桶的用时和硬盘损耗。
- pytorch 2.13 更新:checkout pyt 时,有可能遇到 gbk codec can’t decode,此时在pytorch/tools/amd_build/build_amd.py open函数添加参数 encoding=’utf-8’可以解决。
- 初次初始化时,pytorch\build\CMakeFiles\4.0.0\CMakeHIPCompiler.cmake 里的 CMAKE_HIP_COMPILER_ROCM_ROOT 等的路径的反斜杠竟然会被直接识别为转义符,需要手动替换为正斜杠。很sb。
- 你可能需要手动在虚拟环境安装 pip install ninja==1.11.0,并且禁用几行删除pypi ninja的build_prod_wheels代码。
- 需要手动构建 libuv 并添加一个指向它的系统变量。参考ci
- .conda\envs\rocm\Lib\site-packages_rocm_sdk_devel\lib\llvm\lib\clang\23\include__clang_cuda_math_forward_declares.h 和 __clang_hip_cmath.h里的 isgreater isunordered 等的定义会和msvc的cmath定义冲突,
建议使用MSVC v143(或者直接删掉这几行,后果自负)。然而MSVC v143会有其他报错…… - 或者先删掉这几行,编译成功后恢复rocm_sdk_devel,删除 pytorch\build\third_party\gloo 和 pytorch\build\lib\gloo.lib gloo_hip.lib,使用 MSVC v143 跑一遍,到报错为止,再删除 pytorch\build\lib\gloo.lib gloo_hip.lib,回到145再跑一遍,大概也许可以成功。
- pytorch\build\CMakeFiles\rules.ninja 里竟然会给 llvm-lib.exe 传入 qc 命令,但是windows环境不认这个,需要替换为
/out:。 - 另,2.11版本的许可证问题已被移除。
LM Studio ROCm 篇
经典AI一键式工具LM Studio
提供基于llama.cpp的runtime,CUDA版本使用痛快,ROCm版只给独显和Strix Halo,还是得自己折腾。
又是看到一份教程,开始自己折腾。
步骤
- 安装AMD-Software-PRO-Edition-For-HIP,大概对应CUDA SDK的东西
- 暂时移除系统路径中的gcc和LLVM,将HIP_PATH/bin目录(也就是C:\Program Files\AMD\ROCm\7.1\bin)加到系统路径,稍后使用此处的clang
- 安装Visual Studio(实际使用VS2026),git等工具
- 克隆llama.cpp至本地,checkout至当前ROCm runtime使用的tag或commit hash
- 使用Command Prompt for VS,运行以下命令行,编译,可能会提示缺少OpenSSL,似乎不影响,提示找不到rocm或hip则是使用的clang不对,用
where clang查看用的哪个
1 | cmake -S . -B build -G Ninja -DGPU_TARGETS=gfx1150 -DGGML_HIP=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release |
- 找到build/bin/ggml-hip.dll,复制至
C:\Users\USERNAME\.lmstudio\extensions\backends\llama.cpp-win-x86_64-amd-rocm-avx2-2.5.1,替换 - 打开backend-manifest.json,添加你刚才编译时的GPU_TARGET,保存,然后打开LM Studio使用此runtime。
- 选择模型时需要勾选“快速注意力”,否则闪退概率很大,实际上跑完一轮后也大概率直接掉加载,反正勉强能用