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 |
|---|
| # 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
|
验证安装
环境变量配置
| 变量 |
默认值 |
说明 |
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 |
|---|
| # 以 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 |
|---|
| # 创建自定义模型
ollama create my-python-assistant -f Modelfile
# 运行
ollama run my-python-assistant
# 推送到仓库(可选)
ollama push my-python-assistant
|
常见 Modelfile 模板
翻译助手:
| Docker |
|---|
| FROM qwen2.5:7b
SYSTEM "你是专业翻译,将中文翻译为英文,保持原文语义和语气。"
PARAMETER temperature 0.3
|
代码审查助手:
| Docker |
|---|
| FROM qwen2.5-coder:7b
SYSTEM "你是资深代码审查专家,从可读性、性能、安全三个维度给出改进建议。"
PARAMETER temperature 0.2
PARAMETER num_ctx 8192
|
API 接口
基础 URL
生成接口
| 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 |
|---|
| curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [
{"role": "system", "content": "你是Python助手"},
{"role": "user", "content": "写一个快排"}
],
"stream": false
}'
|
流式输出
| Bash |
|---|
| 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 |
|---|
| # Linux ROCm
export OLLAMA_GPU_DRIVER=rocm
ollama run qwen2.5:7b
|
Apple Silicon
| Bash |
|---|
| # macOS 自动使用 Metal 框架
# 无需额外配置,自动检测
ollama run qwen2.5:7b
|
纯 CPU 模式
| Bash |
|---|
| export OLLAMA_NUM_GPU=-1
ollama run qwen2.5:7b
|
多模型与并发
| Bash |
|---|
| # 同时加载多个模型
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 |
|---|
| # 使用代理
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 |
|---|
| # 运行后观察输出
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 会自动检测。
练习清单