本地模型部署:Ollama / LM Studio / vLLM 完整接入实战
第13章:本地模型部署——Ollama / LM Studio / vLLM 完整接入实战
概述
本地模型部署是 OpenClaw 独特优势之一:数据永不离开你的机器,推理成本为零,且完全不受网络波动影响。本章将从原理到实战,完整介绍四种主流本地推理方案的接入方法,并提供模型选型建议。
13.1 兼容 OpenAI API 端点的配置原理
所有本地推理框架(Ollama / LM Studio / vLLM / SGLang)都提供了兼容 OpenAI API 格式的 HTTP 端点。OpenClaw 利用这一特性,只需配置 base_url 指向本地服务,即可复用相同的工具调用和参数接口。
本地推理框架
|
| 暴露 OpenAI 兼容 API
| GET /v1/models
| POST /v1/chat/completions
| POST /v1/completions
v
OpenClaw <--- base_url: http://localhost:PORT/v1
|
| 复用相同 Tool Calling / Streaming 接口
v
Agent / 工具系统
关键配置字段
{
"providers": {
"local_inference": {
"base_url": "http://localhost:11434/v1",
"api_key": "not-required",
"default_model": "ollama/llama3.2",
"timeout_seconds": 120,
"stream": true
}
}
}
注意:本地服务通常不需要 API Key,但部分框架要求传入任意非空字符串(如
"not-required"或"ollama")。
13.2 Ollama:最简单的本地模型方案
安装
macOS / Linux(推荐)
# 一行安装
curl -fsSL https://ollama.com/install.sh | sh
# 验证安装
ollama --version
# ollama version 0.4.x
Windows
下载官方安装程序:https://ollama.com/download/windows
Docker 方式(隔离环境)
# CPU 版
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# NVIDIA GPU 版
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
拉取模型
# 通用对话模型
ollama pull llama3.2 # 3B 参数,2GB
ollama pull llama3.2:8b # 8B 参数,4.7GB
ollama pull llama3.1:70b # 70B 参数,需要大内存
# 代码专用模型
ollama pull qwen2.5-coder:7b # 阿里 Qwen2.5 代码模型
ollama pull deepseek-coder-v2 # DeepSeek 代码模型
ollama pull codellama:13b # Meta CodeLlama
# 多模态模型(支持图像)
ollama pull llava:13b # 支持图像输入
ollama pull moondream # 轻量视觉模型
# 推理模型
ollama pull deepseek-r1:8b # DeepSeek R1 推理模型(本地版)
ollama pull qwq # QwQ 推理模型
# 查看已安装模型
ollama list
启动与管理
# 启动 Ollama 服务(通常随系统自启)
ollama serve
# 运行模型测试
ollama run llama3.2 "Tell me a joke"
# 停止服务
pkill ollama
# 查看运行中的模型
ollama ps
# 删除模型
ollama rm llama3.2
OpenClaw 配置接入
{
"providers": {
"ollama": {
"base_url": "http://localhost:11434/v1",
"api_key": "ollama",
"models": {
"ollama/llama3.2": {
"context_length": 128000,
"supports_tools": true
},
"ollama/deepseek-r1:8b": {
"context_length": 32768,
"think_mode": "high"
}
}
}
}
}
Ollama 环境变量调优
# 设置最大并发请求数
export OLLAMA_NUM_PARALLEL=4
# 设置 GPU 显存限制
export OLLAMA_GPU_OVERHEAD=512000000 # 512MB 预留给系统
# 跨机器访问(默认只监听 localhost)
export OLLAMA_HOST=0.0.0.0:11434
# 模型存储目录
export OLLAMA_MODELS=/data/ollama/models
13.3 LM Studio:GUI 管理界面
LM Studio 提供了直观的图形界面,适合非技术用户管理和测试本地模型。
安装
下载地址:https://lmstudio.ai/
支持平台:macOS(M 系芯片优化)/ Windows / Linux
配置本地服务器
- 打开 LM Studio
- 左侧菜单选择 Local Server
- 选择要加载的模型
- 点击 Start Server
- 默认端口:
1234
服务器设置建议
端口:1234(或自定义)
CORS:启用(允许来自 OpenClaw 的跨域请求)
Context Length:根据模型限制设置
GPU Layers:设置为 -1(全部卸载到 GPU)
OpenClaw 配置接入
{
"providers": {
"lmstudio": {
"base_url": "http://localhost:1234/v1",
"api_key": "lm-studio",
"default_model": "lmstudio/current",
"timeout_seconds": 180
}
}
}
提示:LM Studio 每次只能加载一个模型,model-id 通常设为当前加载的模型名称,或使用
lmstudio/current让 OpenClaw 自动查询当前加载的模型。
模型文件格式
LM Studio 使用 GGUF 格式的量化模型:
| 量化级别 | 文件大小 | 质量损失 | 推荐场景 |
|---|---|---|---|
| Q2_K | 最小 | 最大 | 极限内存限制 |
| Q4_K_M | 小 | 中等 | 8GB 内存,推荐入门 |
| Q5_K_M | 中 | 较少 | 16GB 内存,推荐日常 |
| Q8_0 | 大 | 极少 | 32GB 内存,近似全精度 |
| F16 | 最大 | 无 | 专业训练/评测 |
13.4 vLLM:高性能生产推理服务
vLLM 专为高并发生产场景设计,支持连续批处理(Continuous Batching)和 PagedAttention,吞吐量远超 Ollama。
安装
# 推荐使用 pip 安装(需要 CUDA 环境)
pip install vllm
# 验证安装
python -c "import vllm; print(vllm.__version__)"
启动 vLLM 服务
# 基础启动:单 GPU
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--port 8000 \
--host 0.0.0.0
# 多 GPU 张量并行(4张 A100)
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct \
--tensor-parallel-size 4 \
--port 8000
# 量化推理(降低显存需求)
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--quantization awq \
--port 8000
# 使用 GPTQ 量化模型
python -m vllm.entrypoints.openai.api_server \
--model TheBloke/Llama-2-13B-GPTQ \
--quantization gptq \
--port 8000
Docker 方式运行
docker run --runtime nvidia --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 \
--ipc=host \
vllm/vllm-openai:latest \
--model meta-llama/Meta-Llama-3-8B-Instruct
OpenClaw 配置接入
{
"providers": {
"vllm": {
"base_url": "http://localhost:8000/v1",
"api_key": "vllm",
"default_model": "vllm/meta-llama/Meta-Llama-3-8B-Instruct",
"timeout_seconds": 60,
"max_concurrent_requests": 50
}
}
}
vLLM 性能参数调优
# 关键启动参数
python -m vllm.entrypoints.openai.api_server \
--model YOUR_MODEL \
--max-model-len 32768 \ # 最大上下文长度
--max-num-batched-tokens 8192 \ # 批处理 Token 上限
--max-num-seqs 256 \ # 最大并发序列数
--gpu-memory-utilization 0.90 \ # GPU 显存利用率
--swap-space 4 \ # CPU 换页空间(GB)
--disable-log-requests # 生产环境关闭请求日志
13.5 SGLang:结构化生成推理服务
SGLang 特别适合需要结构化输出(JSON Schema 约束生成)的场景。
安装与启动
pip install sglang[all]
# 启动服务
python -m sglang.launch_server \
--model-path meta-llama/Meta-Llama-3-8B-Instruct \
--port 30000 \
--host 0.0.0.0
OpenClaw 配置接入
{
"providers": {
"sglang": {
"base_url": "http://localhost:30000/v1",
"api_key": "sglang",
"default_model": "sglang/llama-3-8b-instruct"
}
}
}
13.6 本地模型的隐私优势
数据不离本机原则
云端模型数据流:
用户输入 --> 本地 --> [互联网] --> Provider 服务器 --> 处理 --> 返回
本地模型数据流:
用户输入 --> 本地 --> [本地推理引擎] --> 处理 --> 返回
(数据从不离开本机)
适合本地模型的场景
| 场景 | 原因 |
|---|---|
| 医疗记录分析 | HIPAA 合规要求数据不出本地 |
| 法律文件处理 | 律师-客户特权保护 |
| 源代码审查 | 防止代码泄露给第三方 |
| 财务数据处理 | 金融监管合规 |
| 企业内部知识库 | 商业秘密保护 |
| 政府/军事场景 | 绝密数据处理 |
合规性对比
| 认证/法规 | 云端模型 | 本地模型 |
|---|---|---|
| GDPR(欧盟) | 需数据处理协议 | 天然合规 |
| HIPAA(美国医疗) | 需 BAA 协议 | 天然合规 |
| SOC 2 Type II | Provider 需认证 | 自主控制 |
| 中国数据安全法 | 境外传输风险 | 无传输风险 |
13.7 性能取舍:本地 vs 云端
延迟对比
| 指标 | 本地(RTX 4090) | 本地(M3 Max) | 云端 Haiku | 云端 Sonnet |
|---|---|---|---|---|
| 首 Token 延迟 | 50~200ms | 100~500ms | 300~600ms | 500~1200ms |
| 生成速度(tok/s) | 60~120 | 30~80 | 不限 | 不限 |
| 并发数 | 受硬件限制 | 受硬件限制 | 几乎无限 | 几乎无限 |
综合对比表
| 维度 | 本地模型 | 云端模型 |
|---|---|---|
| 成本 | 一次性硬件投入 | 按 Token 付费 |
| 隐私 | 完全控制 | 依赖 Provider 承诺 |
| 延迟 | 取决于硬件 | 网络延迟叠加 |
| 质量 | 通常低于顶级云端 | 顶级质量 |
| 可用性 | 99.9%(无网络依赖) | 依赖 Provider SLA |
| 维护成本 | 高(需自己维护) | 低 |
| 扩展性 | 受限于本地硬件 | 弹性伸缩 |
13.8 推荐模型选型
编码任务推荐
| 模型 | 参数量 | 显存需求 | 推荐框架 |
|---|---|---|---|
| qwen2.5-coder:32b | 32B | 24GB | Ollama/vLLM |
| deepseek-coder-v2 | 16B | 12GB | Ollama/vLLM |
| codellama:13b | 13B | 10GB | Ollama |
| starcoder2:15b | 15B | 11GB | vLLM |
通用对话推荐
| 模型 | 参数量 | 显存需求 | 特点 |
|---|---|---|---|
| llama3.2:8b | 8B | 6GB | Meta 最新,综合均衡 |
| mistral:7b | 7B | 5GB | 欧洲开源,多语言好 |
| gemma2:9b | 9B | 7GB | Google 开源 |
| phi3:14b | 14B | 11GB | 微软小模型性能强 |
推理任务推荐
| 模型 | 参数量 | 显存需求 | 特点 |
|---|---|---|---|
| deepseek-r1:8b | 8B | 6GB | 推理链完整 |
| deepseek-r1:32b | 32B | 24GB | 推理质量接近云端 |
| qwq:32b | 32B | 24GB | 数学推理强 |
多模态推荐(图像理解)
| 模型 | 参数量 | 显存需求 | 视觉能力 |
|---|---|---|---|
| llava:13b | 13B | 10GB | 基础图像问答 |
| llava-llama3:8b | 8B | 6GB | Llama 3 底座 |
| moondream2 | 2B | 2GB | 超轻量,嵌入设备 |
| minicpm-v | 8B | 6GB | 中文场景优化 |
13.9 混合部署策略
在实际生产中,最佳实践是本地模型和云端模型结合使用:
{
"hybrid_routing": {
"rules": [
{
"condition": "data_sensitivity == 'high'",
"route_to": "ollama/llama3.2",
"reason": "敏感数据强制本地处理"
},
{
"condition": "complexity == 'high' AND data_sensitivity == 'low'",
"route_to": "anthropic/claude-opus-4-6",
"reason": "复杂任务用云端最强模型"
},
{
"condition": "default",
"route_to": "anthropic/claude-sonnet-4-6",
"reason": "默认使用云端平衡模型"
}
]
}
}
本章小结
- 所有本地推理框架都暴露兼容 OpenAI API 的端点,OpenClaw 通过
base_url统一接入 - Ollama 安装简单,适合个人开发者和小团队
- LM Studio 提供 GUI,适合非技术用户
- vLLM 高性能生产推理,支持多 GPU 并行和连续批处理
- SGLang 特别适合结构化输出场景
- 本地模型的核心价值:数据隐私 + 零推理成本 + 无网络依赖
- 云端与本地混合部署是生产环境的最佳实践
下一章 将全面介绍 OpenClaw 16 个内置工具的能力边界与适用场景。