Ollama 本地大模型部署指南 / 01 - Ollama 概述与对比
第 1 章:Ollama 概述与对比
了解 Ollama 是什么、能做什么,以及它与同类工具的优劣差异。
1.1 什么是 Ollama
Ollama 是一个开源的本地大语言模型(Large Language Model, LLM)运行框架,目标是让在本地部署和运行 LLM 像使用 Docker 一样简单。它封装了底层的模型推理引擎(基于 llama.cpp),提供了统一的命令行工具和 REST API,支持在消费级硬件上运行数十种主流开源模型。
核心设计理念
┌───────────────────────────────────────────────────┐
│ Ollama 设计哲学 │
├───────────────────────────────────────────────────┤
│ ✅ 简单优先 — 一条命令即可运行模型 │
│ ✅ 本地运行 — 数据不出本机,隐私安全 │
│ ✅ 轻量高效 — 量化 + CPU/GPU 混合推理 │
│ ✅ 兼容性强 — 跨平台 (Linux/macOS/Windows) │
│ ✅ 生态丰富 — 支持 LangChain 等主流框架 │
└───────────────────────────────────────────────────┘
发展历程
| 时间 | 里程碑 |
|---|---|
| 2023 年 8 月 | Ollama 首次发布,支持 macOS 和 Linux |
| 2023 年 10 月 | 新增 Windows 支持,发布 0.1.0 |
| 2024 年 3 月 | 推出 ollama create 自定义模型功能 |
| 2024 年 6 月 | 支持多模态模型(LLaVA) |
| 2024 年 11 月 | 新增 OpenAI 兼容 API 端点 |
| 2025 年初 | 支持工具调用(Tool Calling)和结构化输出 |
1.2 核心特性
1.2.1 一键运行模型
# 拉取并运行 Qwen 2.5 7B 模型
ollama run qwen2.5:7b
Ollama 自动处理以下步骤:
模型下载 → 模型验证 → 量化加载 → 内存分配 → 启动推理
1.2.2 模型管理
# 查看本地已有模型
ollama list
# 拉取特定版本(带量化标签)
ollama pull llama3.1:8b-instruct-q4_K_M
# 查看模型详情
ollama show qwen2.5:7b
# 删除模型
ollama rm llama3:8b
# 复制/重命名模型
ollama cp llama3.1 my-llama
1.2.3 REST API
所有运行的模型自动暴露 REST API(默认端口 11434):
# Chat API
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [{"role": "user", "content": "你好"}]
}'
# Generate API
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5:7b",
"prompt": "用 Python 写一个快速排序"
}'
1.2.4 自定义模型(Modelfile)
# Modelfile 示例
FROM qwen2.5:7b
PARAMETER temperature 0.7
PARAMETER num_ctx 8192
SYSTEM """
你是一个专业的 Python 开发助手,擅长编写清晰、高效的代码。
回答时请包含代码注释和类型提示。
"""
# 从 Modelfile 创建自定义模型
ollama create python-helper -f Modelfile
ollama run python-helper
1.2.5 多模态支持
# 运行多模态模型
ollama run llava:7b "描述这张图片的内容" /path/to/image.jpg
1.2.6 工具调用(Function Calling)
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [{"role": "user", "content": "北京今天天气如何?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"}
}
}
}
}]
}'
1.3 支持的模型
1.3.1 主流模型一览
| 模型系列 | 参数规模 | 特点 | 适用场景 |
|---|---|---|---|
| Llama 3/3.1 | 8B, 70B, 405B | Meta 出品,综合能力强 | 通用对话、代码生成 |
| Qwen 2.5 | 0.5B-72B | 阿里出品,中文能力强 | 中文任务、代码、数学 |
| Gemma 2 | 2B, 9B, 27B | Google 出品,轻量高效 | 设备端部署、轻量任务 |
| Mistral/Mixtral | 7B, 8x22B | 法国团队,MoE 架构 | 高性能推理、长文本 |
| DeepSeek V3/R1 | 7B, 67B | 深度求索,推理能力突出 | 代码、数学推理 |
| Phi-3 | 3.8B, 14B | 微软出品,小模型之王 | 端侧部署、低资源环境 |
| Yi | 6B, 34B | 零一万物,中英双语 | 中英跨语言任务 |
| CodeLlama | 7B, 13B, 34B | 代码专用版 Llama | 代码生成、补全 |
| LLaVA | 7B, 13B | 多模态视觉模型 | 图片理解、OCR |
| Command R+ | 104B | Cohere 出品,RAG 优化 | 检索增强生成 |
1.3.2 量化版本说明
Ollama 默认提供多种 GGUF 量化版本,通过标签选择:
# 不同量化等级
ollama pull qwen2.5:7b # 默认(通常为 Q4_K_M)
ollama pull qwen2.5:7b-q4_0 # 4-bit 量化,体积最小
ollama pull qwen2.5:7b-q8_0 # 8-bit 量化,平衡选择
ollama pull qwen2.5:7b-fp16 # 16-bit 半精度,最高质量
| 量化类型 | 位宽 | 模型体积(7B) | 质量损失 | 推荐场景 |
|---|---|---|---|---|
Q4_0 | 4-bit | ~4 GB | 较大 | 内存受限环境 |
Q4_K_M | 4-bit | ~4.5 GB | 中等 | 默认推荐 |
Q5_K_M | 5-bit | ~5.3 GB | 较小 | 质量与速度平衡 |
Q6_K | 6-bit | ~6 GB | 很小 | 高质量需求 |
Q8_0 | 8-bit | ~7.5 GB | 极小 | 接近原始质量 |
FP16 | 16-bit | ~14 GB | 无 | 基准/评测用 |
1.4 与同类工具对比
1.4.1 Ollama vs vLLM
vLLM 是一个高性能的 LLM 推理和服务引擎,主要用于生产环境。
| 维度 | Ollama | vLLM |
|---|---|---|
| 定位 | 本地开发/个人使用 | 生产级服务 |
| 易用性 | ⭐⭐⭐⭐⭐ 一条命令 | ⭐⭐⭐ 需要配置 |
| 推理性能 | 中等 | ⭐⭐⭐⭐⭐ 极高 |
| 并发支持 | 有限(单用户为主) | ⭐⭐⭐⭐⭐ 高并发 |
| GPU 支持 | CUDA/ROCm/Metal | CUDA(ROCm 实验性) |
| API 兼容 | 自有 + OpenAI 兼容 | OpenAI 兼容 |
| 量化支持 | GGUF(丰富) | AWQ/GPTQ/FP8 |
| 模型格式 | GGUF(llama.cpp) | HuggingFace (safetensors) |
| 内存管理 | 简单分配 | PagedAttention 高效 |
| 安装复杂度 | 一行命令 | 需要 pip + CUDA 环境 |
| 适用场景 | 本地开发、原型验证 | 生产部署、API 服务 |
vLLM 的核心优势 — PagedAttention:
传统方式: vLLM PagedAttention:
┌──────────────────────┐ ┌──────────────────────┐
│ ██████████████ 70% │ │ ██████████ 90%+ │
│ 碎片化内存, 浪费严重 │ │ 分页管理, 利用率极高 │
└──────────────────────┘ └──────────────────────┘
选择建议:
是否需要高并发生产服务?
├── 是 → vLLM
└── 否 → 是否需要快速原型/本地开发?
├── 是 → Ollama ✅
└── 否 → 根据团队技术栈选择
1.4.2 Ollama vs LM Studio
LM Studio 是一个桌面 GUI 应用,也用于本地运行 LLM。
| 维度 | Ollama | LM Studio |
|---|---|---|
| 界面 | CLI + API | GUI 桌面应用 |
| 开源 | ✅ 完全开源 | ❌ 闭源 |
| API 服务 | ✅ 内置 REST API | ✅ 本地 API 服务器 |
| 模型格式 | GGUF | GGUF |
| 跨平台 | Linux/macOS/Windows | macOS/Windows |
| 自动化 | ✅ 脚本友好 | ❌ 手动操作为主 |
| Docker 支持 | ✅ 官方镜像 | ❌ 不支持 |
| 资源占用 | 轻量(无 GUI) | 较重(Electron 应用) |
| 适合人群 | 开发者、运维 | 非技术用户、探索者 |
1.4.3 Ollama vs LocalAI
LocalAI 是一个与 OpenAI API 兼容的本地推理服务。
| 维度 | Ollama | LocalAI |
|---|---|---|
| API 兼容 | OpenAI 部分兼容 | OpenAI 完全兼容 |
| 模型格式 | GGUF | 多格式(GGUF/GGML/ONNX等) |
| 功能范围 | 文本/嵌入/多模态 | 文本/图像/音频/嵌入 |
| 易用性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 社区活跃度 | 极高 | 中等 |
| Docker 支持 | ✅ | ✅ |
1.4.4 综合对比矩阵
| 特性 | Ollama | vLLM | LM Studio | LocalAI |
|---|---|---|---|---|
| 易用性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 推理性能 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 并发能力 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| 生态集成 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| GPU 支持 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 开源程度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
| 生产适用 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐ |
1.5 典型应用场景
场景一:个人 AI 助手
# 日常对话助手
ollama run qwen2.5:14b
# 专用写作助手
cat > Modelfile << 'EOF'
FROM qwen2.5:14b
PARAMETER temperature 0.8
SYSTEM "你是一个专业的写作助手,擅长中英文写作,风格优雅流畅。"
EOF
ollama create writer -f Modelfile
场景二:代码辅助开发
# 代码生成与审查
ollama run deepseek-coder-v2:16b
# Python 专用助手
ollama run codellama:13b-python
场景三:企业知识库问答(RAG)
用户提问 → 向量检索 → Ollama 生成回答
│ │ │
"公司年假政策" → 匹配文档片段 → 基于片段生成自然语言回答
场景四:数据隐私敏感场景
┌─────────────────────────────────────────┐
│ 数据不出内网的安全架构 │
│ │
│ ┌─────────┐ ┌─────────────────┐ │
│ │ 用户终端 │───→│ Ollama (本地) │ │
│ └─────────┘ │ - 数据不外传 │ │
│ │ - 无第三方依赖 │ │
│ │ - 审计可控 │ │
│ └─────────────────┘ │
└─────────────────────────────────────────┘
1.6 Ollama 的局限性
| 局限性 | 说明 | 替代方案 |
|---|---|---|
| 并发性能有限 | 默认单请求推理,不适合高并发 | 使用 vLLM 或 TGI |
| 模型格式限制 | 仅支持 GGUF 格式 | 使用 llama.cpp 直接转换 |
| 分布式推理不支持 | 无法跨多机推理 | 使用 vLLM + Ray |
| 高级量化有限 | 不支持 GPTQ/AWQ | 使用 vLLM + AutoGPTQ |
| 微调不支持 | 不能直接微调模型 | 使用 HuggingFace + LoRA |
1.7 架构解析
Ollama 的内部架构分为四层:
┌─────────────────────────────────────────────────────┐
│ CLI / API Layer │
│ (命令行工具 + HTTP 服务器) │
├─────────────────────────────────────────────────────┤
│ Runtime Layer │
│ (模型调度 · 会话管理 · 上下文窗口管理) │
├─────────────────────────────────────────────────────┤
│ Engine Layer │
│ (llama.cpp · GGUF 量化引擎) │
├─────────────────────────────────────────────────────┤
│ Hardware Layer │
│ (CPU · CUDA · ROCm · Metal · SYCL) │
└─────────────────────────────────────────────────────┘
1.8 本章小结
| 要点 | 说明 |
|---|---|
| Ollama 是什么 | 本地运行 LLM 的轻量级框架 |
| 核心优势 | 易用性、跨平台、开源、丰富的模型库 |
| 适用场景 | 本地开发、原型验证、隐私敏感、个人使用 |
| 不适用场景 | 高并发生产服务、大规模分布式推理 |
| 与 vLLM 对比 | Ollama 易用但性能有限;vLLM 适合生产 |
| 与 LM Studio 对比 | Ollama 开源 + CLI;LM Studio 闭源 + GUI |
扩展阅读
📖 下一章: 第 2 章:安装与环境配置 →