Skip to content

Repository files navigation

Ascend Kernel Forge logo

Ascend Kernel Forge

从 Qwen 在线服务的 SLA 与算力成本出发,系统化优化 Ascend Kernel

Ascend Kernel Forge 是一个面向推理框架端到端性能的 Agentic Kernel 优化控制面。
它从真实 Qwen 请求、Prefill/Decode 阶段、框架 callsite 和 shape 分布中发现机会,
再证明候选能否改善 xLLM、vLLM-Ascend、SGLang 的真实服务指标。

Qwen-first · CANN ≥ 9.0.0 · 3 Framework Arms · 10 Kernel Routes · 1 Evidence Chain

从真实 Qwen Serving 瓶颈到可发布端到端收益

Kernel 决定局部执行效率,推理框架决定这份效率能否转化为 TTFT、TPOT、SLA 内 Goodput、HBM 容量和尾延迟的改善。AKF 的主线不是“写一个更快的算子”,而是从服务问题定位到可编辑 Kernel,再把局部收益穿过真实 binding、dispatch、graph、scheduler 和 serving 路径,最终形成有支持边界和回滚条件的发布结论。

为什么需要优化 Ascend Kernel

在 LLM 推理中,同一个 Kernel 会被每层、每个 token 或每个 decode step 反复调用。只要它在真实流量中的加权占比足够高,局部的数据搬运、计算映射、尾块或下发成本就会累积成服务延迟、设备时间和并发容量问题。反过来,一个看起来很慢但调用占比很低的 Kernel,即使 microbenchmark 大幅加速,也可能几乎不改变端到端结果。

服务目标 Kernel 层可能消耗价值的位置 必须在框架端证明的结果
缩短 Prefill 首 token 时间 Cube/Vector 利用不足、MTE 搬运、融合边界、Host 下发 TTFT 与 Prefill weighted latency 改善,精度和图模式无回归
降低 Decode 每 token 延迟 高频小 shape、tail、core/block 不均衡、launch/graph gap TPOT、E2E p99 与连续 decode replay 改善
提高固定 SLA 下的吞吐 Kernel 时间、scheduler/batching、通信或 Host gap 共同限制 Goodput @ SLA、error rate 与稳定性满足阈值
扩大单卡/多卡承载能力 临时张量、workspace、KV 与 graph 内存相互挤占 Peak HBM、KV capacity、max concurrency 不退化或改善
降低优化交付风险 binary 未加载、dispatch 未命中、隐藏 fallback、支持域过宽 真实 hit proof、fresh-process 复验、fallback 与 rollback 边界完整

因此,AKF 把四个模糊问题变成机器可验证的问题:

  • 数学语义真的没有改变吗?
  • 正确的 binary 真的在真实 callsite 命中了吗?
  • 局部收益真的进入模型和在线服务了吗?
  • 结论的模型、SoC、CANN、shape、dtype、graph 和框架边界真的可复现吗?

这和单独优化一个 Kernel 有什么不同

普通单 Kernel 优化 Ascend Kernel Forge
从一个算子或固定 shape 出发 从 Qwen 服务 KPI、真实请求分布和 framework callsite 反推机会
默认问题一定在 Kernel 先区分 Kernel、HBM/MTE、Host、Graph、Scheduler 与 Communication
以 microbenchmark speedup 为主要成功标准 以 profiler-off 的 model replay 与 serving A/B 为最终成功标准
关注指令或 tiling 的局部变化 同时约束 ABI、binding、dispatch、stream、graph、fallback 与 HBM
一份实现被视为适用于多个框架 候选源码可以复用,三套框架的运行事实不能复用
输出一个最优数字 输出 exact build identity、原始证据、支持包络、verdict 与 rollback

同一份 Kernel 源码可以复用,端到端收益事实不能复用。

为什么优化这个 Kernel,而不是另一个

用真实流量、Amdahl 上界与集成成本选择正确任务

AKF 先冻结 Short PrefillLong PrefillDecodeMixed Serving 的 tokens、并发、callsite、provider、shape、调用次数和权重,再判断研发预算是否真的应投入 Kernel。若热点在真实流量中的占比为 h,候选的板端局部加速为 s,其理想端到端加速上界为:

E2E speedup upper bound = 1 / ((1 - h) + h / s)

