快速结论:在 Windows 上用 Ollama 运行 cohere2moe(MoE)架构模型时,推理(prompt evaluation/generation)阶段会在 ggml-cuda 的 MUL_MAT 上触发 CUDA illegal memory access,llama-server 随后崩溃(exit status 0xc0000409)。优先排查模型架构/自定义 GGUF 与 CUDA 后端的兼容性,以及上下文长度对显存访问的影响。
适用环境:Ollama 0.34.3(Windows);Windows 11;NVIDIA GeForce RTX 5090(32GB VRAM);CUDA(日志显示 libdirs=ollama,cuda_v13,driver=13.1,compute=12.0);模型架构 cohere2moe(north-mini-code-1.0 / 自定义 GGUF);Modelfile 中 PARAMETER num_ctx 8192 或更高。
最快修复方案:暂无确认的一步修复方案。Issue 正文中唯一带有实测步骤的路径是先用 ollama serve 复现并确认运行日志(确认 CUDA 后端与 GPU 识别正常),之后进一步排查仍属于推测,需结合更新后的日志验证。
注意事项:降低 num_ctx、切换模型/量化格式等做法在该 Issue 中均未被验证;换绑定地址(OLLAMA_HOST)只影响服务监听,日志里出现的 bind: Only one usage of each socket address... 与 bind: The requested address is not valid in its context. 属于端口占用/地址无效问题,与 CUDA 非法内存访问不是同一根因,不要混淆。
问题场景
用户在 Windows 11 + RTX 5090 环境下使用 Ollama 0.34.3 加载 cohere2moe 架构模型(north-mini-code-1.0 / 自定义 GGUF),并在 Modelfile 中设置 PARAMETER num_ctx 8192(或更高),然后向 /api/chat 发起聊天请求。服务端在推理过程中完成部分 prompt 处理后,于 ggml-cuda 的 MUL_MAT 计算环节崩溃,随后 llama-server 以 0xc0000409 退出,HTTP 请求返回 500。
报错原文
ggml_cuda_compute_forward: MUL_MAT failed
CUDA error: an illegal memory access was encountered
C:\a\ollama\ollama\build\llama-server-cuda_v13\_deps\llama_cpp-src\ggml\src\ggml-cuda\ggml-cuda.cu:108: CUDA error
current device: 0, in function ggml_cuda_compute_forward at C:\a\ollama\ollama\build\llama-server-cuda_v13\_deps\llama_cpp-src\ggml\src\ggml-cuda\ggml-cuda.cu:2422
err
[GIN] 2026/09/24 - 10:51:55 | 500 | 1m2s | 100.71.246.58 | POST "/api/chat"
原因分析
从日志看,崩溃发生在 prompt 处理到约 44% 之后:先创建了上下文检查点(“created context checkpoint 1 of 32”,size ≈ 56.260 MiB),紧接着在 ggml_cuda_compute_forward 的 MUL_MAT 调用处报 CUDA illegal memory access。这说明 GPU 端矩阵乘执行时,访问了非法的显存地址,属于 CUDA 后端层面的内存访问越界或不一致。
最可能的原因方向:
- cohere2moe(MoE)架构与当前 ggml-cuda 后端路径的兼容性问题。MoE 模型中专家路由/分派涉及额外的张量索引与间接寻址,在某些形状或行索引下容易触发越界访问;Issue 中该错误只在该架构下稳定复现,指向架构相关代码路径。
- 自定义 GGUF 的元数据/张量布局异常。用户使用的是自定义 GGUF,若转换或量化过程中张量形状、类型与 cohere2moe 预期不符,CUDA kernel 可能按错误 stride 访问显存。
- 上下文长度/检查点分配相关的显存访问问题。num_ctx 设为 8192 或更高,崩溃前刚生成 56 MiB 级别的 context checkpoint,可能与 checkpoint 相关的 KV/状态拷贝及 MoE 中间缓冲叠加有关,但这仍属于推测。
- RTX 5090(compute=12.0、CUDA 13 运行库)上的新架构编译/运行分歧,可能使某些 kernel 在 Blackwell 上表现异常。
Issue 讨论中该问题最终被关闭,但没有给出一条被验证的单一修复指令;上述归因以“可能原因”对待。
环境排查
- 确认 Ollama 版本为 0.34.3,且使用的是 Windows 版 CUDA 后端(日志中
libdirs=ollama,cuda_v13);如果本机还启用了 Vulkan(日志中OLLAMA_VULKAN:true),注意确认实际推理跑在 CUDA 而非其他后端。 - 确认驱动/运行库版本:日志显示
driver=13.1、compute=12.0、显卡识别为NVIDIA GeForce RTX 5090、total=31.8 GiB、available=30.2 GiB。 - 确认模型来源与格式:
cohere2moe架构的 north-mini-code-1.0 / 自定义 GGUF,核对 GGUF 转换、量化来源是否可靠、是否为该架构专用的转换脚本产物。 - 确认 Modelfile 参数:是否设置了
PARAMETER num_ctx 8192或更高,以及是否叠加了其他参数。 - 确认 11434 端口没有被其他 ollama 进程占用(Issue 日志中出现过
bind: Only one usage of each socket address...);必要时先清理旧进程再ollama serve。 - Python / PyTorch 版本在 Issue 中未给出,不作为排查依据。
解决步骤
- 先隔离服务端启动问题:关闭已有 ollama 进程(Issue 中使用
Get-Process ollama -ErrorAction SilentlyContinue | Stop-Process -Force),再执行ollama serve,确保服务正常监听 127.0.0.1:11434,不再出现bind: Only one usage of each socket address...。 - 用 Issue 中的完整日志方式复现:开启 serve 日志(日志级别
OLLAMA_DEBUG:INFO),发送一次/api/chat请求,确认CUDA error: an illegal memory access was encountered是否稳定出现在ggml_cuda_compute_forward的 MUL_MAT、且发生在 prompt processing 之后。 - 对照日志确认 GPU 后端:检查 “discovering available GPUs” 与 “inference compute” 行是否仍为 CUDA / RTX 5090,排除后端回退或误用 Vulkan/集显(日志中有
dropping integrated GPU)。 - 关注 Issue 是否附带后续更新说明(例如更新后重新测试的结果):该 Issue 在 2026-10-19 被关闭,若上游已合入针对该问题的改动,可优先切换到对应版本再测;Issue 未给出具体版本号时不要盲升级。
- 可优先尝试的对照实验(均未被该 Issue 验证):缩短
num_ctx后重试;改用官方发布的同架构模型而非自定义 GGUF;核对 GGUF 转换版本与量化格式。任一项能稳定消除报错,即可作为后续定位依据。
验证方法
重新 ollama serve 并向 /api/chat 发送相同长度(约 1824 tokens 级别)的请求,观察日志:若 prompt processing 与 generation 阶段不再出现 ggml_cuda_compute_forward: MUL_MAT failed 和 CUDA error: an illegal memory access was encountered,且该 HTTP 请求返回 200 而非 500、llama-server 进程未以 0xc0000409 退出,即视为问题已解决。若仍复现,请保留完整 serve 日志用于继续排查。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


