推理引擎:大模型生产的最后一公里 模型训练完成后,推理引擎决定了它能否高效地服务用户。同样的模型,用不同的推理引擎部署,吞吐量可能相差5-10倍。vLLM、SGLang和TensorRT-LLM是当前最主流的三大推理引擎,各有特色。
三大引擎概述 vLLM vLLM由UC Berkeley团队开发,以PagedAttention技术闻名:
from vllm import LLM, SamplingParams llm = LLM( model="meta-llama/Meta-Llama-3-70B", tensor_parallel_size=4, # 4卡张量并行 gpu_memory_utilization=0.90, max_model_len=8192, enable_prefix_caching=True, # 前缀缓存 swap_space=16, # CPU swap空间(GB) ) sampling = SamplingParams( temperature=0.7, top_p=0.9, max_tokens=512, ) outputs = llm.generate(["你好,介绍一下自己"], sampling) 核心技术:
PagedAttention:虚拟内存式KV Cache管理 Continuous Batching:动态批处理 Prefix Caching:共享前缀缓存 支持多种量化(AWQ、GPTQ、FP8) SGLang SGLang由UC Berkeley团队(vLLM部分成员)开发,专注于结构化生成:
import sglang as sgl @sgl.function def multi_step_reasoning(s, question): s += "请分析以下问题:" + question s += "第一步:理解问题" + sgl.gen("understanding", max_tokens=200) s += "第二步:分析方案" + sgl.gen("analysis", max_tokens=300) s += "第三步:结论" + sgl.gen("conclusion", max_tokens=200) # RadixAttention自动缓存前缀 engine = sgl.Engine( model_path="meta-llama/Meta-Llama-3-70B", tp_size=4, ) result = multi_step_reasoning.run(question="AI对就业市场的影响") 核心技术:
RadixAttention:基于基数树的前缀缓存,比vLLM的前缀缓存更高效 结构化生成:JSON、正则表达式约束的生成 前端DSL:Python装饰器定义生成流程 多轮对话优化:对话前缀自动复用 TensorRT-LLM NVIDIA官方推理引擎,与硬件深度优化:
import tensorrt_llm from tensorrt_llm.runtime import ModelRunner # 构建引擎(需先转换模型) builder = tensorrt_llm.Builder() config = builder.create_builder_config( max_batch_size=128, max_input_len=8192, max_output_len=1024, use_fp8=True, # FP8量化 use_paged_kv_cache=True, tokens_per_block=128, ) engine = builder.build_engine(model, config) # 运行推理 runner = ModelRunner(engine) outputs = runner.generate( input_ids=input_ids, sampling_config=sampling_config ) 核心技术:
...