Ollama 双 RTX4090 运行 DeepSeek-R1:32B 速度极慢问题排查与解决
2026/6/10 7:24:11 网站建设 项目流程

Ollama 双 RTX4090 运行 DeepSeek-R1:32B 速度极慢问题排查与解决

问题现象

服务器配置:

  • CPU:AMD/Intel 多核处理器
  • GPU:RTX 4090 × 2(24GB × 2)
  • 系统:Linux
  • Ollama:0.3.x 及以上版本
  • 模型:deepseek-r1:32b

运行模型后发现:

ollama run deepseek-r1:32b

模型能够正常加载,但推理速度非常慢。

表现为:

  • 每秒只能输出 1~2 个汉字
  • GPU 显存占用接近满载
  • 双卡均被使用
  • 7B 模型运行正常且速度很快

查看状态:

ollamaps

输出类似:

NAME SIZE PROCESSOR deepseek-r1:32b 55 GB 16%/84% CPU/GPU

说明:

16% 层在 CPU 84% 层在 GPU

模型并没有完全加载到 GPU。


初步排查

查看 GPU 使用情况

nvidia-smi

发现:

GPU0 ≈ 22.5GB GPU1 ≈ 22.8GB

双卡均已被使用。

因此可以排除:

  • GPU 未识别
  • 双卡未启用
  • CUDA 安装异常

查看模型信息

ollama show deepseek-r1:32b

输出:

architecture qwen2 parameters 32.8B context length 131072 quantization Q4_K_M

此时注意到:

context length = 131072

即默认上下文长度为:

131K

关键排查

查看 Ollama 日志:

journalctl-uollama-n300--no-pager|grep-Ei"memory|offload|layer|cuda"

发现关键内容:

load_tensors: offloaded 55/65 layers to GPU llama_kv_cache: CUDA0 KV buffer size = 13824.00 MiB CUDA1 KV buffer size = 13824.00 MiB llama_kv_cache: size = 32768.00 MiB (131072 cells)

重点:

KV Cache 占用了 32768 MiB

也就是:

32GB 显存

全部被上下文缓存吃掉了。


原因分析

DeepSeek-R1:32B 默认:

Context Length = 131072

Ollama 在模型加载时直接按照:

131072 tokens

分配 KV Cache。

计算结果:

KV Cache ≈ 32GB

双 RTX4090 总显存:

24GB × 2 = 48GB

其中:

32GB

已经被 KV Cache 占用。

剩余显存:

48GB - 32GB = 16GB

不足以放下全部模型层。

因此 Ollama 被迫:

55 层放 GPU 10 层放 CPU

最终表现为:

16% CPU / 84% GPU

推理速度急剧下降。


错误尝试

很多人会尝试:

/set parameter num_ctx8192

但是没有效果。

原因是:

模型已经加载完成。

KV Cache 已经按照:

131072

创建完成。

此时修改参数不会重新分配显存。


正确解决方案

修改 Ollama 服务配置。

编辑:

sudosystemctl edit ollama

或修改已有 Override 配置:

[Service] Environment="OLLAMA_ORIGINS=https://你的IP:8989" Environment="OLLAMA_HOST=0.0.0.0" Environment="OLLAMA_MODELS=/usr/share/ollama/.ollama/models" Environment="OLLAMA_SCHED_SPREAD=1" Environment="OLLAMA_GPU_OVERHEAD=0" # 关键配置 Environment="OLLAMA_CONTEXT_LENGTH=8192"

保存后执行:

sudosystemctl daemon-reloadsudosystemctl restart ollama

验证是否生效

查看环境变量:

systemctl show ollama|grepCONTEXT

应看到:

OLLAMA_CONTEXT_LENGTH=8192

重新运行模型:

ollama run deepseek-r1:32b

然后查看日志:

journalctl-uollama-n100--no-pager|grep"KV buffer"

如果成功,KV Cache 会显著降低。


最终效果

修改前:

Context Length = 131072 KV Cache ≈ 32GB CPU/GPU = 16% / 84% 推理速度: 每秒约 1~2 个汉字

修改后:

Context Length = 8192 KV Cache 大幅降低 模型可全部加载到 GPU 推理速度显著提升

总结

当双 RTX4090 运行 DeepSeek-R1:32B 出现以下情况:

显存占满 双卡均正常识别 7B 模型速度正常 32B 模型极慢 ollama ps 显示: 16% CPU / 84% GPU

不要急着怀疑:

  • CUDA
  • 驱动
  • 双卡配置
  • Ollama 多卡支持

首先检查:

ollama show deepseek-r1:32b

是否存在:

context length = 131072

然后通过:

Environment="OLLAMA_CONTEXT_LENGTH=8192"

限制默认上下文长度。

对于双 RTX4090 用户,这是最有效、最直接的解决方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询