第 13 章

本地模型部署: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

配置本地服务器

  1. 打开 LM Studio
  2. 左侧菜单选择 Local Server
  3. 选择要加载的模型
  4. 点击 Start Server
  5. 默认端口: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": "默认使用云端平衡模型"
      }
    ]
  }
}

本章小结

下一章 将全面介绍 OpenClaw 16 个内置工具的能力边界与适用场景。

本章评分
4.7  / 5  (26 评分)

💬 留言讨论