
vLLM Speculators用标准化格式训练并部署投机解码 Draft 模型【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm本篇介绍 vLLM 生态中 Speculators 项目的定位与能力如何通过 vLLM 离线生成训练数据、训练单层/多层 draft 模型、以 Hugging Face 兼容的 speculators 格式分发模型并直接vllm serve到 vLLM 中自动启用投机解码。读完后你将理解 speculators 模型配置的完整字段结构以及 vLLM 在加载时如何自动解析该格式并推断出speculative_config。为什么需要 Speculators投机解码的原理与收益大语言模型逐 token 生成文本存在根本性瓶颈每个 token 都需要一次完整的模型前向传播而在等待访存瓶颈型操作返回时GPU 算力利用率很低。投机解码Speculative Decoding的思路是用一个更小、更快的 draft 模型——很多时候只是单个 transformer 层——提前预测多个 token再由主模型并行验证这批 token从而把逐 token 的访存型解码转化为并行验证的计算型操作。投机解码带来的核心收益包括降低时延面向聊天机器人、代码助手等交互型应用token 生成速度可提升 23 倍响应时间直接影响用户体验更高的 GPU 利用率把大模型 latency / memory-bound 的解码过程转化为 compute-bound 的并行 token 验证改善硬件利用无损质量投机解码并不近似替代目标模型——被接受的 token 与目标模型在同一采样配置下必然生成的 token 完全一致被拒绝的 draft token 会被丢弃并由目标模型重新生成成本效率减少每个请求占用硬件的时间从而在同一 GPU 上服务更多请求。对于用户实时等待响应的延迟敏感场景对话式 AI、交互式编程助手、流式文本生成Speculators 提供了从训练到部署的完整工具链。Speculators 的四大核心能力Speculatorsvllm-project 开源库用于加速 LLM 推理的投机解码提供与 vLLM 无缝衔接的 draft 模型高效训练能力。其四大关键特性为使用 vLLM 离线生成训练数据通过 vLLM 生成目标模型的 hidden states中间层激活数据样本落盘后可用于 draft 模型训练Draft 模型训练支持端到端支持单层与多层 draft 模型的训练同时覆盖非 MoE 与 MoE 模型标准化、可扩展的格式提供 Hugging Face 兼容的投机模型定义格式并附带工具把外部研究仓库的模型转换为标准 speculators 格式与 vLLM 无缝集成专为直接部署进 vLLM 而设计以最小开销实现低时延、生产级推理。训练数据生成vLLM 的extract_hidden_states方法用 vLLM 离线生成训练数据 这一能力对应 vLLM 内置的extract_hidden_states投机方法在目标模型推理时抽取指定层的激活并保存为.safetensors文件。完整的离线示例位于 examples/features/speculative_decoding/extract_hidden_states_offline.py核心用法如下from vllm import LLM, SamplingParams from vllm.config.kv_transfer import KVTransferConfig llm LLM( modelQwen/Qwen3-8B, # 目标模型 speculative_config{ method: extract_hidden_states, num_speculative_tokens: 1, draft_model_config: { hf_config: { eagle_aux_hidden_state_layer_ids: [1, 2, 3, 4], # 目标模型层索引 }, }, }, kv_transfer_configKVTransferConfig( kv_connectorExampleHiddenStatesConnector, kv_rolekv_producer, kv_connector_extra_config{ shared_storage_path: tmpdirname, allow_custom_save_path: True, }, ), )每个请求产出一个.safetensors文件包含hidden_states形状[num_tokens, num_extracted_layers, hidden_size]与token_ids形状[num_tokens]。这些落盘的 hidden states 正是训练 EAGLE 类 draft 模型的训练数据。该方法的完整参数说明含在线服务端模式、每请求选项与默认值见 docs/features/speculative_decoding/extract_hidden_states.md。注意两点前提限制chunked prefill 与该特性不兼容必须关闭在线部署时官方建议使用/dev/shm/等 RAM 文件系统以改善落盘性能。speculators 模型格式vLLM 如何解析它speculators 格式的 draft 模型是一个标准 Hugging Face 模型仓库其config.json中包含speculators_config字段。vLLM 端的解析逻辑集中在 vllm/transformers_utils/configs/speculators/base.py 中的SpeculatorsConfig类model_type speculators。配置的必需字段从SpeculatorsConfig.validate_speculators_config的校验逻辑可以确认一个合法的 speculators 配置必须满足speculators_config.proposal_methods[0].speculative_tokens提案方法及其投机 token 数当前 vLLM 只消费第一个提案方法speculators_config.verifier.name_or_path验证器目标模型标识符speculators_model_typespeculators 算法类型必须属于受支持集合transformer_layer_configdraft 模型自身的 transformer 层配置字典。支持的算法类型受支持的 speculators 类型注册在 vllm/transformers_utils/configs/speculators/algos.py 的SUPPORTED_SPECULATORS_TYPES中通过register_speculator装饰器注册。当前仓库确认支持以下类型及其到 vLLM 运行时 method 的映射见SpeculatorsConfig.build_vllm_speculative_configspeculators_model_type映射的 vLLM method说明eagle3eagle3支持draft_vocab_size、target_hidden_size、norm_before_residual、eagle_aux_hidden_state_layer_ids等字段目标架构映射到Eagle3LlamaForCausalLM/Eagle3Qwen3ForCausalLMpeagleeagle3附加parallel_drafting: True并行 EAGLEmask_token_id必填映射为 proposer 的pard_tokendflashdflash并行 draftblock 式mask_token_id与aux_hidden_state_layer_ids必填目标层索引按i - 1语义映射dflash2dflash在 DFlash 上增加分组卷积与低秩 candidate selector 头复用 DFlash 运行时dsparkdspark在 DFlash 基础上增加 Markov logit-bias 头可选置信度头enable_confidence_head每种类型都定义了自身特有的配置字段转换逻辑例如 EAGLE-3 的辅助隐状态层、DFlash 的dflash_config子配置从源码结构看这使同一个 speculators 格式能够承载从单层自回归 EAGLE 头到块式并行 draft 的多种架构。vLLM 加载时的自动推断流程当你直接以 speculators 模型作为 model 启动服务时——vllm serve speculator-model无需显式传--speculative-config——vLLM 的自动检测链路位于 vllm/transformers_utils/config.py 的maybe_override_with_speculators通过PretrainedConfig.get_config_dict读取模型config.json检查是否存在speculators_config字段不存在则原样返回按普通模型加载调用SpeculatorsConfig.extract_vllm_speculative_config校验并构建 vLLM 风格的 speculative 配置methodnum_speculative_tokens若用户显式提供了vllm_speculative_config允许覆盖如 attention_backend 等但随后method与model两个字段会被 speculators 格式锁定的值重新固定用speculators_config[verifier][name_or_path]替换 model 与 tokenizer——即目标模型从 draft 模型的 config 中解析出来draft 模型本身则作为投机配置的model。这意味着部署侧的完整配置信息目标模型、draft 模型、method、投机深度都收敛在 speculators 模型的config.json一个文件里真正做到下载即用。端到端正确性验证仓库中的集成测试tests/v1/e2e/spec_decode/speculators/test_speculators.py 中的test_speculators_model_integration完整验证了上述简化集成路径。该测试以RedHatAI/Llama-3.1-8B-Instruct-speculator.eagle3GSM8k 参考区间 75%80%阈值 0.72和RedHatAI/Qwen3-8B-speculator.eagle3参考区间 87%92%阈值 0.84两个 speculators 格式模型为样本检查speculator 模型被正确检测speculative_config被自动推断且num_speculative_tokens 0draft 模型被设置为 speculator 模型自身验证器模型从其 config 中正确提取开启投机解码后 GSM8k 精度通过合理性阈值开启投机解码的输出与同一验证器模型关闭投机解码的参考输出一致66% 以上的 prompt 完全匹配。该测试同时是 lossless 性质的验证与 docs/features/speculative_decoding/README.md 所述一致vLLM 的投机解码在算法层面经过验证是无损的被接受的 token 等价于目标模型在同一采样配置下的输出仅有浮点精度与 batch 尺寸带来的 logprob 微小差异。方法选型与延伸阅读Speculators 产出的 draft 模型主要服务于模型类方法EAGLE 系列、并行 draft这类方法在低 QPS 延迟场景下收益最高而 n-gram、suffix 等轻量方法适合高 QPS 峰值流量下不想增加额外 draft 负载的部署。完整的--speculative-configschema各 key 的类型、默认值与适用 method、各方法横向对比表与无损性说明见 docs/features/speculative_decoding/README.md。整体工作流可概括为一条闭环vLLM 抽取目标模型 hidden states 落盘 → Speculators 库训练单层/多层 draft支持 MoE→ 以 speculators 标准格式Hugging Face 兼容保存 →vllm serve加载 draft 模型自动解析出验证器与投机配置 → 无损投机解码上线。仓库内可直接参考的资源包括 示例脚本、hidden state 抽取文档、配置解析实现与端到端集成测试可沿此深入各层实现细节。【免费下载链接】vllmA high-throughput and memory-efficient inference and serving engine for LLMs项目地址: https://gitcode.com/GitHub_Trending/vl/vllm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考