Ollama 是什么

Ollama 是由一家旧金山创业公司开发的本地 LLM 运行工具。它把模型下载、量化、推理封装成一条命令。

和直接跑 Hugging Face Transformers 相比:不需要写 Python、不需要管理 CUDA 版本、不需要手动下载模型权重。它帮你搞定一切。

安装和首次运行

# macOS:直接下载 dmg
# Linux:一行命令
curl -fsSL https://ollama.com/install.sh | sh

# 拉取并运行模型(3B 版本约 2GB)
ollama run llama3.2

# 或者试试通义千问(中文更好)
ollama run qwen2.5:7b

首次运行会自动下载模型。7B 模型约 4-5GB,下载速度取决于网络。

REST API

Ollama 启动后会在 localhost:11434 提供兼容 OpenAI 格式的 API:

# 普通请求
curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "用中文解释什么是 Transformer 的 Self-Attention",
  "stream": false
}'

# 流式输出(打字机效果)
curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "写一首关于 AI 的七言绝句",
  "stream": true
}'

# Chat 格式(支持多轮对话)
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5:7b",
  "messages": [
    {"role": "user", "content": "什么是 LoRA?"}
  ]
}'

Python 调用

import requests
import json

def chat(model, messages):
    resp = requests.post('http://localhost:11434/api/chat', json={
        'model': model,
        'messages': messages,
        'stream': False
    })
    return resp.json()['message']['content']

# 使用
response = chat('qwen2.5:7b', [
    {'role': 'system', 'content': '你是一个 AI 技术专家'},
    {'role': 'user', 'content': '解释 Flash Attention 的原理'}
])
print(response)

自定义 Modelfile

你可以创建自定义的系统 prompt 来给模型”设定角色”:

# Modelfile
FROM qwen2.5:7b
SYSTEM "你是一个 AI 技术写作助手,擅长用简洁清晰的中文解释复杂概念。
回复要结构化,包含代码示例和实际应用场景。"
PARAMETER temperature 0.7
PARAMETER top_p 0.9

然后创建自定义模型:

ollama create ai-writer -f Modelfile
ollama run ai-writer

搭配 Open WebUI

命令行不够友好?Open WebUI 提供了一个类 ChatGPT 的界面:

docker run -d -p 3000:8080 \
  -v open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  ghcr.io/open-webui/open-webui:main

打开 http://localhost:3000 就能看到聊天界面,支持多模型切换、对话历史、文件上传等功能。

常用模型推荐

模型大小特色
llama3.2:3b2GB轻量通用,适合快速问答
qwen2.5:7b4.5GB中文最强 7B,代码和推理俱佳
mistral:7b4.1GB英文写作流畅
deepseek-r1:7b4.7GB推理能力强,适合复杂分析
phi3:mini2.2GB微软出品,性价比高

本地推理的性能瓶颈主要在显存和内存带宽。如何优化见 LLM 推理优化