昨天发了这篇初级游戏笔记本电脑跑个大语言模型,全家都能用,不知道什么原因,其中有一部分的内容次序错置,因为都是从 Obsidian 用Spute(飞鱼)为 Obsidian 写的开源插件 copy-to-mp 拷过来的,不知道什么原因,Obsidian 里边的笔记完全正确,内容拷到公众号助手上去后就发生了错置,所以把文章第五节重新发一遍。
发生这个错误也怪自己在发表之前没有进行认真负责的校对,向各位读者道歉,保证将来不再发生类似的错误。
5. GPU 没用上怎么破?
大语言模型跑起来后查看模型运行情况:
> ollama psNAME ID SIZE PROCESSOR CONTEXT UNTILgemma4-smooth:latest b9997a00f454 10 GB 100% CPU 4096 4 minutes from now当 CPU 的使用率达到 100%,意味着 NVIDIA 显卡处于闲置状态,而所有的处理工作都由 CPU 来承担。这样一来,大语言模型相关的操作会变慢,同时也会让笔记本电脑的温度比正常情况下高得多。由于英伟达显卡拥有 4GB 的 VRAM,要尽量将模型中的更多层级在 GPU 上处理,其余部分才在 CPU 上运行:
更新驱动程序
本地 AI 功能需要 CUDA 的支持。 如果 NVIDIA 驱动程序过于陈旧,Ollama 将无法使用 GPU 进行运算。
前往 NVIDIA 驱动程序页面,NVIDIA Driver Page。
下载最新的“Studio Driver”(推荐用于 MSI Prestige 系列产品),或适用于 GTX 1650(笔记本版)的“Game Ready Driver”。
设置 GPU 环境变量
新建 Windows 用户“环境变量”
OLLAMA_NUM_GPU,变量值设为1,然后重启 ollama 进程。重启时先强制终止 ollama 进程,重新启动。
> stop-process-name "ollama*"-force > > ollama run <LLM_MODEL> 在模型文件中使用 “num_gpu” 参数
如果仍然无法解决上面的问题,可以强制让程序将相关图层卸载到 GPU 上。为每个模型创建一个DOCKERFILE 的文本文件(无需添加扩展名),然后生成一个简单定制的模型。
gemma3:4b -> gemma3-gpu
g3gpuFROM gemma3:4b PARAMETER num_gpu 50 在终端中运行 ollama create gemma3-gpu -f g3gpu gemma4:e4b -> gemma4-smoothg4smoothFROM gemma4:e4b PARAMETER num_gpu 99 PARAMETER num_ctx 4096 PARAMETER temperature 1.0 在终端中运行 ollama create gemma4-smooth -f g4smooth num_gpu =99 的作用是将尽可能多的图层卸载到 GPU 上,这样就不必去猜测具体的层数这样我们就有了以下四个模型:
> ollama list NAME ID SIZE MODIFIED gemma3-gpu:latest d35deb41fb79 3.3 GB 8 days ago gemma4-smooth:latest b9997a00f454 9.6 GB 10 days ago gemma4:e4b c6eb396dbd59 9.6 GB 11 days ago gemma3:4b a2af6cc3eb7f 3.3 GB 11 days agogemma3:4b
gemma4:e4b
gemma3-gpu
gemma4-smooth
现在运行 ollama run gemma3-gpu 或者 ollama run gemma4-smooth ,会强制大语言模型在 GPU 上进行处理。这意味着模型的所有参数数据都已被成功加载到了 NVIDIA 的 VRAM 中,ollama ps 命令得出处理器 100% GPU,说明 Gemma 3 4B 和 Gemma 4 E4B 的容量都在 4GB 范围之内,可以存储在显卡中。
> ollama ps NAME ID SIZE PROCESSOR CONTEXT UNTIL gemma4-smooth:latest b9997a00f454 10 GB 100% GPU 4096 4 minutes from now这时显卡 VRAM 理想情形使用率为 80%,略高也无妨,这是用于存储模型的“内存”,如果 GPU 能够正常工作,CPU 的使用率应该会降至 50%或更低,而大语言模型的反应速度会大大提升。
夜雨聆风