Eval bug: Instant crash (segfault) when loading models with AMD Strix Halo and Vulkan

该报错发生在 llama.cpp(含 llama-server)通过 Vulkan 后端加载 GGUF 模型时,在内存适配(-fit)或模型张量加载阶段立即触发分段错误(segfault)。首要排查方向是回退到已知可用的 cb295bf 版本,并检查 Vulkan 驱动(RADV)与 llama.c

快速结论:该报错发生在 llama.cpp(含 llama-server)通过 Vulkan 后端加载 GGUF 模型时,在内存适配(-fit)或模型张量加载阶段立即触发分段错误(segfault)。首要排查方向是回退到已知可用的 cb295bf 版本,并检查 Vulkan 驱动(RADV)与 llama.cpp 新版之间的兼容性。

适用环境:llama.cpp (llama-server),Linux x86_64(含 Arch 系发行版),Vulkan 后端,AMD Radeon 8060S(Strix Halo,RADV STRIX_HALO)或 AMD Radeon RX 7900 XTX(RADV NAVI31)。

最快修复方案:暂无确认的一步修复方案。Issue 中明确验证过的唯一方法是回退到上次正常工作的构建版本:版本号为 cb295bf(对应 LM Studio 包名 llama.cpp-linux-x86_64-vulkan-avx2-2.25.0)。

注意事项:该问题影响多个 AMD RADV 显卡及多种模型(Qwen、Gemma 等),新版本 1a064ab 及 2.27.0 均复现。Vulkan 驱动或 Mesa/RADV 版本可能是变量,但 Issue 中未给出具体验证数据,请勿在此阶段升级驱动作为首选方案。

问题场景

用户运行 llama-server 加载 GGUF 模型(例如 Qwen3.6-35B-A3B 或 Qwen3 Embedding 0.6B),执行命令如 ./llama-server -m /path/to/model.gguf --gpu-layers all --port 8080,在模型加载或后续初始化阶段立即崩溃。Issue 报告者曾尝试多个官方发布版及自行编译 master 分支代码,问题依旧。另一用户在 LM Studio(内置 Vulkan 后端)及 Arch 包管理器安装的 llama-cpp v0.2.0 中也复现了相同的段错误。

报错原文

Eval bug: Instant crash (segfault) when loading models with AMD Strix Halo and Vulkan

[Log 片段]
0.00.033.067 I cmn  common_param: common_params_print_info: verbosity = 5 (adjust with the `-lv N` CLI arg)
0.00.034.308 I cmn  common_param:   - Vulkan0 : AMD Radeon 8060S Graphics (RADV STRIX_HALO) (97498 MiB, 95613 MiB free)
...
0.00.035.915 I cmn  common_init_: fitting params to device memory ...
0.00.035.916 I cmn  common_init_: (for bugs during this step try to reproduce them with -fit off, or provide --verbose logs if the bug only occurs with -fit on)
...
(随后进程立即 segfault core dumped,无更多错误输出)

原因分析

可能原因:回归(regression)缺陷。用户确认 cb295bf 构建可正常工作,而较新版本(如 1a064ab、2.27.0)以及最新 master 均崩溃,表明问题很可能由 llama.cpp 在 cb295bf 之后某个提交引入,影响 Vulkan 后端在 AMD RADV 驱动上的兼容性。可能涉及张量分配、内存适配(-fit)或 Vulkan 管线创建时的未定义行为。具体回归提交未定位,Issue 标签也未确认,因此上述结论需谨慎对待。

环境排查

  • llama.cpp 构建版本:确认是否为 cb295bf(可用)或之后版本(如 1a064ab、2.27.0,复现)。
  • Vulkan 后端启用状态(GGML backends = Vulkan)。
  • Linux 发行版及内核(Issue 中提及 Linux,含 Arch 系)。
  • Mesa/RADV 驱动版本(Issue 未提供具体数值,但建议自查)。
  • GGUF 模型格式(Qwen3.6、Gemma 3/4 等均受影响,与模型本身无关)。

解决步骤

  1. 回退 llama.cpp 版本:将 llama.cpp 或 llama-server 回退到 cb295bf 版本(LM Studio 用户对应包名 llama.cpp-linux-x86_64-vulkan-avx2-2.25.0)。这是 Issue 中两个用户均验证可正常工作的版本。
  2. 记录显卡与驱动信息:运行 vulkaninfo | grep driverNamevulkaninfo | grep deviceName,确认 RADV 驱动版本(例如 STRIX_HALO、NAVI31 对应的 Mesa 版本)。
  3. 可优先尝试:临时关闭 -fit 参数(如 --fit off)。Issue 日志提示“若 bug 仅在 -fit on 时出现可尝试 -fit off”,但并未验证有效,故列为可优先尝试项。
  4. 尝试不同 Vulkan 设备:如果系统存在多个 Vulkan 设备(如核显、独显),可用 --device 指定另一设备测试是否为平台特有问题。
  5. 安装 Arch 包 llama-cpp 的旧版本或直接用源码编译 cb295bf:如使用 Arch 系且包管理器版本崩溃,可先卸载 llama-cpp,改用官方发布或自行 checkout cb295bf 编译。

验证方法

使用与之前相同的模型和命令(例如 ./llama-server -m Qwen3.6-35B-A3B-Q4_K_M.gguf --gpu-layers all),观察是否仍会退出(退出码为 segfault,如 139)。若使用 cb295bf 能正常进入 HTTP 服务等待请求阶段,或控制台不再输出“Segmentation fault core dumped”,即视为问题复现条件解除。建议同时运行一段推理请求以确认 GPU 层实际可执行。

参考来源

ggml-org/llama.cpp #27189

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 21603

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注