大部分时间,我们使用大语言模型都是通过api进行调用,一方面是有些墙外的模型性能好但是没有开源,再就是国内的模型开源性能也可以,但是往往都非常吃资源,其实很多时候我们没有条件全都做本地化的部署和应用。之前也用ollama 本地部署过一些模型,但是单纯的执行确实不复杂,可能和运行一个容器的过程差不多,安装完以后,pull-〉run 就可以本地进行会话了。
调用云端 API 之外,把大语言模型(Large Language Model,LLM)跑在本机或私有服务器上,已经成为研发、数据合规与成本控制的常见需求。本地部署并不只是「下载一个模型文件」,而是一套从模型格式 → 推理引擎 → 服务接口 → 应用接入的完整链路;不同工具在这条链路上扮演的角色不同,选型时若只看「能不能跑起来」,很容易在性能、兼容性或后期扩展上踩坑。
本文聚焦本地推理与服务侧的主流框架,做横向对比与场景化推荐。更偏个人体验的 ROCm 实操见 通过 AMD 的 ROC 进行模型部署的尝试;Ollama 单工具详解见 大模型-部署工具-Ollama。

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 兼容意味着现有
openaiSDK 仅改base_url与api_key即可切换本地,对 RAG、Agent 框架友好。 - ROCm(AMD GPU 计算栈) 对 llama.cpp、Ollama、PyTorch 的支持逐年改善,但生态仍弱于 CUDA;见本系列 ROCm 部署尝试。
4. 按场景选型(决策简图)
1 | 你的首要目标是什么? |
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 | ollama pull qwen2.5:7b |
6.2 vLLM:OpenAI 兼容服务
1 | pip install vllm |
1 | from openai import OpenAI |
6.3 llama.cpp:GGUF + server
1 | 需先准备 model.gguf |
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 等主流选项及场景选型。