
AMD 显卡本地跑大模型 3 步走llama.cpp Vulkan 部署完整指南【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cppllama.cpp 是一个 C/C 编写的大语言模型本地推理框架能把量化后的 GGUF 模型在 CPU 和 GPU 上高速运行起来。本文以 AMD 显卡为例围绕 Vulkan 后端讲清楚三件事怎么构建、跑起来之后看哪些日志、出问题怎么对症处理。目标读者是没有部署经验的新手照做即可。一条命令链跑通 llama.cpp 的 Vulkan 构建先说结论AMD 显卡上最常见的组合是系统自带的开源显卡驱动 Vulkan 运行时 -DGGML_VULKAN1构建。Vulkan 是跨图形 APIAMD 各代显卡RX 5000 到 RX 7000 乃至更新型号都能走这条路线不需要额外申请许可。动手前确认三个前提显卡驱动已安装。Ubuntu、Debian、Fedora 默认仓库里的开源 amdgpu/Mesa 驱动即可无需专门装商业驱动Vulkan 版本不低于 1.2。后端在初始化时硬性检查这一点版本低于 1.2 会直接报ggml_vulkan: Error: Vulkan 1.2 required系统装有 CMake 3.14 及以上以 Ubuntu/Debian 为例从安装依赖到跑通第一个模型完整步骤如下sudo apt-get install libvulkan-dev glslc spirv-headers git clone https://gitcode.com/GitHub_Trending/ll/llama.cpp cd llama.cpp cmake -B build -DGGML_VULKAN1 cmake --build build --config Release ./build/bin/llama-cli -m /path/to/model.gguf -p Hello -n 32 -ngl 99spirv-headers是容易漏装的一包它提供spirv/unified1/spirv.hpp头文件Vulkan 后端编译必需单装libvulkan-dev不一定会带上它。第一次运行时着色器管线会加载并编译进驱动原生格式首条提示词生成明显偏慢属于正常现象第二次起就会快。构建与运行的详细说明可参考项目内的 docs/build.md Vulkan 章节。看懂启动日志uma、fp16、warp size 三个数模型加载成功后命令行会打印一行设备信息形如ggml_vulkan: Using AMD Radeon RX 7900 XTX | uma: 0 | fp16: 1 | warp size: 32 这三个数直接决定了计算路径值得逐个认识uma0 表示独立显存1 表示核显与系统内存共享。AMD 独显应当是 0如果看到 1说明选错了设备或 ICD 配置有问题fp161 表示后端走 fp16 计算路径2 字节存一个权重和激活0 表示回退到 fp32 路径显存占用接近翻倍、速度下降。看到 0 时优先怀疑驱动过旧warp sizeAMD 显卡固定为 32与 CUDA 设备一致主要用于核对设备枚举是否正确向社区反馈 Vulkan 初始化失败之类的报错时把这行日志连同vulkaninfo的驱动版本一起贴出来是排查的第一步。AMD 显卡的两条路线何时选 Vulkan何时选 ROCm/HIPAMD 显卡在 llama.cpp 里有两条 GPU 加速路线选错路线是兼容性差感受的主要来源之一。Vulkan 路线是默认推荐一份构建同时覆盖 AMD 各代显卡驱动门槛低Vulkan 1.2 起跨发行版行为一致。上面那条命令链走的就是这条路。ROCm/HIP 路线是 AMD 官方软件栈在 RDNARX 6000 及以后和 CDNA 系列上优化更深。代价是必须按显卡的 gfx 架构编号指定编译目标且依赖 ROCm 工具链。构建方式见 docs/build.md 的 ROCm 章节rocminfo | grep gfx cmake -S . -B build-hip -DGGML_HIPON -DGPU_TARGETSgfx1030 -DCMAKE_BUILD_TYPERelease cmake --build build-hip --config Release-DGPU_TARGETS里的编号要按rocminfo输出取整比如 gfx1035 映射到 gfx1030填错架构会编译通过但设备无法识别。给新手的判断标准先装 Vulkan 路线90% 的场景够用只有当你单卡只跑 AMD、且 Vulkan 路线速度不达预期时再切 ROCm/HIP 对比。另外提醒一句网上流传的-DAMD_VULKAN_COMPAT之类的AMD 兼容开关在 CMake 选项里并不存在遇到兼容性问题不需要找它真正可用的是仓库内置的调试开关见下一章。Vulkan 初始化失败的 5 个典型报错按现象对药方把环境检测和排障合在一张表里看先对照现象再动手现象可能原因处理vulkaninfo检测不到 AMD 显卡驱动未装或 ICD 缺失装发行版自带的 amdgpu 与 mesa-vulkan-drivers 包重跑vulkaninfo报Vulkan 1.2 required驱动太旧Vulkan 版本不足升级显卡驱动。Ubuntu 24.04 自带的内核 6.8 版本驱动已满足 1.2加载模型时显存不足中断-ngl 99把全部层压进显存大上下文下 KV 缓存放不下降低层数如-ngl 20其余层交给 CPU详见下一章首次运行极慢二次运行正常着色器管线首次编译属正常无需处理若二次运行依旧缓慢再查驱动输出乱码或数值异常计算精度路径异常先核对日志fp16是否为 1仍异常时用GGML_VULKAN_CHECK_RESULTS1重新构建启用逐算子校验定位到具体算子多显卡机器上Vulkan 后端支持用环境变量GGML_VK_VISIBLE_DEVICES选择设备写法与CUDA_VISIBLE_DEVICES类似GGML_VK_VISIBLE_DEVICES1表示只使用编号 1 的那张卡双卡混用时常用。层数与显存调优按显存容量调 -ngl-ngl控制多少层权重放在 GPU 上是 AMD 显卡调优的第一杠杆。-ngl 99表示尽量全上-ngl 0表示纯 CPU。给一个可复算的估算8B 模型 Q4_K_M 量化权重约 4.9 GB128K 上下文的 KV 缓存另需数 GB 到数十 GB视注意力头数和精度而定。据此可以定档16 GB 显存如 RX 7800 XT8B Q4_K_M 用-ngl 99上下文控制在 8K 以内8 GB 显存如 RX 6600同样模型建议-ngl 20把后段层留给 CPU靠内存带宽兜底24 GB 显存如 RX 7900 XTX70B 级 Q4 量化权重约 40 GB装不下70B 需要 48 GB 以上或双卡调完用仓库自带的./build/bin/llama-bench跑一遍基线记录 prompt 处理与 token 生成两组速度再改参数重测对比才有意义。CPU 侧线程数用-t指定物理核心数即可不必开满逻辑核心。长期维护驱动更新后先验证再上生产兼容性问题的复发大多集中在驱动变更之后维护动作可以固定成两条每次升级显卡驱动后先跑一次vulkaninfo确认 Vulkan 版本未回退、设备仍能枚举再用一条短命令回归模型./build/bin/llama-cli -m /path/to/model.gguf -p Hi -n 16 -ngl 99核对日志里fp16仍为 1升级 llama.cpp 源码git pull后重新执行构建。Vulkan 着色器在 CMake 配置阶段由 glslc 编译生成只增量编译个别文件可能拿到过期管线构建选项全集以 ggml/CMakeLists.txt 为准Vulkan 相关的调试开关有GGML_VULKAN_DEBUG、GGML_VULKAN_VALIDATE、GGML_VULKAN_MEMORY_DEBUG、GGML_VULKAN_CHECK_RESULTS四个平时全部保持 OFF只在定位问题时按需打开。AMD 显卡上部署 llama.cpp 的兼容性本质是Vulkan 1.2 驱动门槛 正确的层数分配 按架构选路线三件事没有玄学成分。按本文顺序走完构建、日志核对和调优三步绝大多数跑不动的情况都能定位到具体原因仍无法解决时把vulkaninfo输出与ggml_vulkan: Using那一行日志附在反馈里比描述现象更有效。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考