vllm 中 async scheduling
💡
原文中文,约6400字,阅读约需16分钟。
📝
内容提要
vLLM 的异步调度实现较为复杂,本文通过具体查询请求模拟调度器与工作者的执行流程,并标注关键状态变化。分析指出,调度过程中的状态假设可能导致错误,需进行状态矫正。建议在解码阶段仅维护输出令牌数量,以简化调度器的状态管理。
🎯
关键要点
- vLLM 的异步调度实现复杂,需手动模拟调度器与工作者的执行流程。
- 调度过程中的状态假设可能导致错误,需进行状态矫正。
- 在解码阶段建议仅维护输出令牌数量,以简化调度器的状态管理。
- 调度器在执行过程中需要处理假设状态,可能导致状态不准确。
- 发现了 3 个 bug,主要是由于状态矫正不足导致的。
- vLLM v1 的初衷是统一处理 prefill、chunked prefill 和 decode。
- 引入异步调度后,worker 侧行为变得不确定,增加了复杂性。
- 建议在异步调度时不维护准确状态,仅维护输出令牌数量。
❓
延伸问答
vLLM 的异步调度实现有什么复杂之处?
vLLM 的异步调度实现复杂,主要体现在调度器与工作者的执行流程需要手动模拟,并且调度过程中的状态假设可能导致错误。
在 vLLM 的异步调度中,状态假设可能导致什么问题?
状态假设可能导致调度过程中的错误,因此需要进行状态矫正以确保准确性。
如何简化 vLLM 的调度器状态管理?
建议在解码阶段仅维护输出令牌数量,以简化调度器的状态管理。
vLLM 中发现了多少个 bug,主要原因是什么?
发现了 3 个 bug,主要是由于状态矫正不足导致的。
vLLM v1 的初衷是什么?
vLLM v1 的初衷是统一处理 prefill、chunked prefill 和 decode。
异步调度对 worker 侧行为有什么影响?
引入异步调度后,worker 侧行为变得不确定,增加了复杂性。
➡️