ascendc-kernelgen-data:基于昇腾 AscendC 的算子生成训练数据集项目

提供用于昇腾 AscendC 算子代码生成的训练数据集,数据集涵盖多种算子类型,旨在支持算子代码自动生成模型的训练与评估。

分支2Tags2

🚀 Ascend KernelGen Data

License Ascend

AscendC 算子生成训练数据集


📋 简介

本项目提供了用于昇腾 AscendC 算子代码生成的训练数据集与测试集。数据集涵盖多种算子类型,旨在支持算子代码自动生成模型的训练与评估。分为AscendC数据集和AscendC Agent 数据集。

✨ AscendC 数据集类型

数据类型 描述 状态
doc_data AscendC 开发指南和API 文档数据 ✅ 可用
vector_data Vector 算子数据 ✅ 可用
cube_data Cube 算子数据 ✅ 可用
cv_fusion_data CV 融合算子数据 ✅ 可用
flywheel 飞轮数据(以模型生成样本纠错数据为主) ✅ 可用

数据集版本与SFT模型生成效果评测结果详见👉./dataset/README.md

✨ AscendC Agent 数据集

数据来源 描述 状态
CANN CANN仓 Agent 生成算子轨迹数据 ✅ 可用
level_0 level 0 Agent 生成算子轨迹 ✅ 可用
level_1 level 1 Agent 生成算子轨迹 ✅ 可用
level_2 level 2 Agent 生成算子轨迹 ✅ 可用

✨ 测试集

数据类型 描述 状态
npu-kernelbench NPU 算子评测与基准测试框架 ✅ 可用

📈 数据集目录

📁 dataset/
├── 📁 dataset/
│   ├── 📂 doc_data/                  # 文档数据
│   │   ├── 202602_0001.json
│   │   ├── 202602_0002.json
│   │   └── ...
│   ├── 📂 vector_data/               # Vector 算子数据
│   │   ├── 202602_0010.json
│   │   ├── 202602_0011.json
│   │   └── ...
│   ├── 📂 cube_data/                 # Cube 算子数据
│   │   └── [待补充]
│   └── 📂 cv_fusion_data/            # CV 融合算子数据
│       └── [待补充]
│
├── 📁 agent_dataset/
│   ├── 📂 CANN/            
│   │   ├── 📂 20260613/
│   │   │   ├── 1_AdaptiveAvgPool3d_aug00.json
│   │   │   ├── 3_AdaptiveMaxPool3DGrad_aug00.json
│   │   │   └── ...
│   │   ├── 📂 20260630/  
│   │   ├── 📂 20260701/
│   ├── 📂 level_0/ 
│   ├── 📂 level_1/ 
│   └── 📂 level_2/ 
└── 📂 scripts/      # 合并数据集脚本

📈 测试集目录

📁 npu-kernelbench/                     # NPU 算子评测与基准测试框架
├── 📂 data/                            # 基准测试数据集
│   ├── 📂 kernel_generator/            # 主基准测试集
│   │   ├── 📂 level1/                  # Level1 - 基础 Vector 算子
│   │   │   ├── 📂 GELU/
│   │   │   │   ├── definition.json     # 算子定义
│   │   │   │   ├── workload.jsonl      # 测试用例
│   │   │   │   ├── solution.json       # 参考方案
│   │   │   │   └── ...
│   │   │   ├── 📂 Add/
│   │   │   └── ...
│   │   ├── 📂 level2/                  # Level2 - 复杂融合算子
│   │   ├── 📂 level3/                  # Level3 - Cube 算子
│   │   └── 📂 level4/                  # Level4 - CV 融合算子
│   └── 📂 ascendc_migration/           # AscendC 算子迁移测试集
│       ├── 📂 level1/                  # Level1 - 基础算子迁移
│       ├── 📂 level2/                  # Level2 - 融合算子迁移
│       └── 📂 level3/                  # Level3 - Cube 算子迁移
├── 📂 src/                             # 评测框架源码
├── 📂 tests/                           # 测试
├── 📂 docs/                            # 文档
├── 📂 scripts/                         # 脚本
├── 📂 docker/                          # Docker 配置
├── 📄 README.md                        # 框架文档
└── 📄 pyproject.toml                   # 项目配置

📂 AscendC 数据结构

JSONL 格式

所有训练数据采用 JSON Lines 格式,每行一个 JSON 对象。

字段说明

字段 类型 描述
instruction string 任务指令或提示
input string 输入内容或问题描述
output string 期望的输出或代码
system string 系统提示词
history array 对话历史

数据示例

📖 doc_data

Ascend C API 文档问答数据:

{
  "instruction": "",
  "input": "在Ascend C中,GetBlockSize函数的返回值单位是什么?",
  "output": "GetBlockSize函数的返回值单位是字节(Byte)。GetBlockSize用于获取当前核函数执行的Block的大小。",
  "system": "",
  "history": []
}

🔢 vector_data

