Error: an error was encountered while running the model: CUDA error: unspecified launch failure

该报错出现在 Ollama 以 CUDA 后端运行模型时,调用 cudaStreamSynchronize 同步 GPU 流失败,典型英文报错为 Error: an error was encountered while running the model: CUDA error: unspecif

快速结论:该报错出现在 Ollama 以 CUDA 后端运行模型时,调用 cudaStreamSynchronize 同步 GPU 流失败,典型英文报错为 Error: an error was encountered while running the model: CUDA error: unspecified launch failure。优先排查 GPU 端运行状态与 Ollama 实际加载的 CUDA runner,而不是只反复更换模型大小或 Ollama 版本。

适用环境:Issue 已确认:Ollama 0.5.7 与 0.5.11;Linux;NVIDIA GPU;Intel CPU;CUDA v12 runner(日志中为 runners/cuda_v12/ollama_llama_server);模型 deepseek-r1:7b,服务端同时加载了 nomic-embed-text-v1.5。Python、PyTorch、CUDA Toolkit 具体版本及显卡型号在 Issue 中未确认。

最快修复方案:该 Issue 讨论中暂无确认的一步修复方案。可优先尝试:保持 Ollama 服务运行,打开服务端日志排错,确认报错发生在 CUDA runner 加载或推理同步阶段后,再针对性处理 GPU 环境。

注意事项:Issue 中用户已尝试更换模型大小、Ollama、NVIDIA 驱动和 CUDA,均未解决,说明单纯升级版本不一定有效。unspecified launch failure 也可能与 GPU 硬件、驱动或其他进程占用等环境因素有关,以下步骤中的环境类处理属于可优先尝试项,尚未在该 Issue 中被明确验证为修复原因。

问题场景

用户在 Linux + NVIDIA GPU 环境下运行 ollama run deepseek-r1:7b,输入问题后模型开始输出,途中报错中断。此前必须使用 CPU ONLY 模式才能正常跑完模型。服务端日志显示 Ollama 调度器判定模型可放入单张 GPU,并使用 cuda_v12 runner 加载(--n-gpu-layers 13);同一时间服务端还加载了 nomic-embed-text-v1.5 模型的 runner(日志中 loaded runners count=2)。

报错原文

Error: an error was encountered while running the model: CUDA error: unspecified launch failure
  current device: 0, in function ggml_backend_cuda_synchronize at llama/ggml-cuda/ggml-cuda.cu:2317
  cudaStreamSynchronize(cuda_ctx->stream())
llama/ggml-cuda/ggml-cuda.cu:96: CUDA error

原因分析

从报错栈看,失败点位于 ggml CUDA 后端的 ggml_backend_cuda_synchronize,即等待 CUDA stream 同步时返回了 unspecified launch failure。这说明问题不在分词或模型文件读取阶段,而更可能发生在 GPU 侧执行或同步阶段。

  • 可能原因一:GPU 运行状态异常。unspecified launch failure 常见于内核启动失败、显存或驱动状态异常、GPU 被其他进程干扰等场景,需结合 nvidia-smi 和服务日志进一步判断。
  • 可能原因二:CUDA runner 与当前驱动/环境不匹配。Issue 中 Ollama 实际调用的是 cuda_v12 runner;用户虽更换过驱动和 CUDA,但未提供对应版本信息,无法确认是否匹配。
  • 可能原因三:多 runner 并行加载带来的资源或状态问题。日志显示 chat 模型与嵌入模型 runner 同时加载;这只是日志线索,Issue 中未证实它是直接原因。
  • 可能原因四:硬件或驱动层面的不稳定。若 CPU ONLY 模式正常而 CUDA 模式稳定复现,不能排除显卡、驱动或系统环境问题。

环境排查

  • 确认当前 Ollama 版本:Issue 中 0.5.7 与 0.5.11 均出现该问题。
  • 确认 Ollama 实际使用的 runner:日志中为 cuda_v12,需对照本机 NVIDIA 驱动所支持的 CUDA 运行时能力。
  • 确认 NVIDIA 驱动版本,以及报错时 GPU 状态:使用 nvidia-smi 查看显存占用、GPU 进程、是否出现 Xid 或 ECC 相关异常信息。
  • 确认是否有其他进程同时占用 GPU,尤其是其他推理服务或容器。
  • 确认模型与并行加载情况:Issue 中为 deepseek-r1:7b 与 nomic-embed-text-v1.5 两个 runner。
  • 确认系统内存与显存:日志显示 GPU 可用 VRAM 约 18.1 GiB,系统内存约 251.5 GiB;该数值本身未显示明显不足。
  • Python、PyTorch、CUDA Toolkit 具体版本在 Issue 中未提供,无需作为已确认环境项。

解决步骤

  1. 先保留现场,不要继续反复重启或切换模型,以免覆盖关键错误信息。
  2. 按 Issue 维护者建议开启并查看 Ollama 服务端日志:参考 Ollama 官方 troubleshooting 文档中的 server logs 方法,定位报错前最后一次加载的 runner 类型和模型。
  3. 在报错发生前后执行 nvidia-smi,记录 GPU 型号、驱动版本、显存占用以及是否有其他进程占用 GPU;若出现 Xid 等驱动层错误,应优先处理驱动或硬件问题。
  4. 结合日志中的 cuda_v12 标识,核对本机驱动是否完整支持该 CUDA 运行时;如曾手动更换 CUDA 组件,恢复为驱动自带运行时或官方推荐组合后再测(可优先尝试)。
  5. 若日志显示多个 runner 同时加载,可先只保留一个推理模型进行测试,排除多 runner 同时占用 GPU 的干扰(可优先尝试,Issue 中未验证)。
  6. 完成上述环境处理后,重新执行 ollama run deepseek-r1:7b 并输入同一问题复测;若仍在 CUDA 模式报错而 CPU ONLY 正常,则应继续按 GPU 驱动/硬件方向排查,而不是继续更换模型版本。

验证方法

重新运行 ollama run deepseek-r1:7b,输入与 Issue 中相同或类似的问题,确认模型能完整输出且不再出现 CUDA error: unspecified launch failure;同时检查服务端日志中不再出现 ggml_backend_cuda_synchronize 相关报错,nvidia-smi 也未显示异常。由于该 Issue 没有确认的修复步骤,验证时应以实际重复测试结果为准。

参考来源

ollama/ollama #9247

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 34899

发表回复

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