用 Ollama 运行您自己的 AI:CPU 上的预期表现
Ollama 是在自己的服务器上运行开放 AI 模型的工具。Seturack 的服务器没有显卡(GPU),所以模型在 CPU 上运行。这意味着小模型(1B 到 4B 参数)可以用于聊天和简短任务,7B 到 8B 参数的模型能运行但很慢,更大的则不实用。模型的文件大小是您应为它预留的 RAM 的下限。
本文对速度的说法来自一般经验,而不是在 Seturack 服务器上的测量。模型大小来自 Ollama 自己的模型库。
模型必须能装进 RAM
| 模型 | 参数量 | 文件大小 |
|---|---|---|
llama3.2:1b | 1B | 1.3 GB |
llama3.2:3b | 3B | 2.0 GB |
gemma3:4b | 4B | 3.4 GB |
qwen2.5:7b | 7B | 4.7 GB |
llama3.1:8b | 8B | 4.9 GB |
gemma3:12b | 12B | 8.2 GB |
qwen2.5:14b | 14B | 9.0 GB |
qwen2.5:32b | 32B | 20 GB |
文件大小接近模型加载到内存中的那部分。除此之外,还有取决于对话长度的上下文内存、Ollama 自身的开销和操作系统的占用。所以 RAM 与文件大小相等是不够的,需要留出余量。没有精确的倍数,但测量很容易:模型加载完成后运行 free -h。模型库在不断更新,请查看 Ollama 的模型库获取当前列表。
该选多大的服务器?
| 模型规模 | 合理的起步 RAM |
|---|---|
| 1B 到 3B 参数 | 4 GB |
| 7B 到 8B 参数 | 8 GB |
| 12B 到 14B 参数 | 16 GB |
| 32B 参数 | 24-32 GB,在 CPU 上仍然非常慢 |
这张表是在上面的文件大小上加余量得出的经验值,不是官方推荐。如果 RAM 用完,系统会开始把磁盘当作内存使用(swap),速度急剧下降,或者进程被终止。尝试大模型之前,更稳妥的做法是先升级服务器。
在 CPU 上会是什么体验
- 文本生成在很大程度上受内存带宽限制。模型越大,回答流出得越慢。
- 与显卡相比,CPU 明显更慢。回答流出的速度可能比您阅读的速度还慢。
- 处理长文本会让等待第一个回答的时间变长。第一次请求时,模型要从磁盘加载到内存,所以会来得更晚。
- 多个用户同时使用时,速度会被他们平分。
适合的场景:简短摘要、分类、邮件草稿、个人助手、实验和开发、小型自动化。吃力的场景:面向大量用户的在线服务、大模型、实时回复、大量代码生成。
安装(Ubuntu)
- 运行官方的一行安装脚本:
curl -fsSL https://ollama.com/install.sh | sh建议先下载并读一遍脚本。 - 从一个小模型开始:
ollama run llama3.2:3b - 查看模型运行在哪里:
ollama ps如果 Processor 一列只显示 CPU,说明模型完全位于系统内存中。 - 注意磁盘空间。在 Linux 上,模型存放在
/usr/share/ollama/.ollama/models下,每个都要占用几个 GB。用ollama list列出它们,用ollama rm删除。
如果您更喜欢 Docker,官方命令是 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama。我们建议只把端口绑定到本地地址:-p 127.0.0.1:11434:11434。
该选哪个模型?
从 3B 参数的模型开始,用您自己的工作内容试一试。小模型的土耳其语表现通常不如英语,所以请用您自己的文本测试。如果回答不够好,就升一级,并用 free -h 确认 RAM 够用。
表中的大小对应模型库的默认标签。模型通常经过压缩(量化)到 4 位左右。按 16 位精度,8B 参数大约要 16 GB,压缩后降到 5 GB 左右,就像表中那样。代价是损失少量质量。
在应用中使用
Ollama 提供本地 API。在服务器内部,可以这样试一下:
curl http://127.0.0.1:11434/api/generate -d '{"model":"llama3.2:3b","prompt":"Hello, introduce yourself.","stream":false}'
回答以 JSON 返回。自动化工具和您自己的应用可以连接同一个 API。
管理内存
- 默认情况下,Ollama 会在最后一次请求之后把模型在内存中保留 5 分钟。这段时间里 RAM 看起来被占满是正常的。
ollama stop MODEL_NAME会立即卸载模型。 OLLAMA_MAX_LOADED_MODELS限制可以同时保持加载的模型数量。在 CPU 上默认是 3。如果 RAM 紧张,请设为 1,否则依次调用不同的模型会让它们都留在内存中。OLLAMA_NUM_PARALLEL是每个模型的并行请求数,默认为 1。调得越高,需要的 RAM 越多。
安全
- 默认情况下,Ollama 只监听
127.0.0.1的 11434 端口。如果用OLLAMA_HOST把它开放出去,知道地址的人都能使用您的模型,因为 API 默认没有认证环节。请不要暴露它。 - 远程使用的话,SSH 隧道就够了:
ssh -L 11434:127.0.0.1:11434 user@SERVER_IP - Docker 会跳过 ufw 对其发布端口的规则。所以才像上面那样,只把端口绑定到本地地址。
- 要在浏览器里聊天,可以安装 Open WebUI 这样的界面。请把它放在 HTTPS 后面运行,并用用户账户保护起来。
数据与许可
在自己的服务器上运行模型时,您的对话留在您的服务器上。Ollama 也提供在云端运行的模型。它们不在您的服务器上运行,不在本文讨论范围之内。每个模型都有自己的许可,商用之前请阅读模型页面上的许可。
升级服务器
换模型时,RAM 需求也会变化。如果从 3B 参数的模型起步,再升到 8B 参数的,您可以在面板中升级服务器。升级不会删除服务器,您的 IP 地址和数据保持不变。降配时磁盘不会缩小,而模型可能占满磁盘,所以也要把磁盘考虑进去。
您可以在价格页面算出您的价格。
Seturack 上的现成方案: Ollama, AnythingLLM, Qdrant.
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。