Windows 平台 Ollama AMD GPU 一键编译指南:基于 ROCm 7.1 的自动化实战

张开发
2026/6/15 4:09:50 15 分钟阅读

分享文章

Windows 平台 Ollama AMD GPU 一键编译指南:基于 ROCm 7.1 的自动化实战
Windows 平台 Ollama AMD GPU 一键编译指南基于 ROCm 7.1 的自动化实战引言从手动编译到一条命令去年我们在 Windows 上编译 Ollama 的 AMD GPU 版本时需要在 PowerShell 里小心翼翼地把环境变量逐个敲进去手动搞定 CMake 和 Ninja稍有不慎就可能因为一个架构参数而前功尽弃。如今随着 ROCm 7.1 正式支持 RDNA 3.5 架构社区也打磨出了一套高度自动化的构建脚本——只需一行命令就能把 Ollama 源码编译成原生调用 AMD GPU 的 Windows 可执行文件。本文将承接《Windows 平台 Ollama AMD GPU 编译全攻略基于 ROCm 6.2》的核心内容聚焦于ROCm 7.1 自动化脚本的新方案。我们会从环境准备、硬件兼容、脚本使用到底层编译原理一路讲透让你不但能跑通流程还能理解每一步在干什么出了问题也能快速定位。适用版本Ollama v0.20.6 ROCm 7.1 Windows 10/11一键脚本仓库tengfei527/ollama-for-amd-auto-build文章目录Windows 平台 Ollama AMD GPU 一键编译指南基于 ROCm 7.1 的自动化实战引言从手动编译到一条命令一、 为什么选择 ROCm 7.1二、 环境准备与硬件兼容性2.1 你的 AMD 显卡能被支持吗2.2 软件依赖一览三、 一键脚本auto_build.ps1 完全指南3.1 快速开始3.2 自动化流程全景图3.3 关键设计解读四、 手动分步构建供调试参考4.1 源码准备与上游合并4.2 编译 ROCm 后端ggml-hip.dll4.3 编译 Ollama 主程序ollama.exe五、 验证与运行5.1 构建产物目录结构5.2 启动与 GPU 加速验证六、 深度排错与 FAQ6.1 编译阶段常见错误6.2 运行时常见错误6.3 环境变量速查表七、 总结与最佳实践一、 为什么选择 ROCm 7.1特性ROCm 6.2ROCm 7.1新架构支持无 RDNA 3.5 / 4增加 gfx1150 系列RX 7600 XT 等Windows 构建稳定性需要手动规避__builtin_verbose_trap等兼容问题与 VS BuildTools 配合更顺畅CMake 预设ROCm 6rocm_v7_1_windows开箱即用HIP 编译器优化基本支持并行编译效率更高内存占用更低如果你用的是RX 7600非 XT、RX 7700S等 RDNA 3.5 显卡ROCm 6.2 会直接报“invalid target ID”错误必须升级到 7.1。即便是老一代的 RX 7900 XTX 等 RDNA 3 卡新版在编译速度和运行稳定性上也有肉眼可见的改善。二、 环境准备与硬件兼容性2.1 你的 AMD 显卡能被支持吗编译前务必先确认 GPU 架构。下表整理了 ROCm 7.1 官方支持的主流架构及对应显卡架构代号GPU 系列典型显卡型号ROCm 7.1 支持gfx1100RDNA 3RX 7900 XTX / XT✅gfx1102RDNA 3RX 7800 XT / 7700 XT✅gfx1030RDNA 2RX 6900 XT / 6800 XT✅gfx1032RDNA 2RX 6600 XT✅gfx1010RDNA 1RX 5700 XT✅gfx906GCN (Vega)Radeon VII✅gfx1152RDNA 3.5RX 7600 XT✅ (新增)gfx1151RDNA 3.5RX 7700S / 7600M XT✅ (实验性)gfx1200RDNA 4尚未上市❌图1GPU 架构判断流程快速定位架构打开设备管理器 → 显示适配器 → 右键属性 → 详细信息 → 硬件 ID根据VEN_1002DEV_xxxx到 TechPowerUp GPU Database 查询对应的 GFX 代号。2.2 软件依赖一览自动化脚本会帮你处理大部分环境问题但这些基础软件仍需提前安装软件最低版本作用推荐安装方式Visual Studio 2022 BuildTools最新提供 MSVC 编译器与 Ninjawinget install Microsoft.VisualStudio.2022.BuildToolsCMake4.0生成构建系统winget install Kitware.CMakeGo1.24编译 Ollama 主程序winget install GoLang.GoAMD ROCm7.1HIP 运行时与编译器AMD 官网下载MSYS2 (MinGW-w64)最新GCC 工具链供 CGO 使用winget install MSYS2.MSYS2安装后快速验证cmake--version# 应显示 4.xgo version# 应显示 go1.24# 检查 ROCmC:\Program Files\AMD\ROCm\7.1\bin\hipconfig.bin.exe--version# 安装 MinGW GCC在 MSYS2 终端执行一次C:\msys64\usr\bin\bash.exe-lcpacman -S --noconfirm mingw-w64-x86_64-gccgcc--version三、 一键脚本auto_build.ps1完全指南所有繁琐的步骤都被整合进了auto_build.ps1你只需要告诉它目标版本号。3.1 快速开始# 克隆一键脚本仓库git clone https://github.com/tengfei527/ollama-for-amd-auto-build.git cd ollama-for-amd-auto-build# 执行构建以 v0.20.6 为例.\auto_build.ps1-Version 0.20.6参数详解参数说明示例-Version(必填)要编译的 Ollama 版本号-Version 0.20.6-SkipMerge跳过合并上游源码本地已有代码时使用-SkipMerge-SkipROCm跳过 ROCm 后端编译仅更新 CLI-SkipROCm-Jobs并行编译线程数默认 6-Jobs 8常用场景举例# 仅重新编译 CLIROCm 后端 DLL 已编译好.\auto_build.ps1-Version 0.20.6-SkipMerge-SkipROCm# 仅编译 ROCm 后端不编译 CLI.\auto_build.ps1-Version 0.20.6-SkipMerge# 之后再单独编译 CLI3.2 自动化流程全景图脚本内部的执行管线可概括为五个阶段每个阶段都内置了错误检测与重试机制。否是否是否解析参数激活 VS BuildTools 环境跳过合并?添加 upstream 远程仓库git fetch --tagsgit merge 目标版本跳过 ROCm?设置 ROCm 7.1 环境变量CMake 配置--preset rocm_v7_1_windowsNinja 编译 ggml-hip.dll安装到 dist/windows-amd64跳过 CLI?设置 MinGW GCC 环境go build ollama.exe拷贝 MinGW 运行时 DLL生成 BUILD_INFO.txt构建完成3.3 关键设计解读1动态构建目录告别文件锁定脚本每次生成带时间戳的构建目录如build/rocm-20250614143022新旧构建互相独立哪怕上一次的 DLL 仍被进程占用也不影响本次编译。2只编译你需要的 GPU 架构脚本中的$GPUTargets变量默认仅开启gfx1031RX 6700 XT 等。请根据你的显卡修改该变量例如RX 7900 XTX →gfx1100RX 7800 XT →gfx1102RX 6600 XT →gfx1032同时支持多种 →gfx1100;gfx1032只编译匹配的架构可将编译时间从 25 分钟缩短到 5~8 分钟。3利用 CMake 预设仓库内置了rocm_v7_1_windows预设内部已配置好 HIP 编译器路径、链接标志等无需手动指定-DCMAKE_HIP_COMPILER大幅降低出错概率。4MinGW 依赖自动补全Go 编译的ollama.exe依赖libwinpthread-1.dll等 MinGW 运行时库脚本会在构建结束后自动将这些 DLL 复制到输出目录省去手动查找的烦恼。四、 手动分步构建供调试参考如果你希望深入理解每一步或者在自动化脚本出现意外时需要手动介入可参考下面的分步命令。4.1 源码准备与上游合并git clone https://github.com/tengfei527/ollama-for-amd-auto-build.git cd ollama-for-amd-auto-build git remote add upstream https://github.com/ollama/ollama.git git fetch upstream--tags git merge v0.20.6--no-edit# 如有冲突手动解决后 git commit4.2 编译 ROCm 后端ggml-hip.dll第一步激活 VS 2022 编译环境$vsPath ${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe-latest-property installationPath cmd/c$vsPath\VC\Auxiliary\Build\vcvars64.bat nul 21 set|ForEach-Object{if($_-match^(.*?)(.*)$){[Environment]::SetEnvironmentVariable($matches[1],$matches[2],Process)}}第二步配置 ROCm 7.1 环境变量$HipPathC:\Program Files\AMD\ROCm\7.1$env:HIP_PATH $HipPath$env:HIPCXX $HipPath\bin\clang.exe$env:HIP_PLATFORM amd$env:CMAKE_PREFIX_PATH $HipPath$env:CC $HipPath\bin\clang.exe$env:CXX $HipPath\bin\clang.exe$env:LIB;$HipPath\lib$env:INCLUDE;$HipPath\include第三步CMake 配置、编译与安装$GPUTargetsgfx1100# 替换为你的 GPU 架构cmake-S llama/server-B build/rocm --preset rocm_v7_1_windows -G Ninja -DAMDGPU_TARGETS$GPUTargets-DCMAKE_HIP_FLAGS-parallel-jobs6cmake--build build/rocm--target ggml-hip--config Release--parallel6 cmake--install build/rocm--component llama-server--prefixdist/windows-amd64--strip4.3 编译 Ollama 主程序ollama.exe$env:PATH C:\msys64\mingw64\bin;$env:PATH$env:CGO_ENABLED 1$env:CC gcc$env:CXX ggo build-trimpath-ldflags-s -w -Xgithub.com/ollama/ollama/version.Version0.20.6-amd -Xgithub.com/ollama/ollama/server.moderelease.Copy-Itemollama.exe dist/windows-amd64/# 补全 MinGW 依赖$mingwPathC:\msys64\mingw64\bin(libwinpthread-1.dll,libgcc_s_seh-1.dll,libstdc-6.dll)|ForEach-Object{Copy-Item$mingwPath\$_dist/windows-amd64\-Force}五、 验证与运行5.1 构建产物目录结构成功编译后dist/windows-amd64应包含dist/windows-amd64/ ├── ollama.exe ├── libwinpthread-1.dll ├── libgcc_s_seh-1.dll ├── libstdc-6.dll ├── BUILD_INFO.txt # 构建报告 └── lib/ollama/ └── rocm_v7_1/ ├── ggml-hip.dll # HIP 计算后端 (~600MB) ├── amdhip64_7.dll ├── hipblas.dll └── rocblas.dll5.2 启动与 GPU 加速验证cd dist\windows-amd64.\ollama.exe serve观察启动日志出现HIP backend或GPU: AMD Radeon RX...表示 GPU 已被正确识别。在另一个终端测试.\ollama.exe pull llama3.2:1b.\ollama.exe run llama3.2:1b同时打开任务管理器 → 性能 → GPU 观察 3D 占用是否明显上升。六、 深度排错与 FAQ6.1 编译阶段常见错误症状原因解决hipcc: error: invalid target ID gfx1152该架构在 ROCm 7.1 中仍为实验性改用gfx1151或精确指定你显卡的架构CMake Error: Could not find a HIP compiler环境变量未生效显式指定-DCMAKE_HIP_COMPILERC:/Program Files/AMD/ROCm/7.1/bin/hipcc.bin.execlang: error: use of undeclared identifier __builtin_verbose_trap使用了 VS 非 BuildTools 版本安装 Visual Studio 2022 BuildTools而非 Enterprise/Preview构建过程中ninja报内存不足并行线程太多减小-Jobs如-Jobs 46.2 运行时常见错误症状原因解决ggml_hip_init: HIP library not foundROCm 运行时 DLL 缺失将C:\Program Files\AMD\ROCm\7.1\bin加入系统 PATH或复制所需 DLL 到 ollama.exe 目录no GPU detected但任务管理器显示 GPU架构不匹配设置环境变量$env:HSA_OVERRIDE_GFX_VERSION10.3.0数值按你的架构修改加载模型到一半崩溃显存不足换用 1B/3B 小模型或降低上下文长度6.3 环境变量速查表变量作用典型值HIP_PATHROCm SDK 根目录C:\Program Files\AMD\ROCm\7.1HSA_OVERRIDE_GFX_VERSION强制覆盖 GPU 架构版本10.3.0对应 gfx1030HIP_VISIBLE_DEVICES限定使用哪块 GPU0CGO_ENABLED启用 Go 的 CGO1CC/CXXC/C 编译器gcc/g七、 总结与最佳实践版本对齐构建前确认 Ollama 版本与仓库兼容-Version参数能帮你精准控制避免混用不同版本的 tag。架构最小集修改脚本中的$GPUTargets只编译你显卡对应的架构可节省 60% 以上的编译时间。纯净环境每次构建建议新开 PowerShell 窗口防止残留环境变量干扰 CMake 检测。失败重试脚本会自动生成带时间戳的独立构建目录即使中途失败直接重跑即可无需手动清理。保留构建报告BUILD_INFO.txt记录了版本、架构和编译时间建议与二进制一起归档方便回溯。随着 ROCm 对 Windows 的支持日趋成熟AMD 显卡在本地大模型推理上的表现越来越值得信赖。配合tengfei527/ollama-for-amd-auto-build这一自动化仓库你可以像使用 NVIDIA 平台一样享受流畅的ollama run体验。如果在升级或编译过程中遇到任何问题欢迎在评论区交流我会尽力帮你分析解决。也许下一次我们可以聊聊如何在 Windows 上通过 WSL2 调用 Linux 版 ROCm 做开发以及那些交叉编译的坑。参考资料一键编译脚本仓库AMD ROCm 7.1 安装指南GPU 架构查询工具 TechPowerUp

更多文章