本地LLM部署框架选型与横向对比

大部分时间,我们使用大语言模型都是通过api进行调用,一方面是有些墙外的模型性能好但是没有开源,再就是国内的模型开源性能也可以,但是往往都非常吃资源,其实很多时候我们没有条件全都做本地化的部署和应用。之前也用ollama 本地部署过一些模型,但是单纯的执行确实不复杂,可能和运行一个容器的过程差不多,安装完以后,pull-〉run 就可以本地进行会话了。
ollama-qwen

调用云端 API 之外,把大语言模型(Large Language Model,LLM)跑在本机或私有服务器上,已经成为研发、数据合规与成本控制的常见需求。本地部署并不只是「下载一个模型文件」,而是一套从模型格式 → 推理引擎 → 服务接口 → 应用接入的完整链路;不同工具在这条链路上扮演的角色不同,选型时若只看「能不能跑起来」,很容易在性能、兼容性或后期扩展上踩坑。

本文聚焦本地推理与服务侧的主流框架,做横向对比与场景化推荐。更偏个人体验的 ROCm 实操见 通过 AMD 的 ROC 进行模型部署的尝试;Ollama 单工具详解见 大模型-部署工具-Ollama

本地 LLM 部署工具生态分层示意

1. 先厘清:部署栈里各层在做什么

本地 LLM 部署可按职责粗分为四层:

层级 职责 典型产物
模型与格式 权重存储、量化方案 HuggingFace 权重、GGUF、Safetensors
推理引擎 在 CPU/GPU 上执行前向计算 llama.cpp、TensorRT-LLM、MLX
服务框架 并发调度、批处理、API 暴露 Ollama、vLLM、SGLang、LocalAI
交互与编排 聊天 UI、RAG、Agent Open WebUI、LM Studio、LangChain 等

一次「本地部署」往往是:选格式 → 选引擎 → 选服务方式 → 接应用。下文工具按「引擎 / 服务 / 一体式」归类,便于对照。

段末注释:GGUF 是 llama.cpp 生态常用的单文件量化格式;PagedAttention 是 vLLM 用分页方式管理 KV Cache 以提升吞吐的关键技术。

2. 主流工具概览

2.1 一体式 / 开箱即用(个人开发与快速验证)

Ollama

  • 定位:命令行 + 本地 HTTP 服务,拉模型即可对话,生态以「极简」著称。
  • 底层:基于 llama.cpp 等,封装模型拉取、量化标签(如 qwen2.5:7b)、Modelfile 定制。
  • API:兼容部分 OpenAI 风格端点(/api/chat 等),便于接 Open WebUI、Dify 等。
  • 适合:笔记本试模型、小团队内网演示、与 Ollama 详解 中的工作流衔接。
  • 局限:高并发、多卡线性扩展、精细批调度不如专业 Serving 框架。

LM Studio

  • 定位:桌面 GUI,浏览 HuggingFace / 本地 GGUF,图形化调参与会话。
  • 适合:非 CLI 用户、快速对比多个小模型。
  • 局限:偏单机交互,生产级 API 与集群能力弱,自动化集成不如 Ollama / vLLM。

GPT4All、KoboldCpp

  • 定位:更早期的「本地聊天 + 简易 API」方案,仍可用于轻量 CPU 场景。
  • 现状:社区热度被 Ollama、LM Studio 分流,维护与模型更新节奏相对慢,新项目可优先考察 Ollama。

2.2 推理引擎(性能与硬件绑定的核心)

llama.cpp

  • 定位:C/C++ 实现的 LLM 推理库,GGUF 事实标准,CPU / Apple Metal / CUDA / ROCm 等均可。
  • 特点:依赖少、跨平台强、量化种类多(Q4_K_M、IQ 系列等);是 Ollama、许多边缘部署的底座。
  • 适合:资源受限机器、Apple Silicon、需要嵌入式或离线二进制分发。
  • 使用方式llama-server 起 OpenAI 兼容服务,或通过 llama-cpp-python 嵌入 Python。

MLX(Apple)

  • 定位:Apple 针对 M 系列芯片的数组与 LLM 推理框架。
  • 适合:MacBook / Mac Studio 本地跑 7B~32B 量化模型,能效比往往优于通用 CUDA 移植方案。
  • 局限:绑定 Apple 硬件,不能作为 Linux 服务器首选。

TensorRT-LLM

  • 定位:NVIDIA 官方优化栈,内核融合、FP8/INT4、多卡推理。
  • 适合:已有 NVIDIA 数据中心卡、追求单机极限吞吐与延迟的生产环境。
  • 局限:环境与版本耦合强,上手与调试成本高于 Ollama / vLLM。

