推理引擎
这些引擎都是在已有芯片上处理计算,改变数据搬运、请求编排的过程。
llama.cpp 把权重分到三级内存
llama.cpp 面向消费级硬件。它把量化后的权重,按显存、主机内存、SSD分成三级。放得进显存的层留在GPU上算,其余层放在主机内存里由CPU算,权重文件用mmap留在SSD上,操作系统按页把用到的部分调入内存。大权重矩阵因此可以在普通机器上跑。
预分配占满显存,vLLM 改成分页
自回归必须逐token生成,KV Cache是自回归解码的状态,保存已经看过的 token 的 KV。上下文变长,或并发请求变多,KV cache 就按比例变大。每条请求的长度不同。
服务若按最大长度给每条请求预留一整块连续显存,空着的部分仍占着容量。这些块长短不一,空闲显存拼不成下一条请求要的空间。能同时留下的请求就变少。
vLLM 调度请求,并执行模型。PagedAttention把KV cache切成固定大小的块,按需分配。这些块在逻辑上连续,物理显存上不必连续。连续批处理在每个解码加入新请求、拿走生成完的请求。vLLM 不用等整批请求一起结束。分页和连续批处理一起,让同时能服务的请求变多。

SGLang 复用重复的前缀
SGLang 是写大模型程序的前端。生成、选择、分支,以及 JSON 或正则约束,都写在程序里。结构化输出有一层收益。语法已经确定下一个 token 时,运行时跳过它,不再让模型采样。
RadixAttention 知道哪些前缀会在请求之间、对话轮次之间、同一次程序的分支之间重复,它用基数树保存这些前缀的 KV cache、用 LRU 淘汰旧前缀,调度器让新请求从已有前缀的下一个 token 接着算。
TensorRT 把计算图编译到一种 GPU 架构
TensorRT 先把神经网络收成一张计算图。每一层如果单独计算,这一层要把结果写回显存。下一层再从显存读出来。时间大多耗在搬运和一次次启动上。
编译器扫完整张图,它按目标 GPU 架构挑选 kernel,并把相邻的层合成一次计算。多次读写和多次启动变成更少的 kernel。注意力的步骤太多,编译器无法自动合成。TensorRT 就把注意力写成插件,在编译时嵌进图里。编出来的引擎只对应这次选定的 GPU 架构。换一种架构,就要重新编译。

MLX 使用 Apple 芯片的共享内存
MLX 是苹果为自家芯片写的计算框架。它只在 Apple 芯片上跑。CPU 和 GPU 共用一块内存,权重不用从 CPU 拷到 GPU。它先把计算收成一张图,合并步骤后交给苹果的编译器。续写 token,或同时处理几条请求时,MLX 常常比 llama.cpp 快。读一大段提示并算出第一个 token 时,llama.cpp 往往更快。模型变大后,两边都卡在内存带宽上,速度差距缩小。模型放不进这块共享内存时,MLX 会直接失败。
专用硬件
权重放到哪里是芯片设计时定的,Groq、Cerebras和TPU对内存带宽的优化回答不同。
TPU 把权重放在芯片旁边的 HBM
TPU权重存在HBM上,它是堆在芯片旁边的DRAM。单颗 TPU 的容量大,放得下大模型和 KV cache。计算部分是一大片乘加单元。数据从边上流入,每经过一个单元就相乘再累加。编译器是 XLA。XLA 把模型收成计算图,再编成 TPU 的指令。
Groq 用很多块 SRAM 串起来
Groq的LPU把权重放在SRAM,早期一块芯片大约 230MB,带宽大约 80TB/s。比一块 H100 的 HBM(约 3TB/s)带宽高二十多倍,容量大约是 H100 的 1/350。2026 年的 Groq 3 单芯片大约 500MB、150TB/s。
LPU 没有硬件缓存,也没有运行时调度器。编译器按周期排好每一步。同一次编译的延迟低,而且运行稳定。一块芯片装不下一个大模型。一个 70B 模型要切到很多块 LPU 上,串成流水线。
Cerebras 用整张晶圆换容量
Cerebras 用一整张晶圆做一块芯片。WSE-3 上大约有 44GB SRAM,片上带宽大约 21PB/s。模型尽量放在这一张晶圆上,少在芯片之间传数据。
Groq和Cerebras的软肋
Groq主要是动态性弱。批次大小、上下文长度或分支一变,就要重新编译。用户多、模型多,或上下文长度一直变时,流水线空转,或者要反复编译。
Cerebras 的限制是成本、功耗。整张晶圆面积很大。缺陷密度再低,片上也会有坏点。它们会用一些备用的核心,编译时绕开坏点。但硅片、供电和散热都按整张晶圆计算。一台机器大约二十多千瓦,价钱和整机功耗都下不来。
CUDA会被绕过吗?
Groq、Cerebras 和 TPU 各用自己的芯片,CUDA 程序仍在英伟达 GPU 上跑。
大批量服务时,权重读一次就供给整批请求。HBM 的容量和 CUDA 上的 vLLM、SGLang、TensorRT 仍然占便宜,每个 token 的成本更低。
批量很小,又要求每个 token 都快时,SRAM 更合适,比如语音和实时代理。