属于我的 Ubuntu 本地大模型部署苦旅你永远不知道,一个 CUDA out of memory 能让人多绝望
起因:大模型很火,我想试试
某天,我刷到了“本地部署 LLaMA 3”、“单机运行 ChatGPT 级别模型”的视频。博主行云流水地敲了几行命令,然后一个智能助手就在他的终端里诞生了
我心想:我好歹也学过几天 Linux,敲过 `ls`、`cd`、`sudo rm -rf /*`(误),部署个模型能有多难?
于是,我打开我那台只有 8GB 内存、没有独立显卡的轻薄本,开始了噩梦苦旅
第一章:安装 Ollama,一帆风顺?
网上都说 Ollama 最简单,一行命令搞定。我照做了:
curl -fsSL https://ollama.com/install.sh | sh
顺利得让我有点不安。安装完成后,我迫不及待地运行:
ollama run llama2:7b
然后看到一行字:`pulling manifest`,接着就开始下载。我欣慰地想:这不挺简单吗?
五分钟后,下载进度 5%
二十分钟后,30%
一个小时后,90%然后卡住了。进度条再也不动了。我重试,从头开始。我换网络,依然慢如蜗牛。我心想,难道要挂代理?可我连代理都不会配。最后,我用了三天时间,断断续续地把它下完了
第二章:第一次跑起来,但……
下载完 `llama2:7b`,我运行 `ollama run llama2:7b`,终端显示 `>>> Send a message`我激动地打了“Hello”
然后风扇狂转,CPU 占用 100%,过了整整两分钟,它回了一句:“Hello! How can I help you today?”
我感动得差点哭出来——不是因为回答多好,而是它居然没崩
我问了一个稍微长一点的问题:“请写一篇关于人工智能发展的短文”
终端闪了一下,然后弹出一个词:`exit`。模型崩了
我查了一下,7B 模型需要大约 8GB 内存,而我的电脑只有 8GB,系统还占了一半
于是我只能跑更小的模型,比如 `tinyllama`。它的回答质量嘛……大概和 2005 年的机器人客服差不多
第三章:尝试 GPU 加速,结果发现没显卡
我听说用显卡跑会快很多,而且能跑大模型。于是我打开终端,输入 `nvidia-smi`
返回:`command not found`。
我装驱动,发现我的笔记本显卡是 Intel 集成显卡。NVIDIA?不存在的
我搜索“AMD 集成显卡 大模型 加速”,得到的答案基本都是:放弃吧
我不甘心,又搜索“CPU 加速推理”,找到了 `llama.cpp`,据说可以用 CPU 的 AVX2 指令集优化
于是我又开始了漫长的编译之旅
第四章:编译 llama.cpp,依赖地狱再现
我 `git clone` 了 `llama.cpp`,按照 README 执行 `make`。报错:`missing g++`
我装 `g++`。然后又报错:`missing make`。我装 `make`。然后又报错:`c++17 not supported`
我升级 GCC,结果破坏了系统的依赖关系,VSCode 打不开了
我花了整整一个晚上修复系统。最终我学会了 `docker`,拉了一个现成的 `llama.cpp` 镜像,才勉强跑起来
第五章:量化模型,我成了硬盘杀手
`llama.cpp` 需要把模型转换成 `gguf` 格式,还要量化以减少内存占用。量化等级有 Q2、Q4、Q8……我选了 Q4
转换一个 7B 模型需要下载原始模型文件(13GB),转换过程又需要额外的临时空间。我的 256GB 硬盘瞬间被塞满。我删掉了 Steam 游戏,删掉了下载的电影,甚至删掉了 `/var/cache/apt/archives`。最后,我终于得到了一个 4GB 的量化模型
运行 `./main -m tinyllama.gguf -p "你好"`,等待 30 秒,输出:“你好,世界!”
虽然慢,但至少没崩
第六章:Web 界面,我又掉进了 Node.js 的坑
我不想只在终端里和模型对话,想搞一个漂亮的 Web 界面。教程推荐 Open WebUI,需要 Docker
我装 Docker,启动容器,访问 `localhost:3000`。页面出来了,但模型列表是空的。查了半天,原来是 Ollama 和 Open WebUI 的网络没打通。我又加了 `--network host` 参数,终于连上了
但每次对话,浏览器都会转圈圈半分钟,然后才显示一个字一个字往外蹦。室友凑过来看:“你这 AI 怎么像脑血栓患者?”我无言以对
第七章:最后的妥协
折腾了两周后,我放弃了在本地跑任何超过 3B 参数的模型
现在我用的是一个叫做 `phi-2` 的小模型,它只有 2.7B,能在我的笔记本上流畅运行。虽然它不会写诗,不会写代码,连基本的逻辑推理都经常出错,但它至少不会崩溃
每当我问它一个复杂问题,它给出一个驴唇不对马嘴的回答时,我都会想起那段编译 `llama.cpp` 的深夜,想起那些 `CUDA out of memory` 的幻想,想起那台风扇嘶吼到差点起飞的笔记本
结尾:我收获了什么?
我依然没能像视频博主那样,在自己的电脑上跑起一个聪明的 AI 助手。
但我学会了:
如何编译开源项目
如何配置 Docker 网络
如何量化模型
如何用 `strace` 调试进程崩溃
最重要的是:*在开始一个项目前,先看清自己的硬件*
现在,我用云 GPU 租用服务跑大模型,每小时几块钱,快得飞起。我的笔记本恢复了它安静的看视频、写文档的功能
至于本地部署?也许等我买了带 24GB 显存的台式机再说吧
不过到那时候,大概又会有更大、更吃配置的模型出来了
永远追不上,但永远在追——这可能就是 AI 时代的宿命吧
如果你也想在 Ubuntu 上部署本地大模型,我唯一的建议是:先看钱包,再看配置,最后再看教程
以及,做好删游戏的准备
更多推荐

所有评论(0)