LLM 推理引擎详解:llama.cpp、vLLM、SGLang、mistral.rs、PyTorch 与 LiteRT-LM

LLM 推理引擎详解:llama.cpp、vLLM、SGLang、mistral.rs、PyTorch 与 LiteRT-LM

这类工具的统称、其重要性,以及如何在笔记本电脑、服务器或手机之间进行选择

模型文件本身并不能独立做任何事。它只是一大堆数字,必须由其他程序来加载这些数字、输入文本并输出答案。这个程序被称为 推理引擎,而挑选合适的引擎与挑选模型本身几乎同样重要。

今天是 2026 年 11 月 12 日。开源模型如今已接近付费 AI 服务的能力,许多团队出于隐私、成本或离线使用的考虑,希望在自己的硬件上运行它们。但随后他们会遇到一系列陌生的名字:llama.cpp、vLLM、SGLang、mistral.rs、PyTorch、LiteRT-LM。本文将解释这类工具的统称、各自存在的意义,以及我们的示例工程师 Rohit 会在何时选用它们。

这类工具的称谓

它们的通称是 LLM 推理引擎。你也会看到它们被称为模型运行时、服务引擎或服务框架。以下是一些简要定义:

  • 推理 是指使用训练好的模型来生成回答。训练是教会模型;推理则是向它提问。
  • 服务化 是指将模型作为一项服务(通常是 HTTP API)运行,以便众多用户或应用程序可以同时调用它。
  • 运行时 是指在 CPU、GPU 或手机芯片上执行数学运算的底层代码。

列表中的这六款工具都使用相同的模型权重并将其转化为回答。它们的不同之处在于最适合运行的环境(笔记本电脑、大型 GPU 服务器或手机)、能同时处理的用户数量,以及所需的内存/显存大小。

为什么引擎如此重要

同一个模型在不同的引擎下,可能会让人感觉运行飞快,也可能慢得令人痛苦。这取决于三个关键因素:

  1. 内存。 模型必须能放入内存或 GPU 显存中。部分引擎支持 量化,它通过使用更少的位数(例如用 4 位代替 16 位)来存储数字。模型体积大约会缩小三到四倍,并能以极小的质量损失在更便宜的硬件上运行。
  2. 吞吐量。 这是指引擎为多个并发用户生成答案时,每秒能够产出的回答总量。服务器引擎采用诸如 连续批处理 (新请求可直接加入正在运行的批次中,而无需排队等待)等技巧来保持 GPU 处于高效运转状态。
  3. 延迟。 这是指单个用户看到第一个词的速度。对于聊天场景而言,它比单纯的吞吐量更为关键。

选错引擎代价高昂。Rohit 可能会租用昂贵的 GPU 却只能服务极少数用户,或者尝试加载一个笔记本电脑根本装不下的模型。

六大引擎逐一解析

llama.cpp:几乎可在任何设备上运行

llama.cpp 是一个用 C 和 C++ 编写的引擎,专为在普通硬件上运行模型而构建。它使用自研的文件格式 GGUF,可将量化模型打包进单个文件中。它能在普通 CPU、Apple Silicon、NVIDIA 和 AMD GPU 等多种硬件上运行。Ollama 和 LM Studio 等主流桌面工具均基于它构建。

实际用例。 Rohit 是一名顾问,负责审查客户合同,无法将内容粘贴到公开的聊天机器人中。借助 llama.cpp,他在笔记本电脑上完全离线运行一个小型量化模型来总结文档,任何文本都不会离开本机。

# Start a local OpenAI-compatible server on port 8080
llama-server -m ./models/example-model-Q4_K_M.gguf --port 8080

vLLM:GPU 服务器的主力军

vLLM 是一个用于在 GPU 上同时向大量用户提供模型服务的 Python 引擎。它的核心思想是 PagedAttention。在生成回答时,模型会保存一个记录先前 Token 的便签本,称为 KV 缓存。vLLM 像操作系统管理内存那样,将这些记录划分为小页面进行存储,从而大幅减少显存浪费,并在同一时间容纳更多请求。结合连续批处理,这使得单张 GPU 能够同时为众多用户提供服务。

