笔记本里能把模型跑起来,离对外服务还差三样东西:KV 缓存占多少内存、同一时刻能排进多少个请求、结果要不要边算边吐。PyTorch 或 Transformers 可以把权重跑起来,但调度、缓存和接口要自己做。2026 年还在被拿来比较的几套运行时,差别主要在这三样,不在安装步骤。若任务其实是转写、抽片段或路由,先看一件事一个小模型,不要先选一个最重的服务框架。
先写清三件事再打开名单
流量是一个人试,还是许多人同时打。硬件是消费级显卡、只有 CPU,还是已经被 NVIDIA 锁死。进程要跑在服务器上,还是要进浏览器和手机。这三句写下来,一半的选项会自己消失。剩下的用你的模型测延迟和成本,不要用别人表上的“推荐”代替测量。下面按公开能力归类,不是安装清单,也不是名次。
| 你现在的流量 | 硬件被什么锁住 | 更简单的运行时何时够用 |
|---|---|---|
| 一个人或小组试模型 | 消费级显卡,或只有 CPU | 单请求要低延迟时,先看 llama.cpp 或 Ollama |
| 多人同时,前缀经常重复 | NVIDIA、AMD,或还要 TPU | 需要分页的 KV 缓存和连续批处理,再看 vLLM 或 SGLang |
| 必须吃低精度,并且卡在一家 | 只有 NVIDIA | 再比较 TensorRT-LLM 和带 TurboMind 的 LMDeploy |
| 要在手机或浏览器里跑 | Apple、Intel、AMD、NVIDIA 都可能 | MLC 一类;服务端要高并发时仍用专用卡 |
| 既要改模型,也要改核 | CPU 和 GPU 都要碰 | 看允许模型和核算子定制的运行时,例如 MAX |
多人同时,看的是缓存怎么放
vLLM 用 PagedAttention 把 KV 缓存按页来放,论文是 arXiv 2309.06180,这样同一张卡上能排进更多并发请求,并做连续批处理。它提供兼容常见聊天接口的服务,既可以进进程调用,也可以单独起服务。公开支持 NVIDIA、AMD、Intel 的 GPU,以及 CPU 和 TPU,多卡可以用张量并行。你的请求如果几乎没有共享前缀、并发也很低,这套的优势就显不出来。
SGLang 一边是前端写法,一边是后端执行。RadixAttention 会在共享前缀之间复用 KV 缓存,这一点写在 2024 年 1 月 17 日的一篇技术说明里。它还覆盖结构化输出和约束解码,并有面向图像和视频的扩散路径,同样有服务和进程内两种用法。公开表格写的硬件是 NVIDIA、AMD 的 GPU 和 TPU。前缀高度重复的系统提示、模板化工具调用,是它比“每个请求各算各的”更值得测的地方。
MAX 面向 CPU 和 GPU,允许改模型和核算子,扩散和语言模型都在范围内。它的服务参数里能调批大小、内存利用率和最大序列长度。选择它的理由是你确实要动内核或同时跑扩散,而不是因为名单上有它。TensorRT-LLM 只覆盖 NVIDIA GPU,有飞行中批处理和按块复用的分页 KV 缓存,H100 及之后可以走 FP8,Blackwell 可以走 FP4,也有 INT4 AWQ,并能作为 Triton 的后端。卡不是 NVIDIA,这条就先划掉。
同一家卡上,还有一条更轻的引擎
LMDeploy 有两条引擎。TurboMind 是 C++ 和 CUDA,面向 NVIDIA;另一条是 PyTorch。它把持久批处理当成连续批处理来用,支持 4 比特 AWQ,以及 INT8 或 INT4 的 KV 缓存量化,还有自动的前缀缓存。用法分成离线流水线和接口服务。已经决定只走 NVIDIA、又希望量化选项写在引擎里,可以和 TensorRT-LLM 放在同一次测量里比,而不是各看一篇介绍。
一个人用,和要进手机,是另外两条路
llama.cpp 是普通的 C 和 C++,不靠一串外部依赖。公开能跑的家族包括 Llama、Qwen、DeepSeek、Mistral。消费级显卡和 CPU 都在范围内。它的服务兼容常见聊天接口,带并行解码和连续批处理,强项是单请求的低延迟。Ollama 是命令行加接口,并行数和排队长度可以设。内存会随着并行数乘上上下文长度往上涨。一个人或一个小组够用。许多人同时来,还是要分页的 KV 缓存,那就是前面的 vLLM 或 SGLang。
MLC-LLM 基于 Apache TVM,可以用即时编译或提前编译,目标包括网页、iOS 和 Android。GPU 侧公开写了 AMD、NVIDIA、Apple 和 Intel。系统覆盖 Linux、Windows、macOS、iOS、Android 和浏览器。接口同样走常见的聊天形式。服务模式在专用 GPU 上才能把并发做高。不要把手机上能跑,理解成服务器上不用再选。
定案时用同一条模型和同一批请求。记下首字延迟、整段延迟、并发上去之后的失败,以及显存或内存的峰值。流量、硬件、必须跑在哪三种约束有一条变了,就重测,不要沿用上次的结论。简单运行时已经满足延迟,就不要为了名单上的名字再加一层服务。
用你的模型和你的并发,把延迟和显存各记两行, 用效率龙虾改这一稿。
常见问题 FAQ
Transformers 能跑,为什么还要运行时?
能跑权重,不等于有调度、KV 缓存和对外的流式接口。一个人试可以先不装服务;多人同时就要这三样。
只有一块消费级显卡,该从哪套开始?
先测 llama.cpp 或 Ollama 的单请求延迟。并发高、前缀重复多,再测带分页缓存的 vLLM 或 SGLang。
不是 NVIDIA 的卡,能不能用 TensorRT-LLM?
公开能力写的是只支持 NVIDIA GPU。AMD、Apple 或只有 CPU 时,这条先排除。
Ollama 把并行开大,内存会怎样?
内存随并行数和上下文长度一起涨。小组够用。许多人同时来,要换成分页 KV 缓存的服务。
手机上能跑,服务器是不是就用同一套?
不一定。MLC 覆盖手机和浏览器。服务端要高并发,仍然要在专用 GPU 的服务模式里测。