ExLlamaV2

  • 定位:专注 NVIDIA GPU 上高效加载与推理(含 GPTQ 等),常在 ComfyUI / 本地实验场景出现。
  • 适合:单卡消费级 GPU 玩量化模型;工程化 Serving 仍多选 vLLM / TGI。

2.3 服务框架(多用户、高吞吐、OpenAI 兼容 API)

vLLM

  • 定位:生产级 LLM 推理服务,PagedAttention、连续批处理(continuous batching)、张量并行。
  • API:OpenAI 兼容 /v1/chat/completions
  • 适合:内网 API 网关、多并发在线服务、7B~70B 级模型 GPU 集群。
  • 局限:部署与驱动/CUDA 版本要求更严;个人笔记本「跑一下」不如 Ollama 省事。

SGLang

  • 定位:高吞吐 Serving,强调结构化生成、RadixAttention、与前端 DSL 协同;大 MoE 模型场景讨论增多。
  • 适合:与 vLLM 同级的在线服务备选,尤其在复杂解码、多轮结构化输出时值得压测对比。
  • 局限:生态成熟度略晚于 vLLM,运维资料相对少。

Text Generation Inference(TGI)

  • 定位:Hugging Face 推出的推理服务,与 Hub 模型、量化方案集成紧。
  • 适合:已深度使用 HF 生态、需 gRPC/HTTP 的企业部署。
  • 局限:对非 HF 标准模型或特殊算子,有时需额外适配。

LocalAI

  • 定位:OpenAI API 兼容的「本地 AI 网关」,可挂多种后端(llama.cpp、diffusers 等)。
  • 适合:希望统一 OpenAI SDK 调用、同时接 LLM / Embedding / 图像模型的自建栈。
  • 局限:性能取决于所选后端,本身不替代 vLLM 的内核优化。

Xinference(Xorbits Inference)

  • 定位:国产开源推理平台,支持多模型类型(LLM、Embedding、Rerank 等)统一管理与 RESTful API。
  • 适合:企业内「模型超市」、与国产硬件(部分版本支持)结合的内网部署。
  • 局限:与 vLLM 直接比单模型极限吞吐时,需以实测为准。

FastChat

  • 定位:带 Chat UI 与 OpenAI 兼容 API 的 Serving(常配合 vLLM / 自研 worker)。
  • 适合:研究型团队、需要对话界面 + API 一体的快速搭建。
  • 现状:许多团队已迁移到「vLLM + Open WebUI」组合,FastChat 仍可作为参考实现。

2.4 编排与界面(严格说不算推理框架,但常一起选型)

工具 作用
Open WebUI 接 Ollama / OpenAI 兼容后端的自托管 ChatGPT 式界面
LangChain / LlamaIndex RAG、Agent 编排,通过 base URL 指向本地 API
llama-cpp-python Python 绑定,脚本内直接 Llama() 推理

3. 横向对比总表

下表为工程选型向的粗粒度对比(具体数字随模型、量化、驱动版本变化,上线前务必压测)。

工具 易用性 吞吐/并发 多卡扩展 CPU NVIDIA GPU AMD ROCm Apple Silicon OpenAI 兼容 API 典型场景
Ollama ★★★★★ ★★☆ ★★☆ ★★★★ ★★★★ ★★★☆ ★★★★ ★★★☆ 个人/小团队试用
LM Studio ★★★★★ ★★☆ ★☆☆ ★★★ ★★★★ ★★☆ ★★★★ ★★☆ 桌面图形试模型
llama.cpp ★★★☆ ★★★ ★★☆ ★★★★★ ★★★★ ★★★★ ★★★★★ ★★★(server) 跨平台/嵌入式
vLLM ★★☆ ★★★★★ ★★★★★ ★☆☆ ★★★★★ ★★★☆ ☆☆☆ ★★★★★ 生产 API 服务
SGLang ★★☆ ★★★★★ ★★★★★ ★☆☆ ★★★★★ ★★★☆ ☆☆☆ ★★★★☆ 高吞吐/MoE/结构化
TGI ★★★ ★★★★ ★★★★ ★☆☆ ★★★★★ ★★☆ ☆☆☆ ★★★★ HF 生态企业部署
LocalAI ★★★★ ★★~★★★★ 取决于后端 ★★★ ★★★★ ★★★ ★★★ ★★★★★ 统一 API 网关
Xinference ★★★★ ★★★★ ★★★★ ★★☆ ★★★★ ★★★ ★★☆ ★★★★ 企业多模型平台
MLX ★★★ ★★★ ★★☆ ☆☆☆ ☆☆☆ ☆☆☆ ★★★★★ ★★☆ Mac 本地开发
TensorRT-LLM ★★☆ ★★★★★ ★★★★★ ☆☆☆ ★★★★★ ☆☆☆ ☆☆☆ ★★★☆ NVIDIA 极致优化