这个上界不是收益承诺。AKF 还会检查流量覆盖、A/A 噪声、集成成本、可编辑路径与支持域,并把问题分配到正确的任务类型,或直接终止:

  • kernel:active bound 确实在 Kernel 数据流或计算映射;
  • integration:瓶颈来自 binding、dispatch、provider 或 fallback;
  • configuration:瓶颈来自 runtime、graph 或资源策略;
  • pipeline:瓶颈来自 scheduler、batching、communication 或 Host gap;
  • no-go(终止结论,不是 Task 类型):Amdahl 上界不足、范围不可安全限定或验证成本超过预算。

这一步的业务价值是尽早终止“局部能快、服务无感”的方向,把 Agent 搜索预算集中到可以改变端到端指标的机会。

昇腾 Kernel 到底怎么优化

根据 Ascend Active Bound 选择可证伪优化假设

GPU 项目可以提供搜索范式,但不能直接给出昇腾结论。AKF 在目标板上识别 active bound,再用一个最小、可证伪的假设修改数据流:

Active bound 主要观察 候选优化动作 必须回到板端验证
Compute Cube/Vector activity、instruction mix Cube/Vector 分工、tile/block 映射、融合与流水 Kernel latency、activity、utilization
Transfer MTE traffic、UB/L1/L2/HBM、stall/overlap tiling、数据复用、双缓冲、MTE 与计算重叠 traffic、overlap、latency
Balance core/block skew、alignment、tail cost 核间均衡、尾块专化、对齐访问 row p95、CV、tail cost
Launch/Graph host gap、tiling host cost、recompile、replay miss 下发减负、AOT、graph 兼容、stream 语义 host gap、recompile、replay hit

每轮只允许一条主假设,并依次经过 correctness → isfinite → hit proof → profiler-off board A/B。Profiler 只负责选择下一轮假设,不能提供发布数字;microbenchmark 通过也不等于 release。

候选可在多种路线中探索,但路线名不代表性能结论:

  • 快速搜索:Triton、TileLang、CATLASS DSL;
  • 更直接的性能控制:AscendC、CATLASS C++;
  • 专家路径:PyPTO、PTO-ISA。

每条路线都保留独立的 SoC、CANN、toolchain、binary 与证据身份,不能混池比较或互相代证。

Kernel 快了,服务真的会快吗

从 Operator A/B 到三框架发布支持包络

局部收益要依次穿过四层,任何一层都可能把 microbenchmark 收益吃掉:

  1. Operator A/B:正确性、真实 dispatch、无隐藏 fallback 与稳定板端计时;
  2. Model Replay:精度 smoke、加权模型延迟、graph replay/recompile 与 peak HBM;
  3. Online Serving:TTFT、TPOT、Goodput @ SLA、E2E p99、error、KV capacity 与 max concurrency;
  4. Fresh Process:同一身份在新进程独立加载、重放并完成 cleanup。

常见的价值损耗包括 dispatch/graph tax、model integration tax、scheduler/batching tax 和 HBM/capacity trade-off。若候选局部有效但端到端收益不足,正确结论是 inventory,不是对外宣称优化成功。

最终交付是一份可审计的 Kernel Release Record,而不是一个 speedup 数字:

  • 身份:Model、SoC、CANN exact build、backend、compiler、binding、deployment 与 binary digest;
  • 三框架事实:每个 arm 独立保存 build、binding、loaded path、hit proof、model replay、serving A/B 与 verdict;
  • 支持包络:明确已验证的 op、shape、dtype、layout、eager/graph 与 framework,其他范围安全 fallback;
  • 发布安全:owner、license、rollback、cleanup 与 fresh-process reproduction;
  • 机械结论promotableinventoryrejectedblockedincompleteincomparable

上图展示的是中性的发布合同:没有预选 PASS,也不代表示例 Campaign 已获得真实板端结论。

三个 Framework Arm,三套运行事实

Arm 必须冻结的 runtime 必须独立证明的事实
xllm xLLM binary、xllm_ops ABI、torch/torch_npu、CANN/ops、model 与 launch policy C++ callsite、private OPP/overlay、loaded binary、graph、model/serving A/B
vllm_ascend vLLM core 与 vLLM-Ascend plugin 双重身份、runtime 与 scheduler policy custom op/PrivateUse1/Triton provider、compile/graph、engine 与 online serving
sglang_ascend SGLang 与实际启用的 NPU kernel package、runtime 与 cache policy torch.ops.npu/provider、NPUGraph、offline/server/online serving

Suite 只在三类 lane 内比较:

  • per_framework_native_ab:同一 framework arm 内 native baseline 与 candidate 的 A/B;
  • matched_policy:三框架使用相同请求、顺序、权重、SLA 和容量策略;
  • framework_native_best:相同优化预算下比较各框架最佳合法系统方案,不把结果归因给单个 Kernel。

