Speculators v0.5.0 发行说明 / 新功能

Speculators v0.5.0 发行说明 / 新功能

Speculators v0.5.0 引入了对 DFlash 算法的支持,用于单次通过草稿令牌生成,并通过 vLLM 原生隐藏状态提取系统统一了在线和离线训练工作流。这些更新提高了训练灵活性,降低了推测解码的开销,并增强了推测解码工作流的生产就绪性。

DFlash 算法支持

Speculators v0.5.0 为 DFlash 添加了训练支持,DFlash 是一种使用块扩散在单次前向传递中生成所有草稿令牌的推测解码算法。这与自回归模型(如 Eagle 3)不同,后者需要多次前向传递来生成草稿令牌。

DFlash 的主要技术特点包括:

  • 单次通过生成:DFlash 为每个前缀生成长度为 B 的令牌块,从而减少较长草稿序列的开销。
  • 非因果注意力:在一个块内,查询可以关注同一块中的所有其他令牌,利用特定的注意力掩码。
  • 优化的训练锚点:为了防止注意力掩码过大导致过度的内存/计算消耗,DFlash 不会在序列的每个点开始预测块。相反,它会随机选择一组较小的“锚点”位置,这些位置对训练损失有贡献,并且仅将预测块附加到这些锚点上。

训练 DFlash 投机者

训练 DFlash 模型遵循与 Eagle 3 类似的在线工作流,但需要特定参数。训练命令使用 torchrun,并包含以下 DFlash 特定标志:

  • --speculator-type dflash: 指定算法。
  • --block-size: 定义每个扩散块生成的令牌数量。
  • --max-anchors: 设置训练期间推测的最大锚点数量。

Gemma 4 DFlash 性能

利用新的 DFlash 支持,训练了一个 Gemma 4 31B DFlash 投机者。在各种任务上的评估表明其性能强劲,特别是在推理和代码生成方面。

性能基准表明,Gemma 4 DFlash 在令牌间延迟方面优于 Eagle 3 和独立的 FP8 量化验证器。当与 FP8 量化验证器结合使用时,令牌间延迟的提升会进一步增加。

vLLM 集成与服务

DFlash 模型通过 PR #38300 集成到 vLLM 的推测解码基础设施中,受支持于 vllm>=0.20.0

模型在其 config.json 文件中包含一个 speculators_config,用于指定目标模型和推测算法。这使得 DFlash 模型可以使用标准的 vllm serve 命令进行服务:

vllm serve -tp 2 RedHatAI/gemma-4-31B-it-speculator.dflash

统一在线和离线训练

Speculators v0.5.0 迁移到 vLLM 原生隐藏状态提取系统(在 vLLM v0.18.0 中引入)。这替换了之前的低级实用程序,并移除了 vLLM 作为直接的 Python 依赖项,使训练管道与 vLLM 的内部 API 解耦。

训练模式

在线和离线训练现在均使用相同的基于 vLLM 的提取路径:

  • 在线训练:隐藏状态在训练过程中实时提取。该过程涉及向 vLLM 服务器发送提示,将隐藏状态提取到磁盘或 RAM 磁盘,加载它们以进行训练,然后删除文件。
  • 离线训练:隐藏状态在训练开始前预先生成并缓存到磁盘。

由于这些模式紧密耦合,它们可以组合使用。用户可以部分离线生成隐藏状态并在在线训练期间加载它们,或者在在线训练过程中不清除文件以便在后续 epochs 中重复使用。

通过利用原生提取系统,Speculators 继承了 vLLM 的推理优化,包括硬件加速和高效的批处理策略,同时通过标准 REST API 与 vLLM 服务器通信。

文档更新

此版本包含一个更新的文档站点,特色内容包括:

  • 支持的推测解码算法的介绍。
  • 训练投机者模型的详细教程演练。
  • 添加新推测解码算法到库中的开发者指南。
  • 全面的 API 参考。

Sources