读表提示

  • 易用性极限吞吐往往不可兼得:Ollama / LM Studio 胜在分钟级上手,vLLM / SGLang 胜在百并发。
  • OpenAI 兼容意味着现有 openai SDK 仅改 base_urlapi_key 即可切换本地,对 RAG、Agent 框架友好。
  • ROCm(AMD GPU 计算栈) 对 llama.cpp、Ollama、PyTorch 的支持逐年改善,但生态仍弱于 CUDA;见本系列 ROCm 部署尝试

4. 按场景选型(决策简图)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
你的首要目标是什么?

├─ 笔记本上 5 分钟跑通对话
│ → Ollama 或 LM Studio(Mac 可叠加 MLX 模型)

├─ 内网 OpenAI 兼容 API,并发 < 10
│ → Ollama serve / llama.cpp server / LocalAI

├─ 生产环境多用户、低延迟、高 QPS
│ → vLLM 或 SGLang(NVIDIA 集群);压测后二选一

├─ 深度绑定 Hugging Face 模型与运维
│ → TGI 或 vLLM + HF 权重

├─ 同一网关接 LLM + Embedding + 图像
│ → LocalAI 或 Xinference

├─ 仅 Apple Silicon、注重能效
│ → MLX 或 Ollama(Metal 后端)

└─ 离线 C++ 二进制、弱网环境
→ llama.cpp + GGUF

5. 硬件与模型格式:选型前的两个硬约束

5.1 显存粗算

全精度参数量与显存近似关系(仅作量级估算):

[
\text{显存(GB)} \approx \frac{\text{参数量(B)} \times \text{字节/参数}}{8}
]

例如 7B 模型 FP16(2 字节/参数)约需 (7 \times 2 \approx 14,\text{GB}) 权重显存,另加 KV Cache 与框架开销。量化到 Q4 后权重可降至约 4~5 GB,因而消费级 8~12 GB 显卡可跑 7B 级模型。

段末注释:KV Cache 是解码阶段缓存历史 token 的键值张量,上下文越长占用越大;Serving 框架通过分页或复用缓解碎片。

5.2 格式与工具的匹配

格式 常见来源 更适合的工具
GGUF llama.cpp 量化、社区转换 Ollama、llama.cpp、LM Studio
HuggingFace 目录(Safetensors) 官方发布、微调导出 vLLM、TGI、SGLang、Transformers
GPTQ / AWQ 离线量化脚本 vLLM、ExLlamaV2、部分 TGI

微调或自训练模型多为 HF 格式,上线 Serving 时常走 vLLM / SGLang;若只想快速本地试跑,可先转为 GGUF 再进 Ollama。

6. 最小可运行示例(对比三种典型路径)

6.1 Ollama:最少步骤

1
2
3
4
5
6
7
8
ollama pull qwen2.5:7b
ollama run qwen2.5:7b
# HTTP API 默认 http://localhost:11434
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'

6.2 vLLM:OpenAI 兼容服务

1
2
3
4
5
pip install vllm
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--dtype auto
# 默认 http://localhost:8000/v1
1
2
3
4
5
6
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
print(client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[{"role": "user", "content": "你好"}],
).choices[0].message.content)

6.3 llama.cpp:GGUF + server

1
2
# 需先准备 model.gguf
./llama-server -m model.gguf -c 4096 --host 0.0.0.0 --port 8080

7. 与本系列其他文章的衔接

主题 推荐阅读
Ollama 命令与 Modelfile 5011.大模型-部署-部署工具-Ollama
量化、蒸馏、剪枝 5012.大模型-部署-优化部署模型
开源权重选型 5010.大模型-部署-开源模型资源-00.概述
RAG 接本地模型 RAG-本地部署实践
AMD GPU 实测 01.通过AMD的ROC进行模型部署的尝试

8. 小结

  • 没有「最好」的框架,只有与场景、硬件、团队技能匹配的栈:个人验证选 Ollama;生产 Serving 选 vLLM / SGLang;跨平台与离线选 llama.cpp;Mac 开发可关注 MLX。
  • 优先明确接口形态:若应用已按 OpenAI API 编写,应优先选 OpenAI 兼容服务,减少改造量。
  • 性能结论必须用你自己的模型与流量压测;本文对比表仅作初筛,同一 7B 模型在 Ollama 与 vLLM 上的 QPS 可能差一个数量级。
  • 后续本目录可展开:单框架部署实录(vLLM 多卡、LocalAI 网关、量化流水线等),在通用选型之上补实操细节。

变更记录:2026-06-20 初稿,覆盖 Ollama、llama.cpp、vLLM、SGLang、TGI、LocalAI、Xinference、MLX、TensorRT-LLM 等主流选项及场景选型。

-------------本文结束感谢您的阅读-------------