实际用例。 Rohit 所在的公司 Acme 想为 300 名员工搭建一个内部助手。对每个问题都调用付费 API 变得越来越昂贵,而且部分数据必须留在公司内部。Rohit 在一台 GPU 服务器上部署了 vLLM,并且由于它提供了兼容 OpenAI 的 API,现有的聊天应用只需更改一下基础 URL 即可。

vllm serve example-org/example-model --port 8000

SGLang:专为智能体与重复提示词提速

SGLang 是另一款高性能服务引擎。当大量请求共享相同的前缀时,它的表现尤为出色——例如冗长的系统提示词、共享文档或多轮对话的前几轮记录。它的 RadixAttention 技术会将这些共享部分缓存起来并重复使用,而不是重新计算。它对 结构化输出也有着强大的支持,即强制模型输出合规的 JSON 或固定格式的内容。

实际用例。 Rohit 构建了一个工单分流智能体。每个工单都会附带同一份长达 3000 字的政策文档,模型必须返回包含 category 和 priority 等字段的 JSON 格式。SGLang 在处理各个工单时复用已缓存的政策文档部分,并确保输出符合其代码可解析的数据结构。

python -m sglang.launch_server --model-path example-org/example-model --port 30000

mistral.rs:为 Rust 技术栈打造的 Rust 引擎

mistral.rs 是一个由社区构建、使用 Rust 编写的推理引擎。尽管名字相似,但它并不是 Mistral AI 公司的官方产品,且能运行众多模型家族。它支持量化、兼容 OpenAI 的服务器,并可作为库直接在 Rust 程序内部使用。Rust 带来了内存安全性,并能编译为单一二进制文件,无需管理任何 Python 环境。

实际用例。 Rohit 的团队拥有一款用 Rust 编写的日志分析工具,运行在不允许安装 Python 的受限安全服务器上。借助 mistral.rs,他们直接在同一个二进制文件中添加了“总结此事件”功能,因此无需部署或维护额外的外部服务。

原生 PyTorch:标准参考实现,而非赛车

PyTorch 是大多数模型构建和训练所采用的框架。直接使用原生 PyTorch 运行模型,通常通过 Hugging Face Transformers 库及其 generate() 函数,是最直接的使用方式。它易于修改和调试,新模型通常也最先在此获得支持。但它并未针对多用户并发服务进行调优,因此比上述专用引擎更慢,占用的内存也更多。

实际用例。 Rohit 正在测试一个微调后的模型效果如何。他在 Notebook 中使用原生 PyTorch 加载该模型,尝试不同的提示词,修改代码并对比结果。一旦满意,他便会将模型迁移到 vLLM 或 SGLang 以用于生产环境。

Google 的 LiteRT-LM:在手机上运行模型

LiteRT 是 Google 的设备端运行时,即 TensorFlow Lite 的新名称。LiteRT-LM 是其专门用于在手机、浏览器和小型边缘设备上运行诸如 Gemma 等语言模型的层。它专为受限内存、电池续航和移动芯片量身打造,让应用程序无需网络连接、无需承担服务器费用即可运行 AI 功能。

实际用例。 Rohit 正在为经常处于无网络信号环境下的技术人员开发一款现场巡检 Android 应用。借助 LiteRT-LM 以及手机上的小型 Gemma 模型,该应用可以在离线状态下将口述笔记整理成规范的报告,且数据绝不会离开设备。

Rohit 如何做出选择:一份简明决策指南

第 1 步:确定模型的运行环境

在手机或小型设备上,首选 LiteRT-LM。在笔记本电脑或纯 CPU 服务器上,从 llama.cpp 开始。在 GPU 服务器上,重点考虑 vLLM 或 SGLang。在 Rust 程序内部,则可选用 mistral.rs。

第 2 步:评估用户数量

单人或少数几人:llama.cpp 简单易用且已足够。数十或数百人同时使用:选择 vLLM 或 SGLang,因为批处理技术是压低单次回答成本的关键。

第 3 步:观察工作负载特征

