yy-fighting 5c749cda03 feat(pro6000/GLM-5.3): 方案 D/E/F 部署资产入库(TP2PP4 生产配方 / TP8+DFlash2 / PD 分离四角色链)
- scripts: 11 个服务器原样脚本入库(md5 对照表更新至 README);D=60.1 生产原样配方、
  E=v5 DFlash 底稿、F=PD 链四角色部署+launch+双场景压测驱动
- profiles: 新增 6 个 .env(D/E 单机 + F 四角色,均带镜像 digest
  sha256:28e0d260…,对齐 kimi3 PD 多角色先例)
- deploy/PD_CHAIN.md: 方案 F 编排手册(启动顺序 mc-master→prefill→decode→router、
  基础设施依赖表、质量门口径、拆链恢复、÷2 单机等效判决)
- platforms/patches/pro6000/glm53_pd_chain/: sglang 补丁树 vs 镜像原版 11 文件
  unified diff 快照——宿主树无 .git,此为唯一版本记录(DFlash+PP+PD 解锁全集)
- deploy/manifests/: GLM-5.3-NVFP4(47分片)/GLM-5.3-DFlash2(单分片) 权重 md5 清单
- deploy/CURRENT.md: 全集群现役状态页(2026-09-08 八机实测)
- deploy/verify_profile.sh: 防漂移核验工具(digest+参数 token 比对+端口/health,
  已在 60.1 生产容器实测 PASS)
2026-09-08 16:36:15 +08:00

3.6 KiB
Raw Permalink Blame History

glm53_pd_chainsglang 补丁树 vs 镜像原版差异2026-09-08 快照)

这是什么

生产/实验容器通过 -v /data/sglang_patch_glm53:/sgl-workspace/sglang 挂载的补丁源码树 (宿主机 60.1/60.2 均有,无 .git)。本目录的 sglang_patch_vs_image_20260908.patch 是它与镜像 lmsysorg/sglang:nightly-dev-20260828-daf63171digest sha256:28e0d26073161e49ca56eba808d264a4223804a212020f1dfe1b2405b9f8a399)内置原版源码的 统一 diff是这套补丁唯一的版本记录(宿主机树上没有 git 历史可查)。

生成方式60.2 上,容器化 diffpristine 在前保证 patch 语义为"打在原版上"

docker run --rm -v /data/sglang_patch_glm53:/host_patch:ro -v /tmp:/host_tmp \
  lmsysorg/sglang:nightly-dev-20260828-daf63171 bash -c \
  'diff -ruN --exclude=__pycache__ --exclude="._*" --exclude=.git \
   /sgl-workspace/sglang /host_patch > /host_tmp/pd_chain.patch'

改动清单11 文件10 改 + 1 新增)

主题 = DFlash 家族DFLASH/DSPARK+ PP 流水 + PD 分离 三者组合的解锁与修错。

文件python/sglang/srt/ 下) 改动
arg_groups/speculative_hook.py 放开 PP 断言DFLASH/DSPARK 允许 pp>1限 PD prefill/decode server
disaggregation/prefill.py 草稿 KV 跨机传输 opt-outenv SGLANG_DFLASH_PD_DRAFT_KV_TRANSFER=0PP 下仅最后一个 rank 持活草稿池、仅它注册 draft bufferTP 不匹配时MHA 头分片 → kv_item_lens 不同)会 RDMA 段失败/静默错位——注释里有完整推导
managers/scheduler_pp_mixin.py PP 末 rank 为 DFlash 家族构造 next_draft_input 并经 RelayPayload 中继topk_p/index/hidden_statesEAGLE 草稿中继路径dflash 前后 set/clear pp_proxy_tensors
managers/scheduler.py PP 投机分支:仅 pp_size==1 时做 D2H copy_to_cpu末 rank 结果是 device 张量送 rank 0非末 stage next_token_ids=None 直接拷会崩)
model_executor/model_runner_components/layer_setup.py MTP 层守卫放行 dflash 家族(独立草稿模型不用目标模型原生 MTP 层)
models/deepseek_v2.py DFLASH PP prefill各 stage 原始 aux 捕获打包进 proxy_tensors["dspark_aux_hidden_states"]set_dflash_layers_to_capture 改为按 consumer 入口捕获(+1 偏移,各 rank 只留本地 consumer
models/dflash.py 新增 project_target_hidden_partial:各 PP rank 只对自己捕获的特征列做 fc 部分投影,末 stage 求和并只做一次 hidden_norm数学等价切片
server_args.py PP + 投机断言改写:仅允许 PD prefill server + DFLASH/DSPARK#33863
speculative/dflash_pp.py 新增 kimi_pp_capture_layer_idsKimi 后置层流捕获归属下一 stage 的辅助函数
speculative/dflash_worker_v2.py PD-prefill 非末 PP rank = context-only不做草稿 forward、无草稿 KV只投影本地捕获特征草稿 worker 以 pp_size=1 构建;_init_pp_context_features
speculative/spec_info.py DFlash PD 冷启动接线disagg 草稿输入走 build_dflash_family_disagg_draft_input——无此项 decode 首请求 400

如何使用

  • 部署:不 apply patch直接整树挂载deploy/PD_CHAIN.md 基础设施依赖表)。
  • 审阅/重建:把镜像源码导出后 patch -d <sglang仓根> -p2 < sglang_patch_vs_image_20260908.patch diff 两侧绝对路径去掉前两段后即仓内相对路径)。
  • 漂移检测:重跑上面的容器化 diff与库内 patch 比对;不一致说明宿主机补丁树又被人改过, 需要重新快照入库。