只有三个 required arms 在同一语义域分别通过,才能声明 portability。

10 条独立 Kernel Route

AKF 不绑定单一 DSL,也不把不同 lowering/build 链路的证据混在一起。

路线族 Backend identity
Native / Template ascendc_directcatlass_cpp
Python / DSL / IR triton_ascendtilelang_ascend_ascendctilelang_ascend_pto_headerstilelang_ascend_npuircatlass_dsl
PTO / Expert pypto_tensor_ptoaspypto_pro_ccepto_isa_direct

每个可执行组合都必须精确命中 (backend, SoC, CANN, op, shape, dtype, graph) capability tuple。未知组合失败关闭。CANN 正式版最低为 9.0.0,新 Campaign 默认精确锁定 9.1.0pypto_pro_cce 仅允许声明支持的 950PR/950DT,A3 Campaign 必须拒绝。

完整路线边界见 Kernel Backend 目录

5 分钟查看控制面

要求 Python 3.11+

python -m pip install -e .
python -m akf validate-suite suites/qwen3-8b-a3-bf16/suite.json
python -m akf validate-campaign suites/qwen3-8b-a3-bf16/arms/xllm.json
python -m unittest discover -s tests -v

仓库提供 Qwen3-8B Dense + Ascend A3 + BF16 + TP1 的三框架 Suite。示例故意保持安全的 draft 状态,因此验证结果应是:结构合法、三个 arm 可识别,但在真实设备、框架 revision、模型 digest、capture、CANN build 和阈值冻结前不得创建 Run。

部署到真实环境后,只有 validator 返回 valid=true, ready=true 才允许执行:

python -m akf init-run path/to/ready-campaign.json --runs-root runs
python -m akf judge runs/<run-id> runs/<run-id>/attempts/<candidate-id>/gates

CLI 输出机器可读 JSON。失败使用非零退出码,并且不能留下部分 canonical artifact。

信任边界

  • AKF 是优化控制面,不是新的推理框架或 Kernel DSL;
  • Agent 生成候选,但不能修改 baseline、oracle、workload、threshold、Gate、Decision 或 ledger;
  • microbenchmark 不能直接产生端到端或跨框架结论;
  • profiler-on 数据只用于诊断,发布指标来自 profiler-off 复验;
  • 候选只能通过私有 OPP、隔离 overlay 或框架绑定部署,不能修改共享 CANN/OPP;
  • simulator、CPU-SIM、cost model 和 GPU 参数可以帮助排序,不能证明昇腾板端性能;
  • promotable 表示机器门禁满足,不等于自动合入或发布。

核心对象

对象 作用 可信所有者
OptimizationSuite 定义跨框架目标、required arms、比较 lane 与公共 workload Supervisor
Campaign 冻结单个 framework arm 的环境、能力、基线与策略 Supervisor
Run 保存 Campaign、Workload、Capture 的不可覆写快照 Supervisor
Task 限定任务类型、ABI、支持域、预算和允许写路径 Supervisor
Candidate 描述单一假设、数据流变化、源码与失败边界 Supervisor 规范化 Agent 输出
Build 绑定源码、后端、SoC、CANN、工具链与二进制摘要 Trusted Builder
Gate 保存环境、算子、模型、服务、复验与发布证据 Trusted Evaluator
Decision 校验父链并机械输出 verdict Deterministic Judge

仓库结构

ascend-kernel-forge/
├─ REQUIREMENTS.md                 唯一规范性要求入口
├─ AGENTS.md                       候选 Agent 操作合同
├─ assets/brand/                   Logo
├─ assets/visuals/                 README 与架构主视觉
├─ docs/                           架构、契约、后端、框架与治理
├─ schemas/                        Draft 2020-12 机器契约
├─ src/akf/                        确定性控制面核心与 CLI
├─ suites/                         跨框架 OptimizationSuite 与各 framework arm Campaign
├─ adapters/                       Framework 与工具适配边界
├─ knowledge/                      带适用包络的验证知识
└─ tests/                          身份、权限、判定与反投机测试

深入阅读

精确字段与关系仍保留在 docs/visuals/*.excalidraw 中,作为可编辑工程视图;README 使用 GPT Image 2 主视觉表达项目价值,并以 Markdown 文本作为权威技术说明。

About

Evidence-first control plane for agent-assisted Ascend kernel optimization

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages