提供用于昇腾 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 并行执行。
操作步骤:
- 在 agent 工作目录下创建
.claude目录并配置 Agent:
mkdir -p .claude
mkdir -p .claude/skills
mv agents/ascend-kernel-developer.md .claude/CLAUDE.md
mv skills/ascendc/* .claude/skills/
- 进入 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 许可证 开源。
📞 联系方式
如有问题、建议或想要参与贡献,请通过以下方式联系我们:
- 🐛 提交 Issue - 报告 Bug 或提出功能建议
- 🔀 发起 Pull Request - 贡献代码或数据