本地 LLM 部署指南:使用 Ollama 在本地运行开源大模型

把大模型跑在自己的机器上,曾经是 GPU 集群的专属玩法。如今一个几百 MB 的安装包就能让普通笔记本跑起 3B 参数的模型,这就是 开源大模型 生态带来的变化。Ollama 把模型下载、运行、API 暴露打包成了三条命令,不需要 GPU 也能跑小模型,有 GPU 则可以运行更大的模型。对于重视数据隐私、想省 API 费用、或者想完全掌控推理过程的团队,这是一条非常实际的路径。

安装 Ollama

# macOS
brew install ollama

# Linux
curl -fsSL https://ollama.com/install.sh | sh

# Docker
# docker run -d --name ollama -p 11434:11434 ollama/ollama

Linux 一键脚本会自动配置 systemd 服务,开机自启。Docker 方式适合服务器部署,但注意容器内要用 NVIDIA Container Toolkit 才能让 GPU 生效。安装完成后运行 ollama --version 验证。

下载和运行模型

# 拉取并运行模型(自动下载)
ollama run llama3.2:3b    # Llama 3.2 3B,适合 CPU
ollama run mistral         # Mistral 7B,需要 8GB RAM
ollama run qwen2.5:7b      # Qwen 2.5 7B,中文效果优秀
ollama run llama3.2:11b    # Llama 3.2 11B,需要 16GB+ RAM

ollama run 会自动下载模型到本地(默认存储于 ~/.ollama),并进入交互式聊天界面。日常管理还有几条命令:ollama list 查看已下载模型,ollama pull <model> 只下载不运行,ollama rm <model> 删除模型释放磁盘。

模型对比

模型 参数 最低 RAM 中文 速度(CPU) 适合场景
Llama 3.2 3B 3B 4GB 一般 简单问答、分类
Mistral 7B 7B 8GB 一般 中等 通用对话
Qwen 2.5 7B 7B 8GB 优秀 中等 中文场景
Llama 3.2 11B 11B 16GB 一般 复杂推理
Qwen 2.5 14B 14B 16GB 优秀 中文+复杂

选模型的第一个标准是"中文效果好不好"。Qwen(通义千问)系列在中文语料上训练充分,中文场景下即使参数更小,体验也常常好过参数更大的英文模型。第二个标准是内存:模型推理时会把权重加载进内存,7B 量化版大约需要 6-8GB,11B 需要 16GB+。小内存机器优先选 3B/7B 量化版本。如果有独立显卡,优先把大一点的模型放到 GPU 上跑,把 CPU 留给其他服务。

API 调用

Ollama 自动提供 REST API,可直接从应用调用:

# API 请求
curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "为什么选择云主机?",
  "stream": false
}'
// 从 Node.js 调用
const response = await fetch('http://localhost:11434/api/generate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'qwen2.5:7b',
    prompt: '用三句话介绍云主机',
    stream: false
  })
});
const data = await response.json();
console.log(data.response);

默认端口 11434,/api/generate 用于单次生成,/api/chat 支持多轮对话。stream: true 时返回 SSE 流式结果,适合打字机效果的聊天界面。OpenAI 兼容端点 /v1/chat/completions 让你把现有调用 OpenAI 的代码直接切到本地模型,改一行 base URL 即可。

Docker Compose 部署(服务器)

version: '3.8'
services:
  ollama:
    image: ollama/ollama:latest
    ports:
      - "127.0.0.1:11434:11434"
    volumes:
      - ollama-models:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  ollama-models:

注意 ports 绑定的是 127.0.0.1:11434——只允许本机访问,避免未授权的 API 调用消耗算力。ollama-models 命名卷持久化模型文件,容器重建不用重新下载。GPU 段需要宿主机安装 NVIDIA 驱动与 nvidia-container-toolkit。

量化与显存选择

同样的 7B 模型,用 FP16 还是 Q4 量化,内存占用和效果差别很大。量化(quantization)把权重从 16 位压缩到 4-8 位,显存占用大幅下降,代价是极轻微的质量损失。Ollama 的模型标签里常见后缀:q4_K_M 约 4.7GB,是 7B 模型的性价比之选;q8_0 约 7.5GB,质量更高;f16 是原始精度,适合内存充裕的机器。选择原则很简单:先满足内存约束,再在剩余预算里挑更高精度的档位。拉取时直接在标签里指定即可:

ollama pull qwen2.5:7b-q4_K_M

实测中,7B 的 Q4 量化版在多数任务上与未量化版差距很小,却能让 8GB 内存的机器流畅跑起来——这是 CPU 部署 7B 模型的常见做法。

一个真实场景

一个在线教育团队需要给课程做"AI 助教":基于讲义内容回答学员提问。他们把 Qwen 2.5 7B 部署在一台 16G 内存的云主机上,课程讲义用向量库检索后拼进 prompt,由本地模型生成回答。相比调用云端大模型,单次成本近乎为零,更关键的是讲义数据全程不出服务器,不存在外泄风险。上线前他们先在开发机上用 Q4 量化版验证了回答质量,再迁移到 16G 云主机,并把 Ollama 绑定在本机端口、通过内网网关统一鉴权。高峰期加上流式输出和并发排队,体验与云端模型相差不大,但成本结构完全不同——没有按 token 计费,只有一台固定月租的服务器。

常见问题

  • 没有 GPU 能跑吗? 能。3B 模型在纯 CPU 上也能流畅对话;7B 用 CPU 偏慢但可用,建议加量化(如 qwen2.5:7b-q4_K_M)。
  • 模型存在哪里? 默认 ~/.ollama/models,可通过环境变量 OLLAMA_MODELS 改位置。
  • 并发性能如何? Ollama 默认按请求排队,高并发需要借助 Open WebUI、vLLM 或前置网关。
  • 如何控制内存占用?OLLAMA_NUM_PARALLELOLLAMA_MAX_LOADED_MODELS 环境变量限制并发加载,避免多个模型同时驻留内存。

16IDC 观察

Ollama 让本地 LLM 部署变得前所未有的简单。对于注重数据隐私的网站和 SaaS 产品,自托管 LLM 是一个值得考虑的方案——数据不出服务器,无需 API 费用,完全可控。建议从 Qwen 2.5 7B 或 Llama 3.2 3B 开始尝试。

参考:Ollama 官方文档 https://docs.ollama.com/;模型库 https://ollama.com/library