向量算子代码生成任务:

{
  "instruction": "",
  "input": "帮我根据下面的算子需求,实现高效的Ascend C代码\n\n1. 算子描述:\n# aclnnAddLayerNormGrad...",
  "output": "// Ascend C 算子实现代码...",
  "system": "",
  "history": []
}

🧪 npu-kernelbench

NPUKernelBench 是昇腾 NPU 算子评测与基准测试框架,通过对比参考实现,评估自定义 NPU 算子方案(PyTorch/torch_npu、Ascend C/CANN、Triton)的正确性与性能。每个算子目录包含以下文件:

  • definition.json:算子定义,包含符号化维度(const/var/expr)、输入/输出张量规格与 PyTorch 参考实现
  • workload.jsonl:测试用例(JSONL 格式),每行定义一组具体维度值与输入数据生成策略(random/scalar/custom/safetensors)
  • solution.json:算子实现方案,包含源码文件、构建规格与入口函数(支持 python/pytorch/triton/ascendc)
  • traces.jsonl:评测结果记录
  • result.xlsx:评测结果汇总

主基准测试集(data/kernel_generator/)按难度分为四个级别:

级别 目录 算子数量 描述
Level 1 kernel_generator/level1/ 33 基础 Vector 算子(如 GELU、Add、Sort 等)
Level 2 kernel_generator/level2/ 30 复杂融合算子(如 RotaryMul、MoeFinalizeRouting 等)
Level 3 kernel_generator/level3/ 10 Cube 算子(如 BatchMatmul、ConvStandard 等)
Level 4 kernel_generator/level4/ 29 CV 融合算子(如 LSTM、FFN、FusionAttention 等)

使用示例:

1)评测单个算子方案:

uv run npu-kernelbench eval data/kernel_generator/level1/GELU \
    --solution data/kernel_generator/level1/GELU/solution.json

2)批量评测数据集(按级别):

uv run npu-kernelbench run-dataset data/kernel_generator --level level1

3)生成 HTML 评测报告:

uv run npu-kernelbench run-dataset data/kernel_generator \
    --level level1 --html report.html

更多 CLI 选项与数据格式说明详见 npu-kernelbench/README.md


基于claude code 的Benchmark 批量评测

在这之前,请确保您的环境满足以下要求:

  • Python 3.8+
  • Ascend CANN 8.0+
  • PyTorch 2.0+
  • Claude Code CLI (请确保已正确安装并配置)

适用于批量评测算子的生成效果,支持单 NPU 串行或多 NPU 并行执行。

操作步骤:

  1. 在 agent 工作目录下创建 .claude 目录并配置 Agent:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/ascend-kernel-developer.md .claude/CLAUDE.md
mv skills/ascendc/* .claude/skills/
  1. 进入 agent 工作目录,执行批量调度脚本:

单 NPU 串行模式:

cd /path/to/agent_work_dir
bash utils/run_benchmark_ascendc.sh \
    --benchmark-dir /path/to/NPUKernelBench \
    --level 1 \
    --range 1-30 \
    --npu 0 \
    --output /path/to/output

多 NPU 并行模式(推荐):

cd /path/to/agent_work_dir
bash utils/run_benchmark_ascendc.sh \
    --benchmark-dir /path/to/NPUKernelBench \
    --level 1 \
    --range 1-30 \
    --npu-list "0,1,2,3,4,5" \
    --output /path/to/output

参数说明:

  • --benchmark-dir: Benchmark 根目录路径(必填)
  • --level: Level 编号,如 1, 2, 3(必填)
  • --range: 算子范围,如 1-30(与 --ids 二选一)
  • --ids: 指定算子编号列表,逗号分隔,如 3,7,15(与 --range 二选一)
  • --npu: 单 NPU 设备 ID,如 0(默认 0,与 --npu-list 互斥)
  • --npu-list: 多 NPU 列表,逗号分隔,如 0,1,2,3,4,5(与 --npu 互斥,优先级更高)
  • --output: 输出目录(必填)

注释:agents、skills和utils/run_benchmark_ascendc.sh可以从https://gitcode.com/cann/cannbot-skills 获取

👥 贡献者

感谢所有为本项目做出贡献的开发者!

华为计算产品线:zhengruxi、yancen、lipengfei


🤝 贡献指南

我们欢迎社区贡献!如果您想为本项目做出贡献,请遵循以下规范:

数据贡献规范

  • 确保数据格式符合 JSONL 标准
  • 每个数据文件应包含清晰的字段说明
  • 代码数据应经过编译验证
  • 文档数据应经过准确性校验

📄 许可证

本项目采用 MIT 许可证 开源。


📞 联系方式

如有问题、建议或想要参与贡献,请通过以下方式联系我们:

项目介绍

提供用于昇腾 AscendC 算子代码生成的训练数据集,数据集涵盖多种算子类型,旨在支持算子代码自动生成模型的训练与评估。

定制我的领域