如果存在大量共享提示词、智能体调用或严格的 JSON 输出需求,首选 SGLang。常规聊天交互和 API 流量,首选 vLLM。实验与研究,首选原生 PyTorch。

第 4 步:在自己的硬件上实测

公开基准测试数据受 GPU 型号、模型规格和运行配置影响较大。在做决定前,请挑选两款候选引擎,在自己的设备上运行实际提示词,并实测首字延迟、每秒生成字数及内存/显存占用。

结语

llama.cpp、vLLM、SGLang、mistral.rs、PyTorch 和 LiteRT-LM 都在完成同一项基础工作:运行训练好的模型并将输入转化为回答。这一类工具被称为 LLM 推理引擎。区分它们的是运行环境和服务对象:llama.cpp 适合笔记本电脑和小型服务器,vLLM 和 SGLang 适合高并发 GPU 服务器,mistral.rs 适合 Rust 原生应用,PyTorch 适合实验探索,而 LiteRT-LM 则面向手机与边缘设备。挑选推理引擎,应当像挑选模型一样慎重。

优势

  • 自行运行开源模型可将敏感数据保留在本地,并能实现完全离线工作。
  • llama.cpp 和 mistral.rs 中的量化技术让普通笔记本电脑也能运行性能强大的模型。
  • vLLM 和 SGLang 能利用单张 GPU 同时服务众多用户,显著降低单次回答的成本。
  • 兼容 OpenAI 的 API 让从付费服务的迁移只需极少的代码改动。
  • LiteRT-LM 将 AI 功能引入手机端,无需服务器开销,亦无需网络连接。

劣势

  • 每个引擎都有各自的配置方式、运行参数和模型格式需要学习。
  • 服务器级引擎需要高性能 GPU,购买或租用成本较高。
  • 量化模型会有一定程度的质量损失,且损失程度因模型和任务而异。
  • 并非每个引擎都能在第一天就支持最新发布的模型。
  • 自托管意味着你需要全权负责系统更新、安全补丁与服务监控。

注意事项

本文仅供学习参考。文中所举范例中的模型名称、端口及路径均为占位符,需替换为你自己的实际配置。这些项目迭代迅速,具体特性、运行参数及支持的硬件可能随安装版本的不同而有所差异。在做出生产环境决策之前,请务必查阅官方文档并在你自己的硬件上进行测试验证。

常见问题解答

  • 什么是 LLM 推理引擎? ——它是指在 CPU、GPU 或手机芯片上加载已训练好的语言模型并运行以生成回答的软件。
  • llama.cpp 和 vLLM 哪一个更好? ——两者各有千秋:llama.cpp 最适合笔记本电脑和小型服务器,而 vLLM 则是 GPU 服务器上进行多用户并发服务的首选。
  • vLLM 和 SGLang 有什么区别? ——两者都是高速 GPU 服务引擎;SGLang 在请求共享长提示词或需要输出结构化内容(例如 JSON)时尤为突出。
  • 没有 GPU 可以运行 LLM 吗? ——可以,llama.cpp 可以在普通 CPU 上运行量化模型,不过速度会比在 GPU 上慢。
  • mistral.rs 是 Mistral AI 公司开发的吗? ——不是,它是一个独立的社区项目,使用 Rust 编写,能够运行多种模型家族。
  • 为什么不在生产环境中直接使用 PyTorch? ——原生 PyTorch 足够灵活,但未针对高并发用户场景进行调优;因此在相同的硬件条件下,专用引擎通常能带来更高的处理速度。
  • LiteRT-LM 是用来做什么的? ——它是 Google 提供的运行时,用于在手机和边缘设备上直接离线运行 Gemma 等语言模型。
  • 量化有什么作用? ——它使用更少的位数来存储模型数值,从而让模型大幅减少内存/显存占用,并以微小的质量损失在更便宜的硬件上运行。

标签

#llm #inferenceengine #llamacpp #vllm #sglang #mistralrs #pytorch #litertlm #selfhostedai #aiengineering

Free field guide

Linux Server Hardening Checklist

30 practical steps to take a fresh Linux box from default to defensible. Enter your email — you'll get the PDF instantly, plus new posts on Linux, security & AI.