模型并行(Model Parallelism)是指将一个大语言模型拆分到多个 GPU 上协同推理的技术集合。随着模型规模从 7B 增长到 405B 甚至 671B(如 DeepSeek-V3),单 GPU 显存(即使 H100 的 80GB)远不足以容纳完整模型参数 + KV Cache + 中间激活值。模型并行通过将模型的不同部分分布到多个 GPU,突破了单卡显存墙,同时通过并行计算降低推理延迟。
模型并行主要分为四种基本策略:
在实际部署中,这些策略通常组合使用以最大化硬件利用率。
TP 是 Megatron-LM 提出的层内切分策略,将每个 Transformer 层的权重矩阵沿特定维度切分到多个 GPU。在 Transformer 中,TP 主要应用于 MLP 层(gate_up_proj, down_proj)和 Attention 层(qkv_proj, o_proj)。
列切分(Column Parallel):对于线性层 Y = X * W,其中 W 形状为 [in_features, out_features],列切分将 W 沿输出维度切分为 W = [W_1, W_2, ..., W_k],每个 GPU 保存 W_i 形状为 [in_features, out_features/k]:
Y_i = X * W_i # 每个 GPU 独立计算
Y = [Y_1, ..., Y_k] # 输出维度拼接行切分(Row Parallel):将 W 沿输入维度切分为 W = [W_1; W_2; ...; W_k](纵向堆叠),上一层的列切分输出直接作为本层输入:
Y_i = X_i * W_i # X_i 是上层的列切分输出
Y = Y_1 + ... + Y_k # All-reduce 求和通信量分析:行切分层需要 All-reduce 通信,通信数据量为 batch_size * seq_len * out_features * dtype_size。All-reduce 的通信复杂度为 2(k-1)/k * data_size(k 为 TP size)。在单机 NVLink 环境下(A100: 600 GB/s,H100: 900 GB/s),此开销很小。例如 LLaMA-70B decode 阶段单次 All-reduce 约 32 KB,传输时间约 0.05 μs。但在跨节点场景下(InfiniBand 12.5-50 GB/s),TP 通信开销显著增加,因此 TP 通常限制在单节点内。
vLLM 的 TP 实现继承自 Megatron-LM 的 parallel_state.py,通过 initialize_model_parallel 函数构建 TP 组。vLLM 扩展了多种 All-reduce 后端:Custom AllReduce(NVLink 优化)、FlashInfer AllReduce、PyNcclCommunicator(NCCL)、SymmMemCommunicator(PyTorch symmetric memory)。
PP 将模型的不同层分配到不同 GPU。例如 80 层的模型,PP size = 4,则每个 GPU 负责 20 层。
PP 的核心问题是流水线气泡(Pipeline Bubble)。在 1F1B(One-Forward-One-Backward)调度下,气泡比例公式为:
Bubble ratio = (p - 1) / (m + p - 1)其中 p = PP size,m = micro-batch 数量。在推理场景中没有反向传播,气泡问题显著简化,可以通过 interleaved scheduling 和 continuous batching 缓解。PP 的通信模式为 P2P(Point-to-Point),通过 send_tensor_dict / recv_tensor_dict 实现。
vLLM 中 PP 组的构建位于 parallel_state.py(第 1635-1651 行),通过 transpose(2, 4) 交换 PP 和 TP 维度,保证 PP 组跨 TP 组正交:
group_ranks = (
all_ranks.transpose(2, 4).reshape(-1, pipeline_model_parallel_size).unbind(0)
)
例如 8 GPU, TP=2, PP=4:
[0,1], [2,3], [4,5], [6,7][0,2,4,6], [1,3,5,7]DP 将完整的模型副本部署到多组 GPU,每组独立处理不同请求。推理时 DP 没有梯度同步需求,几乎可以线性扩展吞吐量:
| 维度 | 训练时 DP | 推理时 DP |
|---|---|---|
| 同步需求 | 每步 All-reduce 梯度 | 无需同步 |
| 负载均衡 | 数据分片固定 | 需要请求路由 |
| 通信量 | 大(梯度大小 ≈ 模型大小) | 极小 |
| 扩展性 | 受梯度同步限制 | 近乎线性扩展(0.85-0.95 * d) |
DP 的挑战在于前缀缓存的局部性——每个副本有独立 KV Cache。解决方案包括粘性路由(同一前缀路由到同一副本)和全局 KV 缓存(LMCache 跨副本共享)。
EP 专为 MoE 模型设计,将不同 expert 分配到不同 GPU。MoE 层的计算流程为 Router -> All-to-all Dispatch -> Expert Compute -> All-to-all Combine。通信模式为 All-to-all,通信量约为 B * S * H * top_k * 2(dispatch + combine)。
vLLM 支持多种 All-to-all 后端:
3D Parallelism = Data Parallelism * Tensor Parallelism * Pipeline Parallelism
典型部署配置(LLaMA3-405B):
| 策略 | 切分维度 | 通信模式 | 通信量 | 最佳适用场景 |
|---|---|---|---|---|
| TP | 层内权重 | All-reduce | 高(需 NVLink) | 单节点多卡,大模型单层放不下 |
| PP | 层间 | P2P | 中等(激活值) | 跨节点,减少单卡层数 |
| DP | 请求级 | 几乎无 | 无/极小 | 高吞吐在线服务 |
| EP | MoE expert | All-to-all | 中高(token dispatch) | MoE 模型(DeepSeek-V3 等) |
模型并行策略直接决定 KV Cache 的分布方式。TP 下 KV Cache 被切分到同组各卡;PP 下每卡持有不同层的 KV Cache;DP 下每副本有独立 KV Cache。Disaggregated Serving(分离式推理)进一步将 TP/PP 的分布式环境扩展到跨节点的 Prefill-Decode 分离。Quantization 可以降低单卡内存压力,从而减少所需的并行度。
Disaggregated Serving(分离式推理)将 LLM 推理的 Prefill 和 Decode 两个阶段分配到不同的 GPU 集群上独立执行。Prefill Cluster(P 集群)负责处理 prompt 计算和 KV Cache 生成,Decode Cluster(D 集群)负责自回归 token 生成。两阶段之间通过高速网络传输 KV Cache。
LLM 推理的两个阶段存在根本性的资源需求矛盾:
当两者混合在同一 GPU 上时,Prefill 会抢占 Decode 的计算资源,导致 decode token 的 ITL(Inter-Token Latency)剧烈波动;同时 Decode 的 KV Cache 占用大量显存,限制了 Prefill 可以处理的 batch size。
分离式推理架构包含三个核心组件:
KV Cache 体积极为庞大。对于 LLaMA3-70B(80 层,8 KV head,head_dim=128),每 token 的 KV Cache 大小约为 2 * 80 * 8 * 128 * 2 (FP16) = 327,680 bytes ≈ 320 KB。4K context 约 1.28 GB,128K context 约 40 GB。即使 400 Gbps InfiniBand,传输 1GB 也需要约 20ms。
vLLM 在 vllm/distributed/kv_transfer/kv_connector/ 中实现了多种 KV 传输连接器:
# Mooncake Worker 初始化
class MooncakeConnectorWorker:
def __init__(self, vllm_config, engine_id, kv_cache_config):
self.engine = TransferEngine() # Mooncake C++ 引擎
self.engine.initialize(self.hostname, "P2PHANDSHAKE", protocol, "")
# protocol: "rdma" 或 "tcp"
| 指标 | 混合部署 | 分离部署 | 说明 |
|---|---|---|---|
| TTFT | 中等 | 更低 | P-cluster 专精大 batch prefill,算力利用率高 |
| ITL | 高(波动大) | 更低(稳定) | D-cluster 不受 prefill 抢占 |
| 吞吐量 | 受限于混合调度 | 更高 | P 和 D 分别优化各自 batching |
| KV 传输开销 | 无 | 增加 | 需要额外的网络传输时间 |
关键权衡:短上下文(< 4K)时 KV 传输开销可能超过分离收益;长上下文(> 4K)时分离收益显著。
Disaggregated Serving 是模型并行策略(TP/PP/DP)的上层扩展——它不是在单次推理中并行,而是在系统架构层面分离计算阶段。它依赖于 KV Cache 管理(PagedAttention、Prefix Caching)来处理跨节点的缓存传输。LMCache 是 Disaggregated Serving 的关键基础设施,提供多级 KV Cache 存储和共享。Quantization 通过减少每 token KV Cache 大小,可以降低 KV 传输的带宽压力。
量化(Quantization)是将浮点数模型参数、激活值或 KV Cache 以低位宽整数或低精度浮点数表示的技术。核心思想是将连续的值域映射到离散的整数格点上,从而大幅降低模型的内存占用、带宽需求和计算能耗。在 LLM 推理中,量化直接决定了单 GPU 能否容纳更大的模型,以及推理吞吐量的上限。
最基础的对称线性量化将浮点张量 x 映射到整数 q:
scale = max(|x|) / (2^(b-1) - 1) # b = 位宽
q = round(x / scale)
x_approx = q * scale # 反量化其中 scale 是缩放因子,(2^(b-1) - 1) 是量化范围的最大值(如 INT8 为 127)。非对称量化增加 zero_point 偏移量来处理非对称分布:
scale = (max - min) / (2^b - 1)
zero_point = round(-min / scale)
q = round(x / scale + zero_point)NVIDIA Hopper 架构引入了两种 8-bit 浮点格式:
FP8 计算需要 Hopper GPU(H100/H200)的 Tensor Core 支持。vLLM 中通过 torch._scaled_mm 和 float8_e4m3fn dtype 实现。FP8 相比 FP16 将存储减半(每 token 的 KV Cache 从 2 字节降至 1 字节),同时 Hopper 的 FP8 Tensor Core 提供 2 倍于 FP16 的峰值算力。
INT8:对称量化 scale = max(|x|) / 127, q = round(x / scale)。INT8 矩阵乘法利用 NVIDIA INT8 Tensor Core,峰值算力是 FP16 的 2 倍。量化粒度分为:
INT4:将每 16 个 FP16 weights 压缩到 4 bits,加上 group-wise scale/zero_point。存储压缩比 4:1,但计算时需要反量化到 FP16/INT8。主要用于权重存储压缩。
AWQ 的核心洞察:不是所有权重通道都同等重要。通过观察 activations,可以发现某些通道对输出影响更大(salient channels)。AWQ 通过 per-channel scaling 保护这些重要通道:
min_s E[ || X * (W - quant(W * s) / s) ||^2 ]其中 s 是逐通道缩放因子,通过少量校准数据优化得到。对于 salient channels(激活值幅值大的通道),使用较大的 s 值减小其相对量化误差。AWQ 通常支持 INT4/INT3/INT8,精度在同等比特率下通常优于 GPTQ。vLLM 通过 vllm/model_executor/layers/quantization/awq.py 支持 AWQ 模型加载。
GPTQ 是一种逐层的后训练量化方法,利用 Hessian 矩阵 信息补偿量化误差。源自 OBQ(Optimal Brain Quantization):
对于某层权重 W,量化引入误差 ΔW = W - W_q
对损失函数的二阶影响: ΔL ≈ ΔW^T * H * ΔW,其中 H = E[X^T X]GPTQ 使用 Cholesky 分解稳定 Hessian 逆的计算、采用任意顺序量化配合批处理更新加速、支持 group-wise quantization(默认 128 个权重一组共享 scale)。校准数据通常需要 128-256 条。
# GPTQ 逐层量化流程(示意)
for each layer:
H = X^T @ X # 计算 Hessian
H_inv = cholesky_inverse(H) # Cholesky 分解求逆
for each weight group:
w_q = round(W[group] / scale)
error = W[group] - w_q * scale
# 用 Hessian 信息补偿剩余权重
W[remaining] -= error * H_inv[remaining, group] / H_inv[group, group]
GGUF 是 llama.cpp 项目定义的量化模型格式。自包含(单文件含架构、分词器、量化参数),支持多种量化方案(Q4_0, Q5_K_M, Q8_0 等),K-quants 使用混合精度(重要层更高精度)。GGUF 对 CPU 友好(利用 AVX/NEON 等 SIMD 指令),但 GPU 上的量化精度通常不如 AWQ/GPTQ。
长上下文下 KV Cache 内存占用成为瓶颈。vLLM 的 FlashAttention 后端支持 FP8 KV Cache(torch.float8_e4m3fn,需 FlashAttention 3):
| KV Cache 精度 | Perplexity(LLaMA2-7B, WikiText-2) | 相对 FP16 变化 |
|---|---|---|
| FP16 (baseline) | 12.35 | - |
| INT8 (per-token) | 12.38 | +0.03 |
| INT4 (per-token) | 12.52 | +0.17 |
| INT4 (group=128) | 12.41 | +0.06 |
INT8 KV Cache 量化几乎无损,INT4 需要 group-wise scaling 才能保持精度。
| 方法 | 位宽 | 量化对象 | 压缩比(vs FP16) | 精度损失 | 特殊要求 |
|---|---|---|---|---|---|
| FP8 (E4M3) | 8 | 权重/激活/KV | 50% | 极小 | H100+ Tensor Core |
| INT8 | 8 | 权重/激活 | 50% | 小(需 SmoothQuant) | INT8 Tensor Core |
| AWQ (INT4) | 4 | 权重 | 75% | 小-中 | 特殊 kernel |
| GPTQ (INT4) | 4 | 权重 | 75% | 小-中 | 广泛支持 (Marlin) |
| GGUF Q4_K_M | 4.5 | 权重 | 72% | 中等 | CPU 友好 |
| FP8 KV Cache | 8 | KV Cache | 50% | 极小 | FA3 支持 |
| INT8 KV Cache | 8 | KV Cache | 50% | 极小 | per-token |
量化直接降低模型参数和 KV Cache 的内存占用,从而减少推理所需的 GPU 数量和并行度(TP 可以更小)。量化后的模型与 Attention 后端紧密相关——FP8 KV Cache 需要 FlashAttention 3 支持,INT4 权重需要 Marlin 等特殊 kernel。AWQ/GPTQ 等量化方法也影响模型加载方式,vLLM 通过 quantization_config 区分不同格式。
Attention 优化后端是 LLM 推理中负责执行 Attention 计算的底层 kernel 实现。标准 Attention 的计算复杂度为 O(n2)(n = 序列长度),且内存访问模式差——需要多次读写 HBM(高带宽显存)。各种 Attention 后端通过 tiling、online softmax、算子融合等技术,在保持数学等价性的前提下大幅提升计算效率。
核心创新是 Tiling + Online Softmax + Recomputation:
Q_i(大小 B_r * d)和 K/V tiles K_j, V_j:S_ij = Q_i @ K_j^T # 在 SRAM 中计算
m_ij = rowmax(S_ij)
P_ij = exp(S_ij - m_ij)
O_ij = P_ij @ V_jm_new = max(m_old, m_ij)
l_new = l_old * exp(m_old - m_new) + l_ij * exp(m_ij - m_new)
O_new = O_old * exp(m_old - m_new) + O_ij * exp(m_ij - m_new)S 矩阵(大小 n*n),而是反向时重新计算,将内存从 O(n2) 降到 O(n)。IO 复杂度从 O(n2) 降低到 O(n2 / M)(M = SRAM 大小),实际获得 2-4 倍加速。
主要改进:减少非矩阵乘法操作(online softmax 缩放与 GEMM 融合)、更好的 Warp 级并行(序列长度维度分配到不同 warps)、改进的 tile 划分策略。Forward 比 FA1 快约 2 倍,backward 快约 2-3 倍。
利用 Hopper 架构硬件特性:
cp.async.bulk 指令异步加载 tiles 到 shared memoryFA3 相比标准 attention 在 H100 上可达 4-6 倍加速(FP16)或 6-8 倍加速(FP8)。
FlashInfer 是专门为 LLM 推理服务设计的 attention 引擎,vLLM V1 的默认 Attention 后端。核心优势:
XFormers 是 Facebook Research 开发的通用 Transformer 优化库,提供 memory-efficient attention。支持训练和推理,但 Paged KV 支持有限,Decode 阶段优化不如 FlashInfer,不支持 FP8 KV Cache。
| 特性 | FlashAttention | FlashInfer | XFormers |
|---|---|---|---|
| 主要场景 | 训练 + 推理 | 推理(分页 KV cache) | 训练 + 推理 |
| Paged KV 支持 | 支持(v2+) | 原生支持 | 有限支持 |
| CUDA Graph | 支持 | 支持 | 支持 |
| Decode 优化 | 一般 | 极强(Cascade/Append) | 一般 |
| MLA 支持 | 部分 | 支持 | 无 |
| FP8 KV cache | FA3 支持 | 支持 | 不支持 |
vLLM V1 对 attention backend 做了彻底重构,核心文件:
vllm/v1/attention/backend.py # 抽象基类
vllm/v1/attention/backends/flash_attn.py # FlashAttention 后端
vllm/v1/attention/backends/flashinfer.py # FlashInfer 后端
vllm/v1/attention/backends/triton_attn.py # Triton 后端
vllm/v1/attention/backends/mla/ # MLA 后端
AttentionBackend 定义抽象接口,AttentionMetadataBuilder 将 scheduler 输出的通用元数据(CommonAttentionMetadata)转换为后端特定格式(如 FlashAttentionMetadata)。Page size(block size)是关键超参数——小(如 16)减少内存碎片但 kernel 效率降低,大(如 128)计算效率高但内存浪费增加。vLLM 默认 block size = 16。
Attention 后端直接实现 PagedAttention 所需的非连续 KV Cache 访问(通过 block table 和 slot mapping)。FP8 KV Cache 量化依赖 FA3 或 FlashInfer 的 FP8 支持。MLA(Multi-head Latent Attention,DeepSeek-V2/V3 使用)需要专门的 MLA Attention 后端。不同的 Attention 后端影响 KV Cache 的物理布局(NHD vs HND)和 block size 限制。
采样策略决定了 LLM 在每次生成时如何从 logits 概率分布中选择下一个 token。不同的采样策略在输出确定性、多样性、创造性和可控性之间做不同的权衡。vLLM 通过 SamplingParams 类统一管理所有采样参数,在 vllm/v1/sampler/ 中实现采样逻辑。
每一步选择概率最高的 token:
next_token = argmax(logits)这是确定性策略,适合代码生成、数学推导等需要精确输出的任务。vLLM 中当 temperature < 1e-5 时自动切换到 greedy。输出的多样性和创造力最差。
通过对 logits 除以温度系数 T 来控制分布的"尖锐程度":
P(x_i) = exp(logit_i / T) / Σ_j exp(logit_j / T)T -> 0:分布趋于尖锐,退化为 greedyT = 1:保持原始分布T > 1:分布趋于平缓,低概率 token 有更多机会被选中vLLM 将 0 < temperature < 0.01 的值钳位到 0.01,避免数值溢出。
按累积概率截断候选集合:
V^(p) = {v_1, ..., v_k} 其中 Σ_{i=1}^{k-1} P(v_i) < p <= Σ_{i=1}^k P(v_i)按概率从高到低排序 token,选择累积概率 >= p 的最小集合,在集合内重新归一化采样。Top-p 的优点是动态调整候选集大小——概率分布尖锐时候选集小,平坦时候选集大。vLLM 约束:0.0 < top_p <= 1.0。
只保留概率最高的 k 个 token,重新归一化后采样。vLLM 中 top_k = 0 或 -1 表示禁用(考虑所有 tokens)。常与 Top-p 组合使用:先 Top-k 截断,再 Top-p 截断。
维护 beam_width 个候选序列,每步扩展所有候选并保留得分最高的 beam_width 个:
class BeamSearchParams(msgspec.Struct):
beam_width: int
max_tokens: int
ignore_eos: bool = False
temperature: float = 0.0
length_penalty: float = 1.0 # > 1 偏好短序列, < 1 偏好长序列
Beam Search 适合翻译、摘要等需要全局最优的任务,但计算开销随 beam_width 线性增长,且容易产生重复。
三种惩罚机制解决 LLM 的重复生成问题:
if token in generated_so_far:
logits[token] /= repetition_penalty # > 1 抑制重复logits[token] -= frequency_penalty * count[token]if token in generated_so_far:
logits[token] -= presence_penalty两者区别:Frequency Penalty 随出现次数线性增长(出现越多惩罚越大),Presence Penalty 只要出现过一次就恒定制裁。vLLM 约束范围为 [-2.0, 2.0]。
vLLM 还新增了 N-gram 重复检测机制:当检测到某 N-gram 模式重复 min_count 次时,提前终止生成。
| 策略 | 确定性 | 多样性 | 可控性 | 计算开销 | 适用场景 |
|---|---|---|---|---|---|
| Greedy | 最高 | 最低 | 最高 | 最低 | 代码生成、数学推导 |
| Temperature | 中 | 高 | 中 | 低 | 创意写作、对话 |
| Top-p | 中 | 高(自适应) | 中 | 低 | 通用(最常用) |
| Top-k | 中 | 中 | 低 | 低 | 需控制候选数 |
| Top-k + Top-p | 中 | 高 | 高 | 低 | 推荐组合 |
| Beam Search | 高 | 低 | 高 | 高 | 翻译、摘要 |
| Repetition Penalty | - | - | 辅助 | 极低 | 与任何策略组合 |
采样策略是 LLM 推理的最终输出环节,与 Attention 计算通过 logits 张量连接。Speculative Decoding 需要特殊的 modified rejection sampling 以保证采样一致性(与直接采样大模型分布一致),当前 vLLM 的 speculative decoding 不支持 min_p 和 logit_bias。采样参数通过 SamplingParams 类传递,与 Chunked Prefill、Continuous Batching 等调度机制协同工作。
LLM 推理引擎是将模型加载、内存管理、计算调度、采样输出等环节集成在一起的生产级服务系统。不同引擎在核心创新、优化方向、硬件支持和生态集成方面存在显著差异。当前主流引擎包括 vLLM、TGI(Text Generation Inference)、TensorRT-LLM、SGLang 和 llama.cpp。
vLLM 的核心创新是 PagedAttention,借鉴操作系统虚拟内存的分页思想解决 KV Cache 内存管理问题。支持 Continuous Batching、Chunked Prefill、Prefix Caching、Speculative Decoding、多种量化格式(FP8/AWQ/GPTQ/GGUF)、Tensor/Pipeline/Data/Expert 并行、Disaggregated Serving(Mooncake/NIXL/LMCache)。vLLM V1 架构重构了 Attention Backend,默认使用 FlashInfer。支持 NVIDIA/AMD/Intel/XPU 多平台。
HuggingFace 开发的 LLM 推理服务器,强调与 HuggingFace 生态的紧密集成。核心特性:Safetensors 格式加载(更快更安全)、内置 FlashAttention、Continuous Batching、Tensor Parallelism、量化支持(GPTQ/AWQ/BitsAndBytes)、原生 SSE 流式输出。TGI 的易用性最高(与 HuggingFace Hub 无缝集成),但在高吞吐场景下性能通常低于 vLLM(缺少 PagedAttention 的内存管理优势)。
NVIDIA 推出的 LLM 推理优化框架,基于 TensorRT 深度学习编译器,专注于在 NVIDIA GPU 上榨取最大性能。核心优化技术:
优势是极致性能(通常最高吞吐量),但平台锁定(仅 NVIDIA GPU)、编译时间长(数分钟到数小时)、灵活性低(支持新模型需写 plugin)。
由伯克利大学(与 vLLM 同一团队)开发的推理框架,核心创新:
SGLang 在多轮对话、结构化输出场景有独特优势,前缀复用场景下 TTFT 比 vLLM 快 2-6 倍。SGLang 部署规模已达 400,000+ GPU。
完全使用 C/C++ 编写,不依赖 PyTorch 或 CUDA,目标是让 LLM 推理在消费级硬件上运行。核心特点:
性能在 GPU 上远低于前四个引擎,但在 CPU 和边缘设备上是唯一可行选择。
| 引擎 | 最佳场景 | 吞吐量 | 延迟 | 易用性 | 硬件支持 |
|---|---|---|---|---|---|
| vLLM | 高吞吐生产服务、多租户 | 极高 | 低 | 中 | NVIDIA/AMD/Intel/XPU |
| TGI | HuggingFace 生态集成、快速部署 | 高 | 低 | 高 | NVIDIA/Intel |
| TensorRT-LLM | NVIDIA GPU 极致性能、企业级 | 最高 | 最低 | 低 | NVIDIA only |
| SGLang | 多轮对话、结构化生成、Agent | 高 | 低 | 中 | NVIDIA/AMD |
| llama.cpp | 本地/边缘推理、CPU 部署、隐私 | 低 | 高 | 高 | CPU/GPU/Metal |
性能数据参考(LLaMA-2 70B, 8xA100):
| 引擎 | 吞吐量 (tokens/s) | TTFT | 批处理能力 |
|---|---|---|---|
| vLLM | 2000-4000 | ~100ms | 优秀 |
| TensorRT-LLM | 3000-5000 | ~80ms | 优秀 |
| TGI | 1500-3000 | ~120ms | 良好 |
| SGLang | 2000-3500 | ~100ms | 良好 |
| llama.cpp (Q4) | 50-100 (CPU) | ~数秒 | 有限 |
推理引擎是 vLLM 概念体系的上层集成者——它将 PagedAttention、Continuous Batching、Chunked Prefill、Prefix Caching、模型并行、量化、Attention 后端等所有概念整合为统一服务。引擎对比揭示了不同设计取舍:vLLM 以内存管理创新驱动通用高性能,TensorRT-LLM 以编译优化驱动极限性能,SGLang 以编程范式创新驱动特殊场景优化。