sglang投机推理实现
deepseek_nextn.py¶
实现DeepSeek NextN推测解码。 通过forward_batch.spec_info.hidden_states获取推测解码的隐藏状态 使用eh_proj合并当前和推测的隐藏状态 支持分布式并行计算(通过enable_dp_attention标志)
Python | |
---|---|
deepseek_v2.py¶
DeepseekV2MoE (混合专家层)¶
实现稀疏激活的混合专家系统,核心功能:动态路由机制、专家并行计算、支持共享专家。 路由机制: 使用门控网络(MoEGate)计算每个token的路由logits 支持分组TopK选择专家(use_grouped_topk) 可选的专家分数校正(correction_bias) 工作流程: 计算路由logits 选择top-k专家 分发tokens到对应专家 并行执行专家计算 聚合专家输出
DeepseekV2MoE 中的 use_grouped_topk 是一种高效的分组专家选择机制,其工作原理如下: 分组策略: 将专家划分为 num_expert_group 个组 每个组包含 num_experts/num_expert_group 个专家
Python | |
---|---|
Python | |
---|---|
Python | |
---|---|
DeepseekV2DecoderLayer (解码器层)的实现¶
export_deepseek_nextn.py¶
用于从 DeepSeek-V3/R1 模型中导出 NextN 层的工具,主要用于支持推测解码(Speculative Decoding)。以下是核心功能解析:
主要作用: 从完整模型中提取 NextN 预测层(用于推测解码的草稿模型)
生成独立的轻量级模型文件
修改配置文件适配单层结构
Text Only | |
---|---|
参数处理逻辑: 筛选原始模型中 model.layers.{nextn_layer_id} 开头的参数 重命名为 model.layers.0 以适应单层结构 排除 embedding 和 head 层参数
speculative¶
DeepSeek的推测解码(Speculative Decoding)系统采用模块化设计,主要组件如下:
graph TD
A[EagleWorker] --> B[EagleUtils]
A --> C[BuildEagleTree]
A --> D[CudaGraphRunner]
D --> E[DraftRunner]
D --> F[ExtendRunner]
spec_info.py 定义枚举类型SpeculativeAlgorithm 支持EAGLE/EAGLE3两种加速算法 提供类型检查方法(is_eagle/is_eagle3)
eagle_worker.py (主控模块) 管理草稿模型和目标模型的协同执行 实现推测解码的状态机转换 处理token验证和回退逻辑
cuda_graph_runner.py 使用CUDA Graph优化计算流程 包含两个子运行器: DraftRunner: 快速生成候选序列 ExtendRunner: 精确验证候选
工作流程: 构建阶段:通过build_eagle_tree.py预处理模型 草稿阶段:用轻量级模型生成N个候选token 验证阶段:用原模型并行验证所有候选 接受阶段:确定最长有效前缀
性能优化 使用CUDA Graph减少内核启动开销 树状验证结构(EAGLE3)提升吞吐量 动态批处理管理
GPU执行算子间隙优化思路¶
• 核心解决问题:如何做到GPU不停歇,一直运行 • 解決方案:核心做到CPU卡GPU异步化(cuda-graph,去除同步逻辑mask,算子融合,异步化调度….)