尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Model Optimizer 中 DSpark 与 Domino 架构对比:共享 DFlash 并行 Draft 主干,分歧在 Correction Head

发布时间:2026/9/25 13:23:22

资讯中心
01
ARTICLE

Model Optimizer 中 DSpark 与 Domino 架构对比:共享 DFlash 并行 Draft 主干,分歧在 Correction Head

Model Optimizer 中 DSpark 与 Domino 架构对比:共享 DFlash 并行 Draft 主干,分歧在 Correction Head
【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载导读DSparkDeepSpec与 Domino 是两种基于同一套 DFlash 块并行草稿block-parallel draft骨干、但在 token 级校正头correction head上分道扬镳的投机解码speculative decoding方案DSpark 默认采用无状态的一阶马尔可夫转移Domino 采用携带前缀隐状态的 GRU。本文以 NVIDIA Model Optimizer 仓库为依托完整对比两者的共享骨架、校正头数学形式、推理顺序展开代价、训练目标差异并结合 modelopt/torch/speculative/ 源码给出markov_head_type、markov_rank、projector_type等可配置参数的实操说明。读完你可以在 Model Optimizer 的 DFlash 训练管线下准确选择、配置并训练这两种草稿头。共享基础DFlash 块并行草稿骨干两种方案都构建在 DFlash 之上草稿骨干对整块草稿位置执行一次因果注意力前向并行产出每个位置的隐状态与基础草稿 logitsbase draft logits。这是整个流程中计算量最大的部分校正头只是在骨干输出之上叠加 token 级修正。在 Model Optimizer 中DFlash 骨干的默认架构配置见 modelopt/torch/speculative/dflash/default_config.py包括num_hidden_layers默认 5 层草稿 Transformer 层hidden_act/rms_norm_eps/initializer_range/attention_bias/attention_dropout等架构默认值模型相关设置hidden_size、num_attention_heads、rope_*等则继承自基座模型在HFDFlashModel.modify()中完成。训练侧DFlash 管线的关键流程anchor 随机采样、噪声/掩码构造、KV 注入注意力、块内双向注意力都由 DFlash 包装类统一提供DSpark 与 Domino 复用同一套_sample_anchor_positions、_build_noise_embedding、_build_draft_attention_mask辅助方法见 modelopt/torch/speculative/plugins/hf_dspark.py 与 modelopt/torch/speculative/plugins/hf_domino.py 的 forward 流程。分歧点校正头如何注入块内因果依赖并行骨干可以快速产出整块草稿 logits但代价是缺乏块内因果依赖——这正是两个方案各自加校正头的动机用轻量级顺序头注入并行骨干缺失的因果信息缓解草稿后缀接受率衰减suffix acceptance decay。DSpark一阶马尔可夫转移默认vanillaDSpark 对每个草稿位置k执行e_{k-1} W1[x_{k-1}] bias_k W2 * e_{k-1} p_k softmax(U_k bias_k) x_k ~ p_k位置k的修正只依赖x_{k-1}步与步之间不传递 RNN 隐状态主导计算是查表 投影而非循环展开。在 Model Optimizer 中DSpark 头由DSparkModule实现modelopt/torch/speculative/plugins/modeling_dspark.py支持三种markov_head_type变体变体公式B_k偏置状态vanilla默认B(x_{k-1}) W2(W1[x_{k-1}])低秩分解markov_w1: vocab→rankmarkov_w2: rank→vocab无状态不用骨干隐状态不引入循环gated用骨干隐状态门控前一 token 嵌入后再投影B W2(sigmoid(gate_proj([h_k; W1[x_{k-1}]])) * W1[x_{k-1}])无循环状态但注入当前位隐状态rnnGRU 式循环头块内携带状态s_k位置k可见完整前缀x_k循环隐状态最接近 Domino 的 GRU关键实现细节modelopt/torch/speculative/plugins/modeling_dspark.py#L90-L130markov_rank必须大于 0否则直接抛出ValueError它是马尔可夫头的低秩维度。头使用独立于基座模型的专用嵌入表markov_w1而非基座 token embedding使偏置计算完全自包含。gated变体额外持有gate_proj Linear(hidden_size r, r)rnn变体持有联合投影joint_proj Linear(2*r hidden_size, 3*r)一步拆出 gate / candidate / output 三部分z torch.cat([state, prev_emb, hidden], dim-1) gate_raw, candidate_raw, output_raw self.joint_proj(z).chunk(3, dim-1) gate torch.sigmoid(gate_raw) candidate torch.tanh(candidate_raw) new_state gate * state (1.0 - gate) * candidate bias self.markov_w2(torch.tanh(output_raw))见 modelopt/torch/speculative/plugins/modeling_dspark.py#L182-L190可选的置信度头confidence_proj Linear(hidden_size r, 1)预测每个位置被接受的概率c_k w^T[h_k; W1[x_{k-1}]]在训练中监督其逼近解析接受率c* 1 - 0.5 * TVD。推理侧的置信度调度验证硬件感知调度器位于服务引擎中Model Optimizer 只负责训练/导出该头。DominoGRU 校正头Domino 使用 GRU 校正头循环隐状态累积草稿前缀信息读出时拼接gru_h_k GRU(input_k, gru_h_{k-1}) p_k softmax(U_k W * [h_k; gru_h_k]) x_k ~ p_kModel Optimizer 的DominoModulemodelopt/torch/speculative/plugins/modeling_domino.py由两个子模块构成prefix_gru单层 GRU输入为块前缀的 token embeddinginput_sizehidden_sizehidden_sizegru_hidden_dimbiasFalse产出汇总块内已见 token 的因果状态embed_projMLP将[backbone_hidden ; gru_state]投影为词表大小的 logit 修正Linear(hidden_sizegru_hidden_dim, emb_dim)→ SiLU →Linear(emb_dim, vocab_size)。Domino 头在训练包装类HFDominoModel中由基座模型的嵌入表喂入 GRU_apply_domino_headmodelopt/torch/speculative/plugins/hf_domino.py#L141-L180块首pure_draft_prefix_len默认 1个位置保留纯骨干 logits 不加修正GRU 因果修正只施加到后缀位置。pure_draft_prefix_len必须在[0, block_size-1]区间内。对比一览系统每步计算携带状态DSparkmarkov_head_typevanillaW1[x_{k-1}]查表 转移投影无Domino GRU高维输入上的完整 GRU cell循环隐状态需要强调的是两种头在推理时都必须从左到右顺序展开——因为采样x_k之前必须先得到x_{k-1}。DSpark 的pseudo_speculative_generate正是逐位置循环调用markov_step(prev_token, draft_hidden[:, k, :], state)、将偏置加到骨干 logits 后 argmax 采样modelopt/torch/speculative/plugins/hf_dspark.py#L474-L485。因此二者的实际差异是定性的vanilla 马尔可夫头只用前一个采样 tokenGRU 头则携带依赖前缀的循环状态。接入方式projector_type路由与配置DSpark 与 Domino 均复用 DFlash 的训练模式、配置与 recipe通过dflash_architecture_config.projector_type选择头类型。转换入口convert_to_dflash_modelmodelopt/torch/speculative/dflash/conversion.py#L46-L83按projector_type路由到独立注册表projector_typedomino→DominoDMRegistryHFDominoModelprojector_typedspark→DSparkDMRegistryHFDSparkModelprojector_typeNone或dflash→DFlashDMRegistry其余取值如lilicorr走各自注册表不支持的值会抛出ValueError。各注册表独立存放避免 Domino/DSpark 包装类覆盖原生HFDFlashModel。示例训练脚本 examples/speculative_decoding/main.py 中当 recipe 的dflash_architecture_config.projector_type domino时还会自动挂载DominoLambdaCallback驱动lambda_base课程调度。DSpark 需要dflash_architecture_config中显式给出markov_rank 0否则HFDSparkModel.modify直接抛错modelopt/torch/speculative/plugins/hf_dspark.py#L118-L126Domino 则要求emb_dim与gru_hidden_dim必须显式提供。训练目标三项损失 vs 双项损失两个方案的训练对齐方式一致——都使用 next-tokenshift_label对齐块位置k预测anchork1处的 token且不排除位置 0anchor 即块位置 0 的前驱。区别在于损失构成。DSpark三项损失loss ce_alpha * CE(final) l1_alpha * TVD(final, target) conf_alpha * BCE(conf)CE(final)修正后 logits 对 ground-truth 的交叉熵TVD(final, target)修正后草稿分布与目标基座模型分布的全变差距离按位置对齐实现为分块 gradient checkpoint 的_tvd_per_token避免在[N, vocab]宽 softmax 上 OOMmodelopt/torch/speculative/plugins/hf_dspark.py#L81-L103BCE(conf)置信度头对解析接受率c* 1 - 0.5*TVD的二元交叉熵。对应顶层配置modelopt/torch/speculative/config.py#L252-L281dflash_ce_loss_alpha默认 0.1dflash_l1_loss_alpha默认 0.9L1/TVD 主导对齐 DeepSpec 配方即使只配头不配损失也能合理训练dflash_confidence_head_alpha默认 0.0置 0 时必须同时开启dflash_architecture_config.use_confidence_headtrue否则抛错。DSpark 的 TVD/置信度项需要基座模型的 next-token 分布因此在训练 forward 中无论在线还是离线模式都无条件计算目标 logits离线模式下通过DFlashBaseModelOutput.from_offline_dict(..., need_logitsTrue)重建。Domino双项损失 课程衰减loss (1 - lambda_base) * final_loss lambda_base * base_lossfinal_loss修正后 logits 的交叉熵base_loss纯骨干 logits 的交叉熵lambda_base从dflash_lambda_base_start默认 1.0随训练步数线性衰减到 0衰减窗口为dflash_lambda_base_decay_ratio默认 1.0即全程衰减倍的训练步数。课程思想是先学好并行骨干再学因果修正。衰减由DominoLambdaCallback从 HF Trainer 的state.global_step驱动modelopt/torch/speculative/plugins/hf_domino.py#L386-L418若state.max_steps未设置课程会被禁用并发出警告。注意Model Optimizer 对 Domino 的支持当前仅限训练——eval 时包装类回退到 DFlash 骨干并警告reported acceptance rates are backbone-only推理服务阶段不会应用校正头。实践要点与选择建议共享骨架是前提DFlash 并行草稿吞吐是两者的共同基础选型差异集中在头结构dflash_block_size默认 8、dflash_num_anchors默认 512等 DFlash 级参数对两者同样适用详见 modelopt/torch/speculative/config.py 的DFlashConfig。默认头最轻量DSparkmarkov_head_typevanilla只做查表与低秩投影无跨步状态训练时还可按位置并行化一阶马尔可夫转移若希望更接近 Domino 的 GRU 行为DSpark 的rnn变体是最近似选择。训练阶段都要顺序展开由于x_{k-1}必须先于x_k采样两种头在推理采样时都是顺序的差异在于局部转移结构vanilla与前缀依赖状态GRU/rnn。按需配置损失与课程DSpark 默认 L1/TVD 主导需要基座分布Domino 用lambda_base课程先骨干后校正训练时需确保脚本挂载DominoLambdaCallbackexamples/speculative_decoding/main.py 已内置此逻辑。验证优先于定论架构对比本身不能确立普适的质量或吞吐排名——应根据目标模型与服务配置实测所选头的接受长度与端到端吞吐再作取舍。参考资源本文的架构描述对应以下原始论文可在其官方渠道查阅本仓库不内置外部链接Xin Cheng 等《DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation》arXiv:2607.051472026Jianuo Huang 等《Domino: Decoupling Causal Modeling from Autoregressive Drafting in Speculative Decoding》arXiv:2605.297072026。官方公开资源还包括 DeepSpec/DSpark 仓库、DeepSeek-V4-Pro-DSpark 权重、Domino 仓库与 Qwen3-8B-Domino-b16 权重。若需在 Model Optimizer 中深入实践可继续阅读 examples/speculative_decoding/README.md、examples/speculative_decoding/doc/dflash.md 以及 DFlash 模式说明 docs/source/guides/5_speculative_decoding.rst。赞分享【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载相关推荐llama.cpp 投机解码完全指南draft / EAGLE-3 / DFlash / DSpark 与 n-gram 系列实现原理及参数调优llama.cpp 投机解码完全指南draft / EAGLE 3 / DFlash / DSpark 与 n gram 系列实现原理及参数调优 本文基于 l人工智能大模型模型推理服务推理引擎本地部署后端LightGBM并行学习架构特征并行与数据并行对比LightGBM并行学习架构特征并行与数据并行对比 概述 在大规模机器学习任务中单机训练往往面临计算资源和内存限制的瓶颈。LightGBM作为高效的梯度提升机器学习Git LFS与Git Worktree多分支并行开发中的文件共享Git LFS与Git Worktree多分支并行开发中的文件共享 痛点直击大型项目并行开发的双重困境 你是否曾在多分支并行开发中遭遇以下场景切换分支时G开发工具CLI版本控制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。