转换
包含内容
本文档将教会你
- 如何将使用外部投机解码仓库训练的模型转换为 Speculators 格式。
- 分别如何使用 CLI 和 Python API 的
convert/convert_model入口点。 - 使用各种选项转换 Eagle 和 HASS 模型的逐步示例。
在阅读本文档之前,你应该熟悉
- Speculators CLI 和 Python 入口点约定(参见 入口点)。
- 你正在转换的投机解码仓库的基本结构。
- 与你的 Speculator 关联的基础模型。
概述
convert 入口点使用户能够将使用 Eagle 或 HASS 等格式训练的投机解码模型转换为标准化的 Speculators 格式。这种转换可以无缝集成到更广泛的 Speculators 生态系统中,包括 vLLM 推理部署。
支持的转换格式
- Eagle v1/v2/v3: https://github.com/SafeAILab/EAGLE
- HASS: https://github.com/HArmonizedSS/HASS
转换可通过 CLI 和 Python API 进行。
用法
CLI
speculators convert MODEL \
--algorithm ALGORITHM \
--algorithm-kwargs KWARGS \
--verifier VERIFIER \
--output-path OUTPUT_PATH \
--validate-device DEVICE
位置参数
MODEL: Speculator 模型来源(本地路径、Hugging Face ID 或 URL)。
必需参数
--algorithm: 用于转换的算法:eagle、eagle3--verifier: 用于验证和完成 Speculator 的基础模型(本地路径、Hugging Face ID 或 URL)。
可选参数
--output-path: 保存转换后模型的目录(默认值:converted)。--validate-device: 用于进行转换后验证的设备(默认值:cpu)。--algorithm-kwargs: 转换算法的附加参数,作为键值对的 JSON 字符串传递。常见参数包括layernorms: 添加层归一化层(Eagle v1/v2、HASS)fusion_bias: 为融合的全连接层添加偏置(Eagle v1/v2、HASS)norm_before_residual: 在残差块之前进行归一化(Eagle v3)
Python API 用法
from speculators.convert import convert_model
convert_model(
model=MODEL,
algorithm=ALGORITHM,
verifier=VERIFIER,
output_path=OUTPUT_PATH,
validate_device=DEVICE,
**algorithm_kwargs
)
必需参数
model: 要转换的源模型(本地路径、Hugging Face ID 或 URL)。algorithm: 要使用的转换算法(例如,eagle、eagle3)。verifier: 用于附加验证的基础模型(本地路径、Hugging Face ID 或 URL)。
可选参数
output_path: 保存转换后模型的目录(默认值:converted)。validate_device: 用于进行转换后验证的设备(默认值:cpu)。algorithm_kwargs: 转换算法的附加参数,作为键值对的 JSON 字符串传递。常见参数包括layernorms: 添加层归一化层(Eagle v1/v2、HASS)fusion_bias: 为融合的全连接层添加偏置(Eagle v1/v2、HASS)norm_before_residual: 在残差块之前进行归一化(Eagle v3)
示例
敬请期待!本节将提供使用 CLI 和 Python API 转换模型的详细示例,包括各种配置和选项。
其他说明
- 为了成功转换,请确保
verifier模型与 Speculator 模型期望的架构相匹配。 - 如果在转换过程中遇到问题,请尝试使用
-validate运行以触发形状和结构检查。 - 转换后的模型可以直接使用 vLLM 等工具加载和提供服务。