vllm 中 async scheduling

💡 原文中文,约6400字,阅读约需16分钟。
📝

内容提要

vLLM 的异步调度实现较为复杂,本文通过具体查询请求模拟调度器与工作者的执行流程,并标注关键状态变化。分析指出,调度过程中的状态假设可能导致错误,需进行状态矫正。建议在解码阶段仅维护输出令牌数量,以简化调度器的状态管理。

🎯

关键要点

  • vLLM 的异步调度实现复杂,需手动模拟调度器与工作者的执行流程。
  • 调度过程中的状态假设可能导致错误,需进行状态矫正。
  • 在解码阶段建议仅维护输出令牌数量,以简化调度器的状态管理。
  • 调度器在执行过程中需要处理假设状态,可能导致状态不准确。
  • 发现了 3 个 bug,主要是由于状态矫正不足导致的。
  • vLLM v1 的初衷是统一处理 prefill、chunked prefill 和 decode。
  • 引入异步调度后,worker 侧行为变得不确定,增加了复杂性。
  • 建议在异步调度时不维护准确状态,仅维护输出令牌数量。
➡️

继续阅读