Skip to content

Repository files navigation

ASCEND-OK logo

ASCEND-OK

Adaptive Search with Constraint-Aware Evolution and NPU Diagnostics for Optimization of Triton Kernel

面向 Triton-Ascend 与昇腾 A2/A3 平台的约束感知进化算子优化系统

项目网站 · 技术报告 · 作品视频(提取码 89vr)· 复现指南

Score Cases Kernels Platform


ASCEND-OK 以待优化 Triton Kernel 和测试目录为输入,使用赛事允许的大模型提出程序变异,并由编译、全部正确性 Case 与真实 NPU 性能测量决定候选能否进入下一代。系统自动完成搜索、失败诊断、断点恢复、多样性选择和确定性打包,最终为每个 Kernel 输出不超过 5 个候选。

项目由中山大学“没带龙书让agent自己干活”队完成。队员:欧阳易芃、陈龙、陈大有;指导老师:张献伟。

官方评测结果

配置 分数 任务通过 有效 Kernel avg speedup
开放候选池峰值 100 191 / 216 20 / 21 103.70
连续受约束搜索峰值 71 241 / 276 19 / 21 71.39
稳健收口配置 70 204 / 225 20 / 21 69.98

稳健收口轮次中,_chunk_cumsum_fwd_kernel_unpack_seq_triton_kernel 达到单 Kernel 评分上限 200;_fwd_kernel_ep_gather_act_quant_kernel_quantize_k_cache_fast_kernel 分别达到 162.94、161.97 和 138.29。不同轮次的 Case 数与候选组合并不完全相同,因此相邻分数差异不直接作为单模块消融结论。完整实验数据与逐 Kernel 分析见技术报告

搜索闭环

flowchart LR
    A[Kernel + Tests] --> B[Constraint-aware Evolution]
    B --> C{Compile Gate}
    C -- fail --> F[Failure Diagnosis]
    C -- pass --> D{All Correctness Cases}
    D -- fail --> F
    D -- pass --> E[NPU Measurement]
    E --> G[Archive + Diverse Top-5]
    F --> B
    G --> B
Loading
  • 约束感知进化:组合大模型程序变异、参数变异、保守 AST 变换、双父代交叉与定向错误修复。
  • 正确性优先评价:候选依次经过静态检查、Triton 编译、全部正确性 Case、边界变体和性能测量;只有完全正确的版本才进入性能档案。
  • NPU 诊断反馈:从源码、运行失败和 profiler 中提取访存连续性、规约轴、尾块比例、量化路径与流水线信号,引导下一代搜索。
  • 多样性 Top-5:在速度之外保留不同模型、父代和结构路径产生的候选,降低隐藏形状上的共因失效风险。
  • 可追溯与可恢复:源码指纹、lineage、事件日志和原子 checkpoint 记录每次变异及评价结论,支持中断后继续搜索。
  • 确定性交付:稳定排序生成 manifest、哈希校验、secret scan 与 ZIP;同一输入和候选集合得到同一交付结构。

运行环境

组件 版本 / 配置
设备 1 × 昇腾 910B3 芯片
平台 昇腾 A2 / A3(A2 通常对应 910B 系列)
OS / CPU openEuler aarch64 / 32 核
Python 3.10.0
PyTorch / torch-npu 2.6.0 / 2.6.0rc1
Triton-Ascend 3.4.0.dev2026011122
CANN 8.3.RC1.alpha003
候选模型 deepseek-v4-flash, qwen3.6-flash
模型协议 OpenAI-compatible Chat Completions

快速复现

比赛运行环境需预先提供 CANN、torch-npu、Triton-Ascend、NPU 驱动和官方测试数据。Python 控制面使用 uv 管理。

1. 安装并验证公开树

uv sync --frozen
uv run python scripts/release/verify_public_tree.py

第二条命令检查公开目录、根级兼容入口和核心测试,无 NPU 的机器也可以执行。

2. 注入模型配置

凭据只通过环境变量注入,不写入源码和配置文件:

export ASCEND_OK_MODEL_ENDPOINT="<OpenAI-compatible base URL>"
export ASCEND_OK_MODEL_API_KEY="<runtime-injected secret>"
export ASCEND_OK_MODEL_NAMES="deepseek-v4-flash,qwen3.6-flash"

3. 运行单个 Kernel

uv run python main.py \
  --input-dir /path/to/datasets \
  --output-dir /tmp/ascend-ok-smoke \
  --kernel _log_softmax_kernel \
  --population-size 4 \
  --max-generations 2

4. 运行完整批次并打包

uv run python -m ascend_ok.submission.runner \
  --input-dir /path/to/datasets \
  --output-dir /tmp/ascend-ok-full/output \
  --archive /tmp/ascend-ok-full/submission.zip \
  --receipt /tmp/ascend-ok-full/receipt.json

输出目录必须为空。runner 会按稳定顺序发现 Kernel,运行优化 Agent,验证 1–5 个候选,生成 manifest,并在任务完成后构造确定性 ZIP。环境准备、数据布局、全量批次与故障定位详见 docs/REPRODUCING.md

官方兼容入口

根目录保留赛事参考框架的导入方式:

from config import EAConfig
from executor import TritonExecutor
from optimizer_agent import TritonOptimizerAgent

也可直接运行:

python main.py --input-dir <datasets> --output-dir <fresh-output>

公开目录

src/ascend_ok/          Agent、搜索、评价、模型与打包核心
config/                 模型、搜索、运行时与数据契约
scripts/                环境检查、运行与发布验证工具
tests/                  单元、集成、端到端与边界测试
data/experiments/       门户结果的脱敏摘要
docs/                   复现步骤、依赖说明与来源记录
site/                   GitHub Pages 静态项目网站
ASCEND-OK-Technical-Report.pdf

文档入口


ASCEND-OK · Sun Yat-sen University · 2026

About

ASCEND-TRITON Kernel Optimization

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages