Repository navigation
Releases: chiro2001/deepseek-v4.1-flash-ascend910B
Release list
A3 单实例 TP8 形态 · 镜像层 patch 包 v1(main@e5a38ed)
A3 单实例 TP8 形态 · 镜像层 patch 包 v1(main@e5a38ed)
面向:在一台 A3(8 个 device = 4 块卡)上跑 DeepSeek-V4.1-Flash W4A8 的单实例 TP8 形态
(不拆 P/D)。与已有的 a3-ced-pd-*(8+8 PD 分离 + CED)是两个不同的交付面。
这个包做什么
官方基础镜像 quay.nju.edu.cn/ascend/vllm-ascend:deepseek-v4.1-flash-a3(18 层)
+ 我们的 1 层工作层(约 1.2 MiB 压缩)= 与我们在 A3 上实测逐字节相同的形态:
| 内容 | 说明 |
|---|---|
patches/files/*.py(20 个挂载源) |
engram / rope / 块表 / attention / MoE dispatch / admission gate 等补丁件 |
scripts/ |
serve_a3.sh / serve_a2.sh / serve_v2.sh / run_test.sh / build_image.sh |
| gmm1 自定义内核(2 个文件,115 KB) | GroupedMatmulSwigluQuantV2 的 armF 重编内核(.o md5 01f600d2…),已烘进镜像层,部署时不需要任何 V41_HC_OPP_PKG 环境变量 |
相对上一版交付的变化(本轮及前几轮)
| # | 变化 | 效果(实测) |
|---|---|---|
| 1 | engram wkv 按输出维分片 + all_gather(ENGRAM_WKV_TP,默认 1) |
−0.57 ms/步(2.2%) 且 KV 容量 +5.9%(2,821,337→2,987,727) |
| 2 | engram padded 只清要读的行(ENGRAM_PAD_SKIP,默认 1) |
ZerosLike 8192×6144 1.86→0 次/步(≈−58 µs/步) |
| 3 | gmm1 armF 内核进仓库 + 进镜像层 | 算子 −7.56 µs/次 ⇒ 端到端 −0.67~−1.09 ms/步 |
| 4 | 6N 捕获桶 / DRAFT_GRAPH=1 / ENGRAM_DEVICE_INDEX=1 / gate 多-prefill |
前几轮已进默认 |
验证(全部在发布镜像上、不传任何 OPP 变量)
| 项 | 结果 |
|---|---|
| 起服 | ✅ health=200、/v1/models 200 |
| 144K 验收 | ✅ 11/11 通过,失败 0(四针 A/B/C/D、流式、多轮 3 轮、prefix 2 次) |
| 单流 decode | 113.4 → 116.4 tok/s;ms/step 25.28 → 24.84 |
| 多流 decode | N=4 249.5 / N=8 362.7 / N=16 536.9 tok/s(ms/step 全部下降) |
| prefill(冷前缀) | 7,135 / 7,389 / 7,498 tok/s(N=1/2/4;必须预热后再测,见 docs) |
| KV 容量 | 2,987,727 tokens(GPU_UTIL=0.92);DCP8 形态 18,285,996 |
| 地火口径(1024/256) | 单流 96.3 → 117.1 tok/s;N=4 +28.4%、N=8 +28.4%(对比历史基线) |
| 镜像自检 | 89 个 payload 文件逐字节一致;内核级反例对照 base 2e4a834a → new 01f600d2 |
怎么用
# 1) 解包
tar -I zstd -xf dsv41-a3-tp8-imagekit-v1.tar.zst
cd dsv41-kit-v3 # 内含 README.md / MANIFEST.json / images/ / tools/
# 2) 按 README 把工作层应用到官方基础镜像(无需 skopeo、无需联网)
# 3) 起服(默认已含本包的全部优化)
DEVS="0 1 2 3 4 5 6 7" bash scripts/serve_a3.sh校验
sha256 d674adfe568f63d021a0d76f7b9ffdac6766e76639d6d712446314ab98453f30
相关文档
docs/R6-SUMMARY-20261005.md(总账)· docs/ENGRAM-WKV-TP-20261005.md(本轮最大收益)·
docs/BOTTLENECK-DECOMP-20261005.md(decode 步三段式分解)· docs/PREFILL-PROFILE-20261005.md(prefill 画像)·
docs/BAT-TOKENS-TRADEOFF-20261005.md(容量/正确性权衡)· kernels/gmm1_armF/README.md(自定义内核)
A3 单机 8+8 PD 分离 + CED 形态 · 镜像层 patch 包 v3(main@7497a06)
A3 单机 8+8 PD 分离 + CED 形态 · 镜像层 patch 包 v3(main@7497a06)
v3 把 A3 PD 分离的交付默认值固定下来,并让两种交付面(clone 仓库 / 用本镜像包)拿到同一套默认。
相对 v2 的变化
| # | 变化 | 为什么 |
|---|---|---|
| 1 | D 侧 DSpark 默认开(SPEC=1 DRAFT_GRAPH=1) |
2026-09-27 已验证;关掉用 V41_CED_ALLOW_DSPARK=0(退回 SPEC=0) |
| 2 | 前缀缓存默认开(两侧 PREFIX=1) |
144K/1M 常规·整池·交错命中全部正确、冷热逐字节一致(≈16–18×);关掉用 PREFIX=0 |
| 3 | D 默认走图模式(+ V41_CED_GRAPH_PROMPT_TAIL_EAGER=1) |
原先裸跑 decode 会被图模式门拒掉;CED_DIAGNOSTIC_EAGER=1 仍是显式 eager 诊断臂 |
| 4 | STATIC_KERNEL 按角色取默认 D=1 / P=0 |
与验证配置逐项一致,避免"脚本默认 ≠ 交付默认" |
| 5 | 引擎侧 model.py 的同门默认一起改成 1 |
两处必须一起改,否则默认启动会在模型构造期被拒 |
v2 已具备 decode 半边请求边界护栏(修"直连 decode 的普通请求打死整个 D 实例")。
v1 没有护栏。请用 v3。
验证
| 项 | 结果 |
|---|---|
| 一致性校验 | 31/31 逐文件一致(source=payload) |
| 重建验收 | 18 层 diffID 一致、305,791 条文件系统条目逐条相同(diff 0 字节)、92 个 payload sha256 一致(diff 0 字节) |
| 冒烟 L1/L2 | 补丁 md5 92/92、py_compile 13/13、import vllm 0.27.1 OK |
| 包内默认值抽查 | SPEC=${SPEC:-1} DRAFT_GRAPH=${DRAFT_GRAPH:-1}、PREFIX=${PREFIX:-1}、STATIC_KERNEL D=1/P=0、model.py 门默认 "1"、护栏在位 |
镜像内 repo_rev |
7497a06+0dirty(与本 Release 基线一致) |
以默认值真机启动的端到端自测(只传部署必需项,功能开关一个不传):
| 用例 | 结果 |
|---|---|
| 144K 冷·热·热 | ✅ 6/6 正确,冷 17.35 / 11.29 s → 热 1.15–1.22 s |
| 经代理纯文本 | ✅ 8*9 → 72,finish_reason=stop |
| 流式 | ✅ 5 帧 + [DONE],内容正确 |
| 并发 4 路 | ✅ 4/4 正确,0.52–4.71 s |
| Responses API(2 图) | ✅ 200 completed,分别认出两张图 |
| 代理探活 | ✅ 200 / {"status":"ok","prefill_instances":1,"decode_instances":1} |
| 直连 D 的事故形状请求 | ✅ 400,紧接着 /health 仍 200 |
| 接受长度 / 缓存命中 | A=3.33 / 2.43;P 侧 local_cache_hit=576,000 |
| 两侧错误计数 | AssertionError / EngineDeadError / RuntimeError 全 0 |
资源
dsv41-a3-ced-pd-imagekit-v3.tar.zst(3.8 MB)
sha256 =fb4f4a1b9e39e2d0128a5c90e27a119354155f9be36c43bdd0531a1253da5fb7dsv41-a3-ced-pd-imagekit-v3.tar.zst.sha256
解包后 cd dsv41-a3-ced-pd-imagekit-v3 && bash images/dsv41-a3-ced-pd/rebuild.sh
即可在只有官方基底镜像的机器上重建(不需要 skopeo / 联网 / NPU)。
两条边界(如实标注)
- raw 脚本的
MAX_LEN默认仍是 147456(144K),1M 只在deploy/形态(launch/_common.sh)是默认。用本包的launch/起就是 1M。 - 用
PREFIX=1的 21 项完整验收矩阵尚未重跑(KIT-README 的 21/21 是PREFIX=0口径跑的)。本次覆盖的是:144K/1M 探针、流式、并发 4 路、两图、用户链路。
细节见包内 README.md;源码侧见 main@7497a06:
docs/CED-PD-CACHE-HIT-PLAN-20260925.md§11–§14 —— 缓存/DSpark 转正与默认值验证docs/CED-DECODE-API-GUARD-20260927.md—— decode 请求边界护栏
A3 单机 8+8 PD 分离 + CED 形态 · 镜像层 patch 包 v2(main@2d5ff15)
⚠️ 已被 v3 取代,请用 v3。
本包(main@2d5ff15)已带 decode 半边请求边界护栏,但 DSpark 与前缀缓存仍需
显式打开(V41_CED_ALLOW_DSPARK=1 / V41_CED_ALLOW_PREFIX=1)。
v3 把这两项(以及 D 侧图模式、按角色划分的 STATIC_KERNEL)固定成交付默认,
并让"clone 仓库"与"用镜像包"两种交付面拿到同一套默认。功能差异见 v3 的 Release notes。
A3 单机 8+8 PD 分离 + CED 形态 · 镜像层 patch 包 v1(main@dafea50)
⚠️ 已被 v2 取代,请用 v2。
本包(main@dafea50)不含 decode 半边请求边界护栏。少这条护栏时,
一条直连 decode 半边的普通请求会让 D 自己去 prefill,撞上 CED 固定
128-token replay 守卫,worker 里 raise ⇒ EngineCore 退出 ⇒ 整个 D 实例死掉、
要重载 ~20 分钟权重(2026-09-27 00:01 实测事故)。
v2 另外把多图上限从 1 提到 4(P/D 同值),并补上护栏的逐文件一致性校验。
详见 docs/CED-DECODE-API-GUARD-20260927.md。