Ollama 本地大模型部署完全指南:从安装到 API 调用
详细讲解 Ollama 的安装配置、主流模型(DeepSeek/Qwen3/Llama)的下载运行、REST API 和 OpenAI 兼容接口使用,以及多 GPU、自定义 Modelfile、模型量化选择等实用技巧,帮助团队快速搭建私有化 AI 推理服务。
大模型落地的第一个门槛是“能不能在自己的机器上跑”。Ollama 解决的就是这个问题:一行命令下载并运行主流开源模型,提供 OpenAI 兼容 API,支持从 MacBook 到多 GPU 服务器的全场景部署。本文从安装到生产级配置,完整讲解 Ollama 的使用。
Ollama 是什么
Ollama 是一个开源的本地大模型运行时,核心价值:
- 一行命令运行:
ollama run deepseek-r1:7b自动下载并运行 - OpenAI 兼容 API:现有 OpenAI 客户端代码无需修改,换 base_url 即可
- 模型管理:类似 Docker 的镜像管理,pull/push/rm 模型
- 跨平台:macOS(Apple Silicon 完整支持)、Linux(NVIDIA/AMD GPU)、Windows
- 多格式支持:GGUF 格式,llama.cpp 后端,量化模型体积小、内存友好
支持的主流模型(2026 年 7 月):
| 模型 | 参数量 | 最低显存需求(4-bit) | 推荐场景 |
|---|---|---|---|
| DeepSeek-R1 | 1.5B-671B | 1.5GB-400GB | 推理/数学/代码 |
| Qwen3 | 0.6B-235B | 0.5GB-130GB | 中文/多语言 |
| Llama 3.1 | 8B-70B | 5GB-40GB | 通用对话 |
| Gemma 3 | 1B-27B | 0.8GB-16GB | 轻量/嵌入 |
| Phi-4 | 14B | 8GB | 推理/代码 |
| Mistral | 7B-24B | 4GB-14GB | 通用对话 |
安装 Ollama
Linux(推荐生产)
# 一键安装脚本
curl -fsSL https://ollama.com/install.sh | sh
# 验证安装
ollama --version
# ollama version is 0.7.2
# 查看 systemd 服务状态
systemctl status ollama
# ● ollama.service - Ollama Service
# Loaded: loaded (/etc/systemd/system/ollama.service)
# Active: active (running)
# 服务日志
journalctl -u ollama -f
手动安装(无 root 权限或离线环境)
# 下载 ollama 二进制
curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama
# 创建 systemd 服务(可选,推荐生产使用)
useradd -r -s /bin/false -m -d /usr/share/ollama ollama
cat > /etc/systemd/system/ollama.service << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="HOME=/usr/share/ollama"
# 自定义模型存储路径
Environment="OLLAMA_MODELS=/data/ollama/models"
# 监听所有网卡(允许其他机器访问)
Environment="OLLAMA_HOST=0.0.0.0:11434"
# 并发请求数(默认1,生产建议增大)
Environment="OLLAMA_NUM_PARALLEL=4"
[Install]
WantedBy=default.target
EOF
systemctl daemon-reload
systemctl enable --now ollama
验证 GPU 识别
# 检查 Ollama 识别的 GPU
ollama info
# Host:
# System RAM: 62.5 GiB
# Free RAM: 45.2 GiB
# GPU(s):
# NVIDIA GeForce RTX 4090 (24 GiB)
# NVIDIA GeForce RTX 4090 (24 GiB)
下载和运行模型
基本操作
# 运行模型(如果本地没有会自动下载)
ollama run qwen3:7b
# 交互式对话
>>> 你好,介绍一下自己
你好!我是 Qwen3,一款由阿里云研发的大语言模型...
>>> /bye (退出对话)
# 仅下载不运行
ollama pull deepseek-r1:8b
# 查看已下载的模型
ollama list
# NAME ID SIZE MODIFIED
# qwen3:7b f3b81e... 4.9 GB 2 hours ago
# deepseek-r1:8b abc123... 4.9 GB 1 day ago
# 删除模型
ollama rm qwen3:7b
# 查看模型详情
ollama show qwen3:7b
# Model
# architecture qwen3
# parameters 7.6B
# context length 40960
# embedding length 3584
# quantization Q4_K_M
选择量化版本
同一模型有多个量化精度版本,按显存排序:
# Qwen3-14B 各量化版本(显存需求递增,质量递增)
ollama pull qwen3:14b-q4_K_M # ~8GB VRAM,最常用,质量/体积平衡最佳
ollama pull qwen3:14b-q6_K # ~11GB VRAM,质量更好
ollama pull qwen3:14b-q8_0 # ~14GB VRAM,接近原始精度
ollama pull qwen3:14b-fp16 # ~28GB VRAM,完整精度(需要大显存)
ollama pull qwen3:14b # 默认版本(通常是 q4_K_M)
# 命名规则:
# q4_K_M = 4-bit 量化,K-quant,Medium(推荐)
# q6_K = 6-bit 量化,K-quant
# q8_0 = 8-bit 量化(接近原精度,体积大)
# fp16 = 半精度浮点(不压缩,最高质量)
REST API 使用
Ollama 启动后自动开启 HTTP API,默认地址 http://localhost:11434:
原生 API
# 生成(非流式)
curl http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:7b",
"prompt": "用 Python 写一个快速排序",
"stream": false
}'
# 流式生成(实时输出)
curl http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:7b",
"prompt": "讲解 eBPF 的工作原理",
"stream": true,
"options": {
"temperature": 0.7,
"top_p": 0.9,
"num_predict": 2048,
"num_ctx": 8192
}
}'
# 对话(Chat)
curl http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:7b",
"messages": [
{"role": "system", "content": "你是一个 Linux 运维专家。"},
{"role": "user", "content": "Kubernetes Pod 一直 CrashLoopBackOff 怎么排查?"}
],
"stream": false
}'
OpenAI 兼容 API(推荐,复用现有代码)
# 完全兼容 OpenAI /v1/chat/completions
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ollama" \
-d '{
"model": "qwen3:7b",
"messages": [
{"role": "user", "content": "What is the capital of China?"}
]
}'
# Python 代码:只需修改 base_url,其他与 OpenAI 相同
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # 任意字符串,Ollama 不验证
)
response = client.chat.completions.create(
model="qwen3:7b",
messages=[
{"role": "system", "content": "你是一个 Linux 运维专家。"},
{"role": "user", "content": "如何排查 Nginx 502 错误?"}
],
temperature=0.7,
max_tokens=2048,
stream=True # 流式输出
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
# 使用 Langchain 接入 Ollama
from langchain_ollama import ChatOllama
llm = ChatOllama(
model="qwen3:7b",
base_url="http://localhost:11434",
temperature=0.7
)
response = llm.invoke("解释一下 Kubernetes 的 Operator 模式")
print(response.content)
自定义 Modelfile
Modelfile 类似 Dockerfile,可以自定义模型行为:
# Modelfile:创建专门用于运维的 Qwen3 角色
FROM qwen3:14b
# 设置系统提示词
SYSTEM """
你是一位资深 Linux 系统运维工程师,工作经验 10 年以上。
专长:Kubernetes、Linux 故障排查、性能优化、自动化运维。
回答规则:
1. 优先给出可直接执行的命令
2. 解释命令含义,而不只是给结果
3. 指出常见坑和注意事项
4. 必要时给出完整脚本而非代码片段
"""
# 调整参数
PARAMETER temperature 0.3 # 运维场景降低随机性
PARAMETER top_p 0.9
PARAMETER num_ctx 16384 # 支持长上下文(查看长日志)
PARAMETER num_predict 4096 # 最大输出长度
# 设置停止词
PARAMETER stop "<|im_end|>"
PARAMETER stop "<|endoftext|>"
# 从 Modelfile 创建自定义模型
ollama create ops-expert -f Modelfile
# 运行自定义模型
ollama run ops-expert
>>> 我的 Pod 状态是 OOMKilled,怎么处理?
# 会给出专业的运维角度回答,包含 kubectl 命令
多 GPU 配置
Ollama 默认自动使用所有可用 GPU:
# 环境变量控制 GPU 使用
# 指定使用哪几块 GPU(按 nvidia-smi 中的 GPU 编号)
export CUDA_VISIBLE_DEVICES=0,1 # 只使用 GPU 0 和 1
# 模型自动分布在多卡(tensor parallelism)
# 48GB 显存(2×24GB)可运行 qwen3:32b(需要约 20GB)
ollama run qwen3:32b
# 检查模型在哪些 GPU 上运行
ollama ps
# NAME ID SIZE PROCESSOR UNTIL
# qwen3:32b abc123 19 GB 100% GPU 4 minutes from now
# 查看具体哪块 GPU:
nvidia-smi # 查看显存占用分布
常用配置环境变量
# /etc/systemd/system/ollama.service 中的 Environment 配置
# 监听地址(默认 127.0.0.1:11434,生产改为 0.0.0.0)
OLLAMA_HOST=0.0.0.0:11434
# 模型存储路径(默认 ~/.ollama/models)
OLLAMA_MODELS=/data/llm/models
# 并发请求数(默认 1)
OLLAMA_NUM_PARALLEL=4
# 模型空闲后卸载时间(默认 5m,0 表示永不卸载)
OLLAMA_KEEP_ALIVE=10m
# 调试日志
OLLAMA_DEBUG=1
# Flash Attention(默认开启,某些旧 GPU 需要关闭)
OLLAMA_FLASH_ATTENTION=1
# KV Cache 量化(节省显存,略有质量损失)
OLLAMA_KV_CACHE_TYPE=q8_0 # 或 q4_0
# 最大并发模型数(默认 1,多模型同时加载)
OLLAMA_MAX_LOADED_MODELS=2
离线环境部署
在没有公网访问的服务器上部署:
# 方法1:在有网络的机器上下载,再传输
# 在有网络的机器
ollama pull qwen3:7b
# 模型文件位于 ~/.ollama/models/
# 打包传输
tar -czf qwen3-7b.tar.gz ~/.ollama/models/blobs/ ~/.ollama/models/manifests/
# 在目标机器解压
tar -xzf qwen3-7b.tar.gz -C ~/.ollama/
# 方法2:使用 GGUF 文件直接导入
# 从 HuggingFace 或 ModelScope 下载 GGUF 文件
cat > Modelfile << 'EOF'
FROM /data/models/qwen3-7b-q4_k_m.gguf
SYSTEM "你是一个运维助手"
EOF
ollama create qwen3-local -f Modelfile
ollama run qwen3-local
小结
Ollama 将“本地运行大模型”的门槛从“需要 ML 工程师配置复杂环境”降低到“运维工程师一行命令”。对于企业内网 AI 需求(不能把数据发给公有云 AI 接口),或者需要定制化系统提示词的场景,Ollama 是最简单的起点。下一篇将讲解如何用 Open WebUI 在 Ollama 之上搭建一个完整的私有 ChatGPT 替代品。
