强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

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.18B, 70B, 405BMeta 出品,综合能力强通用对话、代码生成
Qwen 2.50.5B-72B阿里出品,中文能力强中文任务、代码、数学
Gemma 22B, 9B, 27BGoogle 出品,轻量高效设备端部署、轻量任务
Mistral/Mixtral7B, 8x22B法国团队,MoE 架构高性能推理、长文本
DeepSeek V3/R17B, 67B深度求索,推理能力突出代码、数学推理
Phi-33.8B, 14B微软出品,小模型之王端侧部署、低资源环境
Yi6B, 34B零一万物,中英双语中英跨语言任务
CodeLlama7B, 13B, 34B代码专用版 Llama代码生成、补全
LLaVA7B, 13B多模态视觉模型图片理解、OCR
Command R+104BCohere 出品,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_04-bit~4 GB较大内存受限环境
Q4_K_M4-bit~4.5 GB中等默认推荐
Q5_K_M5-bit~5.3 GB较小质量与速度平衡
Q6_K6-bit~6 GB很小高质量需求
Q8_08-bit~7.5 GB极小接近原始质量
FP1616-bit~14 GB基准/评测用

1.4 与同类工具对比

1.4.1 Ollama vs vLLM

vLLM 是一个高性能的 LLM 推理和服务引擎,主要用于生产环境。

维度OllamavLLM
定位本地开发/个人使用生产级服务
易用性⭐⭐⭐⭐⭐ 一条命令⭐⭐⭐ 需要配置
推理性能中等⭐⭐⭐⭐⭐ 极高
并发支持有限(单用户为主)⭐⭐⭐⭐⭐ 高并发
GPU 支持CUDA/ROCm/MetalCUDA(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。

维度OllamaLM Studio
界面CLI + APIGUI 桌面应用
开源✅ 完全开源❌ 闭源
API 服务✅ 内置 REST API✅ 本地 API 服务器
模型格式GGUFGGUF
跨平台Linux/macOS/WindowsmacOS/Windows
自动化✅ 脚本友好❌ 手动操作为主
Docker 支持✅ 官方镜像❌ 不支持
资源占用轻量(无 GUI)较重(Electron 应用)
适合人群开发者、运维非技术用户、探索者

1.4.3 Ollama vs LocalAI

LocalAI 是一个与 OpenAI API 兼容的本地推理服务。

维度OllamaLocalAI
API 兼容OpenAI 部分兼容OpenAI 完全兼容
模型格式GGUF多格式(GGUF/GGML/ONNX等)
功能范围文本/嵌入/多模态文本/图像/音频/嵌入
易用性⭐⭐⭐⭐⭐⭐⭐⭐
社区活跃度极高中等
Docker 支持

1.4.4 综合对比矩阵

特性OllamavLLMLM StudioLocalAI
易用性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
推理性能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
并发能力⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
生态集成⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
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

扩展阅读

  1. Ollama 官方博客
  2. llama.cpp 项目
  3. vLLM 官方文档
  4. GGUF 模型格式规范
  5. Hugging Face 模型量化指南

📖 下一章: 第 2 章:安装与环境配置 →