跳到内容

数据生成与训练

Speculators 目前支持 Eagle3 投机解码器的训练。有关下面所有步骤的完整详细信息,请参阅 README.md

此过程目前分为三个关键步骤

  1. 数据生成
  2. 词汇映射
  3. 训练

数据生成

使用 vLLM 为训练生成隐藏状态。数据集值通过目标或验证模型,生成的隐藏状态被保存到磁盘供进一步使用。scripts/data_generation_offline.py 提供了为 Eagle3 模型生成训练数据的主要入口点。

完成后,将在磁盘上生成以下文件:1. token_freq.pt (令牌频率分布文件) 2. data_config.json (数据元数据) 3. 包含隐藏状态值的 data pt 文件

注意:此过程使用 vLLM,需要 datagen 可选安装。

词汇映射

根据令牌频率分布文件构建 d2tt2d 文件。scripts/build_vocab_mapping.py 是此步骤的主要入口点。

完成后,此步骤将在磁盘上生成以下文件:1. d2t.npy 2. t2d.npy

训练

训练 Eagle3 草稿模型或 speculator。目前,训练支持

  1. 非 MoE 模型的单层和多层草稿模型
  2. 某些非视觉 MoE 的单层和多层草稿模型

有关支持模型的完整列表,请参阅:https://github.com/vllm-project/speculators/blob/main/README.md

scripts/train.py 提供了使用 FSDP 支持单 GPU 和多 GPU 训练 Eagle3 模型的主要入口点。

示例

此文件夹中的文件提供了端到端示例,这些示例运行 GPT-OSS、Llama3 和 Qwen3 草稿模型的三个上述步骤。如果任何一步失败,您可以重新运行脚本并从最后一步继续。也可以使用上面列出的单独脚本运行独立的步骤。