跳转至

Ollama 本地部署配置

最简单的本地大模型部署方案,一行命令即可运行


系统要求

项目 最低要求 推荐
操作系统 Windows 10+ / macOS 12+ / Linux
CPU 4 核 8 核+
内存 8 GB 16 GB+
GPU 可选,NVIDIA/AMD/Apple Silicon NVIDIA RTX 3060+
磁盘 10 GB 可用空间 SSD 50 GB+

安装

macOS / Linux

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

Windows

下载安装包:https://ollama.com/download/windows

Docker

Bash
1
2
3
4
5
# CPU
docker run -d -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

# GPU (NVIDIA)
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

验证安装

Bash
ollama --version

环境变量配置

变量 默认值 说明
OLLAMA_HOST 127.0.0.1:11434 监听地址,设为 0.0.0.0:11434 允许外部访问
OLLAMA_MODELS ~/.ollama/models 模型存储路径
OLLAMA_NUM_GPU 自动检测 GPU 层数,-1 为纯 CPU
OLLAMA_NUM_PARALLEL 1 并行请求数
OLLAMA_MAX_LOADED_MODELS 1 最大同时加载模型数
OLLAMA_KEEP_ALIVE 5m 模型在内存中保留时长
OLLAMA_FLASH_ATTENTION false 启用 Flash Attention
OLLAMA_GPU_DRIVER 自动检测 GPU 驱动类型(nvidia/amd/rocm)

配置示例

Bash
# 允许局域网访问
export OLLAMA_HOST=0.0.0.0:11434

# 模型存储到指定路径(SSD)
export OLLAMA_MODELS=/data/ollama/models

# 纯 CPU 模式
export OLLAMA_NUM_GPU=-1

# 并发 4 个请求
export OLLAMA_NUM_PARALLEL=4

# 模型常驻内存
export OLLAMA_KEEP_ALIVE=24h

# 启用 Flash Attention
export OLLAMA_FLASH_ATTENTION=true

Windows 服务配置

PowerShell
1
2
3
4
5
# 以 Windows 服务运行(安装后自动注册)
# 配置文件位置:C:\Users\<用户>\AppData\Local\Ollama\config

# 设置环境变量后重启服务
[System.Environment]::SetEnvironmentVariable("OLLAMA_HOST", "0.0.0.0:11434", "User")

模型管理

常用命令

Bash
# 拉取模型(默认 latest tag)
ollama pull qwen2.5:7b

# 拉取指定量化版本
ollama pull qwen2.5:7b-q4_K_M
ollama pull qwen2.5:7b-q8_0

# 查看已安装模型
ollama list

# 查看模型详细信息
ollama show qwen2.5:7b

# 运行对话
ollama run qwen2.5:7b

# 运行时指定参数
ollama run qwen2.5:7b --temperature 0.3 --topp 0.9

# 删除模型
ollama rm qwen2.5:7b

# 复制模型(用于创建变体)
ollama cp qwen2.5:7b my-qwen

推荐模型清单

用途 模型 Ollama 标签 大小
通用中文 Qwen2.5 qwen2.5:7b ~4.7 GB
通用中文(大) Qwen2.5 qwen2.5:14b ~9.0 GB
通用英文 Llama 3.1 llama3.1:8b ~4.7 GB
代码生成 Qwen2.5-Coder qwen2.5-coder:7b ~4.7 GB
代码生成(大) DeepSeek-Coder-V2 deepseek-coder-v2:16b ~8.9 GB
数学推理 Qwen2.5-Math qwen2.5-math:7b ~4.7 GB
Embedding nomic-embed-text nomic-embed-text ~274 MB
Embedding mxbai-embed-large mxbai-embed-large ~670 MB

完整模型库:https://ollama.com/library


自定义 Modelfile

Modelfile 语法

Docker
# 基础模型
FROM qwen2.5:7b

# 系统提示词
SYSTEM """
你是一个专业的 Python 开发助手。
回答简洁准确,优先给出代码示例。
"""

# 模型参数
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 4096
PARAMETER num_batch 512
PARAMETER repeat_penalty 1.1
PARAMETER stop "<|im_end|>"

# 聊天模板(Qwen 格式)
TEMPLATE """
{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{- end }}
{{- range .Messages }}
{{- if eq .Role "user" }}<|im_start|>user
{{ .Content }}<|im_end|>
{{- else if eq .Role "assistant" }}<|im_start|>assistant
{{ .Content }}<|im_end|>
{{- end }}
{{- end }}<|im_start|>assistant
"""

创建与运行

Bash
1
2
3
4
5
6
7
8
# 创建自定义模型
ollama create my-python-assistant -f Modelfile

# 运行
ollama run my-python-assistant

# 推送到仓库(可选)
ollama push my-python-assistant

常见 Modelfile 模板

翻译助手:

Docker
1
2
3
FROM qwen2.5:7b
SYSTEM "你是专业翻译,将中文翻译为英文,保持原文语义和语气。"
PARAMETER temperature 0.3

