数据生成与训练
Speculators 目前支持 Eagle3 投机解码器的训练。有关下面所有步骤的完整详细信息,请参阅 README.md
此过程目前分为三个关键步骤
- 数据生成
- 词汇映射
- 训练
数据生成
使用 vLLM 为训练生成隐藏状态。数据集值通过目标或验证模型,生成的隐藏状态被保存到磁盘供进一步使用。scripts/data_generation_offline.py 提供了为 Eagle3 模型生成训练数据的主要入口点。
完成后,将在磁盘上生成以下文件:1. token_freq.pt (令牌频率分布文件) 2. data_config.json (数据元数据) 3. 包含隐藏状态值的 data pt 文件
注意:此过程使用 vLLM,需要 datagen 可选安装。
词汇映射
根据令牌频率分布文件构建 d2t 和 t2d 文件。scripts/build_vocab_mapping.py 是此步骤的主要入口点。
完成后,此步骤将在磁盘上生成以下文件:1. d2t.npy 2. t2d.npy
训练
训练 Eagle3 草稿模型或 speculator。目前,训练支持
- 非 MoE 模型的单层和多层草稿模型
- 某些非视觉 MoE 的单层和多层草稿模型
有关支持模型的完整列表,请参阅:https://github.com/vllm-project/speculators/blob/main/README.md
scripts/train.py 提供了使用 FSDP 支持单 GPU 和多 GPU 训练 Eagle3 模型的主要入口点。
示例
此文件夹中的文件提供了端到端示例,这些示例运行 GPT-OSS、Llama3 和 Qwen3 草稿模型的三个上述步骤。如果任何一步失败,您可以重新运行脚本并从最后一步继续。也可以使用上面列出的单独脚本运行独立的步骤。