ollama gpu 加速 linux

模型与算力

给 Linux 用户讲清开启 Ollama 显卡加速要装的驱动与运行时依赖,附检查顺序和常见卡点排查。

你在 Linux 上装完 Ollama,跑模型时发现 CPU 风扇狂转、输出慢得像挤牙膏,多半是显卡压根没被用上。这篇不讲原理,只给一条从驱动到运行时依赖的检查链路:先确认卡被系统认出来,再确认驱动和计算运行时齐了,最后回到 Ollama 侧看它认到几张卡、分了多深。适合刚上手本地推理、或者换机器后加速失效的人。

你在 Linux 上装完 Ollama,跑模型时发现 CPU 风扇狂转、输出慢得像挤牙膏,多半是显卡压根没被用上。这篇不讲原理,只给一条从驱动到运行时依赖的检查链路:先确认卡被系统认出来,再确认驱动和计算运行时齐了,最后回到 Ollama 侧看它认到几张卡、分了多深。适合刚上手本地推理、或者换机器后加速失效的人。

整条链路的排查顺序建议固定下来,避免东改一处西改一处:卡是否被系统识别 → 驱动版本 → 计算运行时是否可调用 → Ollama 是否识别到卡 → 模型是否完整装进显存。下面四节按这个顺序拆开讲,每一步都给验证动作,做完一步再进下一步。

第一步:先确认系统认不认这张卡

先别动 Ollama。显卡加速失效时,最常见的原因根本不在这层,而在系统和驱动之间。这一步的目标只有一个:确认设备已经被内核驱动正常接管。设备都在系统里看不到,后面怎么调 Ollama 参数都是白费。

  • 用发行版自带的硬件信息命令或显卡厂商自带的查询工具,看设备有没有被驱动接管;设备存在但查询报错,方向就在驱动层,不在 Ollama。
  • 看内核模块是否加载、有没有掉进开源兼容驱动的坑;换了新卡却没重启或没重建 initramfs,模块不会自动生效。
  • 集显、独显、多卡机器要分别确认,Ollama 默认行为不一定是你在想的那张卡。
  • 笔记本双显卡切换的机器,先确认当前跑在独显还是集显上,否则后面所有判断都会偏。

第二步:驱动与计算运行时依赖要对齐版本

显卡厂商的驱动和计算运行时是两层东西,很多人卡在这两层的版本关系上。驱动版本太老时,运行时装得再新也没用,所以先查两者的兼容矩阵,而不是上来就装最新。版本对应关系去显卡厂商自家的兼容文档核对,别凭记忆。

驱动
操作系统层和显卡对话的那一层,装在宿主上,决定卡能不能被正常调度。
计算运行时
上层框架调用显卡算力的库环境,由它把推理请求翻译成显卡能执行的指令。
动态库路径
运行时装好后能不能被程序找到的关键,找不到时报的是找不到库,而不是没有显卡。

运行时不必装全量工具包,多数场景只需要它能被 Ollama 调起来。容器里跑 Ollama 的话,宿主驱动要在容器外装好并透传进去,容器内再装一遍驱动是常见的白费功夫。用厂商官方打包好的镜像,通常依赖已经配好,不用自己拼。

第三步:让 Ollama 明确知道你用哪张卡

多卡机器最容易出问题:Ollama 的默认选择不一定是性能最强的那块。用环境变量指定可见设备,或者在启动服务时限定卡号,是这里最直接的做法。调完参数记得重启 Ollama 服务再验证,只改环境变量不重启,进程里跑的还是旧配置。

  1. 限定可见设备启动服务前用环境变量把要用到的卡指定出来,多卡机器只暴露给 Ollama 它该用的那几张。
  2. 重启服务改完配置后完整重启 Ollama 服务进程,再发起一次推理请求验证配置是否真正生效。
  3. 判断是否真用上跑一个明显超出 CPU 能力的模型,看显存占用和输出速度是不是跟着变;具体数字去 /tools/speed-test 量你自己的基线,别拿别人的数值套。

有一个情况要提前想清楚:显存本来就装不下整个模型时,它会把一部分层放回 CPU,这时候看着像用了 GPU,但速度还是上不去。这不是配置错了,是模型尺寸和显存不匹配,得换个量化档位或更小的尺寸。

第四步:验证与常见卡点排查顺序

排查最忌讳跳步。固定按下面这条链路走一遍,每一步都留下明确的判断证据,比反复试跑省时间得多。改完配置后优先看服务日志里的加载信息,日志里没提显卡,就是前面某一层断了。

排查层看什么不通时的表现
设备识别系统能否列出这张卡设备都看不到,直接查驱动和内核模块
驱动版本驱动与运行时的兼容关系设备在但查询报错,方向在驱动
运行时动态库能否被进程找到报找不到库,而不是报没有显卡
Ollama 侧启动后是否列出可用显卡日志或状态里没有显卡条目
显存分配模型是否完整装进显存看着用了卡,但速度没有变化

显存够不够用,按参数量和量化档位估,先用 /models/deploy 算一遍再决定拉哪个尺寸的模型,别凭感觉一个个试。你机器上的实际能耗与速度表现,去 /tools/speed-test 量自己的基线,比网上任何现成结论都可靠。

有几个场景不适用这套顺序:笔记本双显卡切换的机器,驱动由发行版和厂商工具管;走云主机租卡的,驱动由平台负责,你只需要确认镜像类型对不对;纯 CPU 场景本来就不需要这段。判断自己属于哪种,再决定要不要往下走。

常见问题

我装好了 Ollama,怎么快速判断它到底有没有用显卡?

最简单的办法是跑一个明显超出 CPU 处理能力的模型,同时另开一个终端看显存占用有没有涨。如果显存几乎不动、输出速度也和之前一样慢,那就是没吃上显卡,回头按驱动、运行时、卡号指定这三层依次查。想看更细的数字,可以到站内的接口测速页量一下你的延迟和输出速度基线,跟自己之前的数据对比。

驱动和计算运行时是不是装一个就够了?

不是一回事。驱动是系统层面的,负责让内核和显卡对话;计算运行时是上层调用库,Ollama 靠它把计算任务派给显卡。驱动版本太旧,运行时再新也调不起来,所以要先看两者的兼容关系。容器部署的话,驱动装在宿主上、运行时在镜像里,别在容器内重复装驱动。具体版本要求以显卡厂商和 Ollama 官方说明为准。

多张显卡的机器,怎么指定让它只用其中一张?

常见做法是通过环境变量限定可见设备,或者在服务启动参数里指定卡号,限定后再重启 Ollama 服务,光改环境变量不重启不生效。选卡时要看显存和带宽,不要默认让系统挑。如果只是跑小模型做实验,用其中一张就够,把另一张留给别的任务反而更合理。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。