代码审查助手:

Docker
1
2
3
4
FROM qwen2.5-coder:7b
SYSTEM "你是资深代码审查专家,从可读性、性能、安全三个维度给出改进建议。"
PARAMETER temperature 0.2
PARAMETER num_ctx 8192

API 接口

基础 URL

Text Only
http://localhost:11434

生成接口

Bash
curl http://localhost:11434/api/generate -d '{
  "model": "qwen2.5:7b",
  "prompt": "用 Python 写一个快排",
  "stream": false,
  "options": {
    "temperature": 0.7,
    "top_p": 0.9,
    "num_ctx": 4096
  }
}'

对话接口

Bash
1
2
3
4
5
6
7
8
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5:7b",
  "messages": [
    {"role": "system", "content": "你是Python助手"},
    {"role": "user", "content": "写一个快排"}
  ],
  "stream": false
}'

流式输出

Bash
1
2
3
4
5
curl http://localhost:11434/api/chat -d '{
  "model": "qwen2.5:7b",
  "messages": [{"role": "user", "content": "你好"}],
  "stream": true
}'

OpenAI 兼容接口

Bash
# 完全兼容 OpenAI SDK
curl http://localhost:11434/v1/chat/completions -d '{
  "model": "qwen2.5:7b",
  "messages": [{"role": "user", "content": "Hello"}],
  "stream": true
}'

# Embedding
curl http://localhost:11434/v1/embeddings -d '{
  "model": "nomic-embed-text",
  "input": "你好世界"
}'

Python 调用示例

Python
import openai

client = openai.OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # 任意值即可
)

response = client.chat.completions.create(
    model="qwen2.5:7b",
    messages=[{"role": "user", "content": "你好,请自我介绍"}],
    stream=True
)

for chunk in response:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

GPU 配置

NVIDIA GPU

Bash
# 自动检测并使用所有可用 GPU
ollama run qwen2.5:7b

# 指定使用第一块 GPU
CUDA_VISIBLE_DEVICES=0 ollama run qwen2.5:7b

# 指定使用第二块 GPU
CUDA_VISIBLE_DEVICES=1 ollama run qwen2.5:7b

# 多 GPU(自动分配)
# Ollama 自动将模型分层到多块 GPU
ollama run qwen2.5:32b

AMD GPU (ROCm)

Bash
1
2
3
# Linux ROCm
export OLLAMA_GPU_DRIVER=rocm
ollama run qwen2.5:7b

Apple Silicon

Bash
1
2
3
# macOS 自动使用 Metal 框架
# 无需额外配置,自动检测
ollama run qwen2.5:7b

纯 CPU 模式

Bash
export OLLAMA_NUM_GPU=-1
ollama run qwen2.5:7b

多模型与并发

Bash
1
2
3
4
5
6
7
8
9
# 同时加载多个模型
export OLLAMA_MAX_LOADED_MODELS=3

# 并行请求数
export OLLAMA_NUM_PARALLEL=4

# 启动后可同时请求不同模型
# curl ... qwen2.5:7b
# curl ... nomic-embed-text

性能优化

场景 配置 说明
单用户对话 默认 无需调整
多用户并发 OLLAMA_NUM_PARALLEL=4+ 增大并行数
多模型切换 OLLAMA_MAX_LOADED_MODELS=2+ 增大同时加载数
减少加载延迟 OLLAMA_KEEP_ALIVE=24h 模型常驻内存
大上下文 PARAMETER num_ctx 8192+ 增大上下文窗口
加速注意力 OLLAMA_FLASH_ATTENTION=true 启用 Flash Attention

常见问题

Q: 模型下载慢?

Bash
1
2
3
# 使用代理
export HTTPS_PROXY=http://127.0.0.1:7890
ollama pull qwen2.5:7b

Q: 显存不足?

  • 使用更低量化版本:qwen2.5:7b-q2_K
  • 设置 OLLAMA_NUM_GPU 为部分层数
  • 或纯 CPU:OLLAMA_NUM_GPU=-1

Q: 如何查看推理速度?

Bash
1
2
3
4
5
6
# 运行后观察输出
ollama run qwen2.5:7b
# 输出末尾显示:
# eval count:    XXX tokens
# eval duration: XX.Xs
# eval rate:     XX.XX tokens/s

Q: Windows 上 WSL2 中如何使用 GPU?

确保安装了 NVIDIA CUDA on WSL 驱动,Ollama 会自动检测。


练习清单

  • 安装 Ollama,完成首次对话
  • 拉取 3 个不同模型,对比中文能力
  • 创建自定义 Modelfile,定义专属助手
  • 用 OpenAI SDK 调用 Ollama,实现流式对话
  • 配置 OLLAMA_HOST 允许局域网访问
  • 测试纯 CPU vs GPU 推理速度对比
  • 同时运行对话模型和 Embedding 模型