1. 课程导入

1.1 为什么需要关注推理引擎调度参数

大语言模型(LLM)从研究原型走向生产服务,推理环节的吞吐量、延迟、显存效率成为决定系统成本与用户体验的核心指标。vLLM 作为当前最流行的高性能推理引擎之一,其核心优势在于 PagedAttention 显存管理机制与连续批处理(Continuous Batching)调度策略。然而,vLLM 的默认参数并非为所有场景最优——当请求长度分布极端、并发波动剧烈或模型规模差异显著时,调度参数直接决定 GPU 资源是否被充分利用,或是否出现显存溢出、排队超时等故障。

本课程聚焦 vLLM 推理引擎中与调度行为强相关的参数,包括 --max-num-seqs、--max-num-batched-tokens、--gpu-memory-utilization、--max-model-len、--enable-prefix-caching、--scheduling-policy 等。通过精调这些参数,可以在不修改模型代码的前提下,显著提升服务吞吐与响应速度。

学习提示:本课程所有实验均基于 vLLM 0.6.x 及以上版本。不同小版本的默认值可能略有差异,建议使用 vllm --help 查看当前版本的实际参数说明。

1.2 课程学习目标

完成本课程后,你将能够:

  • 理解调度原理:掌握 vLLM 的调度循环、批处理窗口、显存池分配机制,以及调度参数之间的相互约束关系。
  • 定位性能瓶颈:通过监控指标(如吞吐、TTFT、ITL、排队长度)判断当前系统是受算力限制、显存限制还是调度策略限制。
  • 精调参数组合:根据实际负载特征(长文本、短对话、混合流量)选择合理的参数组合,避免“单点调优”导致的隐性冲突。
  • 规避生产事故:识别参数设置不当引发的显存溢出(OOM)、请求超时、GPU 利用率低下等典型问题,并掌握排查方法。

1.3 课程结构总览

本课程共 30 章,按知识递进关系分为五个阶段。下表展示了各阶段的核心主题与关键章节:

阶段 章节范围 核心主题
基础入门 第 1-5 章 vLLM 架构、调度循环、显存管理、参数总览
核心调度参数 第 6-14 章 max-num-seqs、max-num-batched-tokens、gpu-memory-utilization 等深度解析
高级特性 第 15-21 章 Prefix Caching、Chunked Prefill、PD 分离、多 LoRA 调度
监控与调优 第 22-26 章 性能指标、压力测试、参数组合优化方法论
生产实战 第 27-30 章 高并发场景、长上下文场景、故障排查、案例复盘

每一章均包含原理讲解、参数实验、配置示例与常见误区分析。建议按顺序学习,因为后续章节会频繁引用前文介绍的调度机制。

1.4 vLLM 在 LLM 推理生态中的定位

LLM 推理服务通常由多个组件协作完成:前端网关负责请求路由与鉴权,推理引擎负责模型加载与张量计算,调度器决定请求何时被送入 GPU 执行。vLLM 的核心价值在于将“调度器”与“显存管理器”深度耦合,通过细粒度的 KV Cache 管理实现高效的连续批处理。

与 TensorRT-LLM、TGI(Text Generation Inference)等框架相比,vLLM 的优势在于:

  • PagedAttention:将 KV Cache 分块管理,显存利用率接近 90% 以上,而传统静态分配方式通常只有 40%-60%。
  • 调度灵活性:支持抢占、重新排队、Prefix Cache 复用,适合复杂混合负载。
  • 易用性:提供 OpenAI 兼容的 API 服务,与 HuggingFace 模型无缝集成。

下图展示了 vLLM 在典型 LLM 推理服务链路中的位置,以及调度参数影响的关键环节:

客户端 并发请求 API 网关 路由/限流 vLLM 推理引擎 调度器 连续批处理 抢占/排队 Prefix Cache 显存管理器 PagedAttention KV Cache 分块 显存池分配 模型执行器(GPU Kernel) Prefill / Decode / 张量并行 调度参数作用区 max-num-seqs / max-num-batched-tokens / gpu-memory-utilization 响应流 Token 流式返回 调度参数直接影响“调度器”与“显存管理器”的协作效率,进而决定吞吐与延迟

从图中可以看出,调度器与显存管理器是 vLLM 引擎内部的两个核心模块,它们之间的协作策略由调度参数直接控制。例如,--max-num-seqs 限制了调度器单次迭代最多处理的序列数,而 --gpu-memory-utilization 决定了显存管理器为 KV Cache 预留的空间上限。两者若设置不当,轻则 GPU 利用率低下,重则触发显存溢出。

1.5 典型场景与调参动机

为了更直观地理解调度参数的重要性,我们看一个真实案例。某团队部署 Llama-3-8B 模型,使用 vLLM 默认参数启动服务,压测结果如下:

  • 并发 50 路请求,平均输入长度 2000 tokens,输出长度 500 tokens。
  • GPU 利用率仅 45%,吞吐量 800 tokens/s,TTFT(首 Token 延迟)平均 1.8s。
  • 显存占用 22GB(GPU 总显存 24GB),但 KV Cache 利用率仅 60%。

通过调整 --max-num-seqs 256 与 --gpu-memory-utilization 0.92,并开启 --enable-prefix-caching,吞吐量提升至 2100 tokens/s,GPU 利用率达到 85% 以上。这说明默认参数偏向保守,在可控负载下存在明显的调优空间。

1.6 常见误区与学习建议

常见误区:初学者容易将调度参数视为“越大越好”的旋钮。例如,盲目调大 --max-num-batched-tokens 可能导致单次迭代计算量过大,反而增加 TTFT;而 --gpu-memory-utilization 设置过高会挤压模型权重与激活值的显存空间,引发 OOM。调度参数之间存在非线性耦合关系,必须结合负载特征与硬件规格综合判断。

在学习本课程时,建议你准备一张 GPU 显卡(至少 16GB 显存)用于实验,并安装 vLLM 与压力测试工具。每学习一个新参数,都通过控制变量法进行对比实验,记录吞吐、延迟、显存占用三个维度的变化。只有亲手操作,才能真正理解调度参数对推理性能的影响机制。