llama-server core dumps when serving GPT-OSS with OLLAMA_KV_CACHE_TYPE=q8_0

当 Ollama 通过 llama-server 加载 GPT-OSS 并启用 OLLAMA_KV_CACHE_TYPE=q8_0 时,服务进程会 core dump 崩溃。优先排查 KV 缓存类型是否为 q8_0、Ollama 版本是否为回归版本,再尝试更换 KV 缓存类型或回退版本。

快速结论:当 Ollama 通过 llama-server 加载 GPT-OSS 并启用 OLLAMA_KV_CACHE_TYPE=q8_0 时,服务进程会 core dump 崩溃。优先排查 KV 缓存类型是否为 q8_0、Ollama 版本是否为回归版本,再尝试更换 KV 缓存类型或回退版本。

适用环境:Issue 中出现的信息:Ollama 0.30.6 与 0.30.11 容器镜像(docker.io/ollama/ollama),通过 Podman + systemd 运行,运行环境为 Linux x86_64(GNU 11.2.1),CUDA 后端,显卡 NVIDIA GeForce RTX 4080 Laptop GPU(compute capability 8.9,11876 MiB VRAM)。用户报告 0.24.0 不复现。

最快修复方案:暂无确认的一步修复方案。Issue 中仅确认 0.24.0 不复现该崩溃,维护者建议的排查手段包括:临时取消 OLLAMA_KV_CACHE_TYPE=q8_0(改回默认 KV 缓存类型)、尝试 OLLAMA_FLASH_ATTENTION=1 观察行为是否变化。这些均属于排查方向,未被标记为正式修复。

注意事项:Issue 被标记为 bug, needs more info,且原报告提到该问题此前在 PR #11685 修复、但相关代码在 commit 19e6796 中被删除;这一回归结论来自报告人自述,维护者未能复现。因此以上方案属于“可优先尝试”,不代表已确认修复;开启 Flash Attention 或更换 KV 缓存类型可能影响模型精度或显存占用。

问题场景

用户在 Linux + Podman/systemd 环境中以容器方式运行 Ollama(镜像 0.30.6,后续又用 0.30.11 复测),通过 llama-server 加载 GPT-OSS 模型进行推理。服务端配置了 OLLAMA_KV_CACHE_TYPE=q8_0,并开启了 Vulkan(OLLAMA_VULKAN:true)与 CUDA 后端。在服务启动并发现 GPU、随后加载模型/推理的过程中,Ollama 的 llama-server 子进程发生 core dump,导致 Ollama 服务崩溃。

报错原文

llama-server core dumps when serving GPT-OSS with OLLAMA_KV_CACHE_TYPE=q8_0

server config env="map[... OLLAMA_KV_CACHE_TYPE:q8_0 ... OLLAMA_VULKAN:true ...]"
Listening on [::]:11434 (version 0.30.6)
level=INFO source=runner.go:60 msg="discovering available GPUs..."
running llama-server for discovery
load_backend: loaded CUDA backend from /usr/lib/ollama/cuda_v12/libggml-cuda.so
Available devices:
  CUDA0: NVIDIA GeForce RTX 4080 Laptop GPU (11876 MiB, 11657 MiB free)
ggml_cuda_init: found 1 CUDA devices (Total VRAM: 11876 MiB):
  Device 0: NVIDIA GeForce RTX 4080 Laptop GPU, compute capability 8.9, VMM: yes, VRAM: 11876 MiB

原因分析

可能原因:GPT-OSS 模型与 OLLAMA_KV_CACHE_TYPE=q8_0 组合时,llama-server 在 KV 缓存量化路径上触发了崩溃。报告人指出该问题此前已在 PR #11685 中被修复,但相关代码在 commit 19e6796 中被删除,从而出现回归——这一点是报告人的判断,未在讨论中被维护者确认。维护者在 0.30.6/后续版本中无法复现,因此也不排除与具体硬件(RTX 4080 Laptop、compute capability 8.9)、CUDA 后端版本或 Flash Attention 关闭状态相关的可能性。

环境排查

  • 确认 Ollama 版本:Issue 中出现 0.30.6 与 0.30.11;用户对比的旧版本为 0.24.0(不复现)。
  • 确认是否设置了 OLLAMA_KV_CACHE_TYPE=q8_0。
  • 确认 OLLAMA_FLASH_ATTENTION 状态:Issue 日志中为 false,维护者建议尝试设为 1 对比行为。
  • 确认 OLLAMA_DEBUG 级别(可用 OLLAMA_DEBUG=2 或日志中出现的 DEBUG-4 收集更多信息)。
  • 确认运行方式:Podman 容器 + systemd,镜像 docker.io/ollama/ollama。
  • 确认 GPU 与后端:NVIDIA GeForce RTX 4080 Laptop GPU(compute capability 8.9)、CUDA 后端(cuda_v12)、日志中同时出现 OLLAMA_VULKAN:true。
  • 确认系统架构与工具链:Linux x86_64,llama-server build 1 (51eae8cfc),GNU 11.2.1。

解决步骤

  1. 先复现并确认崩溃条件:在保持 OLLAMA_KV_CACHE_TYPE=q8_0 的前提下加载 GPT-OSS,确认 llama-server 是否 core dump。
  2. 可优先尝试:临时移除或更改 OLLAMA_KV_CACHE_TYPE(使用默认 KV 缓存类型),观察是否仍崩溃。这是隔离 KV 缓存量化因素的直接方式,但 Issue 未给出事后确认结果。
  3. 可优先尝试:按维护者建议设置 OLLAMA_FLASH_ATTENTION=1 重启服务,再跑一次同样的 GPT-OSS 推理,比较行为是否变化。
  4. 提高日志级别:按维护者建议以 OLLAMA_DEBUG=2 重启服务并再次测试,收集 llama-server 崩溃前后的完整日志。
  5. 版本对比:报告人已确认 0.24.0 不复现,可据此回退到旧版本作为临时规避,或升级到 0.30.6 之后的版本验证是否已修复。
  6. 由于 Issue 已关闭且标记为 needs more info,若仍复现,建议在原始 Issue 中补充上述调试日志与硬件版本信息。

验证方法

在相同硬件、相同镜像、相同 GPT-OSS 模型和相同 OLLAMA_KV_CACHE_TYPE 设置下重新启动 Ollama 服务并发起一次推理请求,确认 llama-server 进程不再 core dump,Ollama 服务保持运行且请求正常返回。可通过 OLLAMA_DEBUG=2 检查日志中是否仍出现崩溃堆栈或进程异常退出信息。

参考来源

ollama/ollama #16946

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25965

发表回复

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