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

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

分支2Tags0
当前项目代码仓暂无内容

🚀 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_benchmark NPU 算子生成 Agent 基准测试集 ✅ 可用

📈 数据集目录

📁 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_benchmark/                 # NPU 算子生成基准测试集
├── 📂 level1/                    # Level1 - 基础 Vector 算子
│   ├── 1_GELU.py / 1_GELU.json
│   ├── 2_SwiGLU.py / 2_SwiGLU.json
│   └── ...
├── 📂 level2/                    # Level2 - 复杂融合算子
│   ├── 1_RotaryMul.py / 1_RotaryMul.json
│   ├── 2_GroupNormSwish.py / 2_GroupNormSwish.json
│   └── ...
├── 📂 level3/                    # Level3 - Cube 算子
│   ├── 1_BatchMatmul.py / 1_BatchMatmul.json
│   ├── 2_GroupedMatmul.py / 2_GroupedMatmul.json
│   └── ...
└── 📂 level4/                    # Level4 - CV 融合算子
    ├── 1_LSTM.py / 1_LSTM.json
    ├── 2_FFN.py / 2_FFN.json
    └── ...

📂 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_benchmark

NPU 算子生成 Agent 的基准测试集,用于评估 Agent 根据算子描述自动生成 Ascend C 算子代码的能力。每个算子包含两个文件:

  • .py 文件:算子的 PyTorch 参考实现,包含模型定义与测试用例加载逻辑
  • .json 文件:算子的输入规格描述(JSONL 格式),每行定义一组测试输入,包含张量形状、数据类型、属性等信息

按难度分为四个级别:

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

使用示例:

1)将待测算子的 Python 与 JSON 文件复制到 Agent 工作目录:

cp npu_benchmark/level1/1_GELU.py <agent_work_dir>/
cp npu_benchmark/level1/1_GELU.json <agent_work_dir>/

2)输入提示词让 Agent 参考两个文件生成算子:

请参考 1_GELU.py 中的算子逻辑和 1_GELU.json 中的输入规格,生成对应的 Ascend C 算子实现代码。

3)对比原算子与生成算子的输出结果,验证精度、对比性能。


基于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 算子代码生成的训练数据集,数据集涵盖多种算子类型,旨在支持算子代码自动生成模型的训练与评估。

定制我的领域