文章资讯 / AI 人工智能 / 大模型本地部署:用Ollama 3分钟部署Llama 3.1,4GB显存流畅运行

大模型本地部署:用Ollama 3分钟部署Llama 3.1,4GB显存流畅运行

发布时间: 分类:AI 人工智能 作者:188mi 来源:互联网 阅读:119

结论先说:用 Ollama 本地部署 Llama 3.1 是当前门槛最低的路径,安装一条命令,拉取模型后即可对话;显存不足时它会自动把部分层放到内存,几 GB 量级显卡也能跑起来,只是速度取决于硬件。

先看清前提:你的机器能跑多大的 Llama 3.1

Ollama 模型库里 Llama 3.1 常用的是 8b 和 70b 两个规格,社区还有大量微调版。个人电脑现实的选择是 8b;70b 建议至少 48GB 显存,或者大内存加 CPU 慢速推理,普通台式机不必考虑。

显存需求不能只看参数量。以 8b 为例,fp16 权重约 16GB,q8 约 8GB,q4 约 4 到 5GB,不同量化方案有浮动。除权重之外还要留 KV Cache 和运行开销,上下文 8k 时通常再吃 1GB 上下,拉到 32k 会明显上涨。所以标题里 4GB 显存那类说法要打折听,它指的是 q4 量化、短上下文、部分层卸载到 CPU 的状态,能出字,但速度有限。

先确认环境:

nvidia-smi
ollama --version

Mac 用户看“关于本机 → 更多信息”,统一内存是显存与内存共用的池子,M 系列 8GB 起步可以跑 8b 的 q4 版本,16GB 以上体验明显好一档。

安装 Ollama:一行脚本与 Windows/macOS 的差异

先装运行时,再谈模型。

Linux 服务器用官方脚本最省事:

curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama

脚本会装好二进制、创建 ollama 用户、注册 systemd 服务。想指定模型目录,先设环境变量再启动:

export OLLAMA_MODELS=/data/ollama/models

Windows 和 macOS 直接去 ollama.com 下载安装包,装完托盘常驻,命令行里 ollama 就能用。Windows 要改模型存储位置,在系统环境变量里加 OLLAMA_MODELS 后重启服务,否则默认放在 C 盘用户目录,模型多了很快吃掉几十 GB。

这一步常见的坑是网络。权重从官方仓库拉取,直连经常超时,可以配代理,或在能访问的机器上预先 pull,再整体拷贝 ~/.ollama/models 目录。

拉取与运行:模型标签怎么选、量化怎么挑

拉取和运行是两个动作:

ollama pull llama3.1:8b
ollama run llama3.1:8b

pull 只下载,run 启动交互式会话,没下载会自动下载。标签不写默认走 latest,建议显式写 8b 或带量化后缀,避免默认标签变动把脚本搞乱。想确认本地模型和磁盘占用:

ollama list
ollama show llama3.1:8b

show 会打出参数量、上下文长度、量化类型。上下文默认通常是 8k,各版本有差异,以输出为准。要临时拉长:

ollama run llama3.1:8b --num-ctx 16384

如果显存紧张,可以写一个 Modelfile 把量化、上下文、系统提示固定下来:

FROM llama3.1:8b
PARAMETER num_ctx 8192
PARAMETER num_gpu 20
SYSTEM "你是一个简洁的中文助手。"

再执行 ollama create my-llama -f Modelfile,以后用 ollama run my-llama 就是这套配置。num_gpu 控制往 GPU 放多少层,调小就多卸载到 CPU,显存占用随之下降。

显存不够时的关键环节:分层卸载与参数调参

真正决定能不能跑的是显存与模型大小的匹配度。Ollama 会自动估算并把超出的层放到 CPU 和内存,于是画面变成能出字但很慢。

监控两条命令:

ollama ps
nvidia-smi

ollama ps 的 PROCESSOR 列会显示类似 100% GPU、40%/60% CPU/GPU,一眼看出卸载程度。

可调参数:

  • num_gpu:放 GPU 的层数,越小越省显存、越慢;
  • num_ctx:上下文长度,对显存影响接近线性,能小就小;
  • num_thread:CPU 线程数,建议设成物理核心数;
  • OLLAMA_NUM_PARALLEL:并发数,家用机器设 1,设高显存成倍涨;
  • OLLAMA_KEEP_ALIVE:驻留时间,交互用 30m,脚本调用设 0 用完即卸。

实用顺序:先把 num_ctx 降到 4096,再看 ps 的卸载比例;仍大部分在 CPU,就把 num_gpu 往下调,保证显存不爆,稳定比峰值速度重要。

用 API 把本地模型接进自己的工具

Ollama 默认监听 127.0.0.1:11434,起服务:

ollama serve
curl http://127.0.0.1:11434/api/generate -d '{
  "model": "llama3.1:8b",
  "prompt": "用三句话解释 DNS 解析过程",
  "stream": false
}'

它也提供 OpenAI 兼容接口,路径是 /v1/chat/completions,客户端只要改 base_url:

base_url = "http://127.0.0.1:11434/v1"
api_key  = "ollama"

局域网内其他机器要访问,改 OLLAMA_HOST=0.0.0.0:11434 后重启服务并放行防火墙。这等于把模型暴露给内网,不要直接开到公网。

常见报错与速度参考

  • 提示模型超出系统内存:换更小的量化或更小参数版本;
  • 拉取卡在某个百分比:网络问题,配代理或换时间段重试;
  • 首次回答特别慢:权重从磁盘加载,第二次起会快,把 OLLAMA_KEEP_ALIVE 调长可保留;
  • 输出重复或语无伦次:上下文太小或量化太狠,换 q4_K_M 以上的量化;
  • 速度参考:纯 GPU 跑 8b 的 q4,消费级显卡常见几十 token/s,部分卸载到 CPU 后往往掉到个位数。数字随硬件差异大,以 ollama run --verbose 的输出为准。

判断标准可以简单些:本地问答、草稿、轻量代码补全,8b 量化版够用;要长上下文、高并发、稳定低延迟,本地小显存方案不划算,租卡或用云端 API 更省事。

相关工具与阅读