GPUCodeForces/README.md

212 lines
10 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 子赛题一、评测数据集生成挑战赛
欢迎参加 **评测数据集生成挑战赛** 📊!   本比赛旨在构建一个标准化、可用于 GPU 性能测试的评测数据集帮助开发者更高效地比较不同硬件和框架的性能表现。
---
## 💻 比赛背景简介
 AI 模型开发和部署中**GPU 性能评测**是一个非常重要的环节。   不同 GPU、不同深度学习框架 PyTorch、TensorFlow、PaddlePaddle 在运行相同任务时速度、吞吐量、内存占用等表现差异很大。   本次挑战赛希望通过社区的力量,**构建一个标准化、带权重的评测数据集** GPU 性能比较更加科学、公正。
---
## 🎯 比赛目标
* 从 **PyTorch、PaddlePaddle、TensorFlow、Jax、MMCV、Transformers** 等框架中收集并生成评测样本。
* 为每个样本提供**标准输出**和**性能指标**,确保结果可复现。
* 最终形成 **GPU CodeForces** 数据集和评价方法。
初次了解本类比赛的小伙伴可以查看以下两份文档,希望帮助你快速入门和上手:
[赛题入门](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/GPUCodeForces%E8%B5%9B%E9%A2%98%E5%85%A5%E9%97%A8.md)、[代码解读](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/GPUCodeForces%E4%BB%A3%E7%A0%81%E8%A7%A3%E8%AF%BB.md)。
---
## 📥 参赛流程
一句话概括:进入[GPUCodeForces赛事首页](https://gitlink.com/ccf-ai-infra/GPUCodeForces)完成一份成功合并到仓库内的提交即为参赛成功时间自由方法自由只要有灵感就可以动手开code~
### 🌰举个栗子
* 登录or注册自己的Gitlink账号后进入赛事首页初步查看仓库内的文件内容
.
├── S1(说明:第一季比赛名称,该目录下文件需选手自建)
│ ├── issue id 1(选手提交算子前创建的issue对应的id)
│ │ ├── cudacode.py(必要提交文件)
│ │ ├── torchcode.py(必要提交文件)
│ │ ├── run_code.py(必要提交文件)
│ │ ├── prompt.txt(必要提交文件)
│ ├── issue id 2
│ ├── issue id ...
├── example(样例提供,供大家上手)
│ ├── 001-example(文件结构与 issue id x 一致)
│ ├── 002-example
├── images(图片文件夹,参赛选手可忽略)
├── FAQ.md(社区收集的问题与解答)
├── LICENSE(证书,参赛选手可忽略)
├── README.md(赛题baseline)
├── how-to-contribute.md(提交指南看这里)
* 在S1文件夹的文件即为参赛选手需要提交的文件其余文件夹和文件皆为辅助参赛选手了解比赛、提供思路、排忧解难之用。
* 我们将当前赛题的项目clone到本地电脑上建议使用git clone + 链接的方式在S1文件夹下创建一个以自己issue id命名的文件夹待提交的参赛代码文件都放在这里面。
```
Tipsissue id ≠ issue名称名称建议为对该算子的概括性描述。创建了issue后链接末尾处的数字即为issue id。同时也可以在issue界面的醒目位置查看如"#123"这样的数字标识。
```
* 做好了准备工作就可以开始尽情发挥去寻找算子亦或是优化算子。在example文件夹中提供了算子样例如果想简单上手可以查看该文件夹。虽然有效的算子优化也算一次提交但我们鼓励大家发现新的算子✨真正与其他选手拉开差距。
🔧简单介绍一下样例代码:
**example_torchcode.py** 基准模型Baseline。示例提供一个简单的PyTorch模型只包含一个ReLU激活函数。
**example_cudacode.py**优化模型。示例使用PyTorch的load_inline功能直接编译和加载CUDA代码创建了一个新的模型类使用自定义CUDA实现替代PyTorch的ReLU。
**run_code.py**验证和性能测试脚本。验证自定义CUDA实现与原始PyTorch实现的数值精度一致性比较两种实现的性能计算加速比。
**prompt.txt**:提示词文本。提供类似 “融合算子 CUDA 设计” 的 prompt 编写思路。
💡如何将一个example变为自己的一份提交具体的算子优化思路可参考[GPUCodeForces赛题解读](./GPUCodeForces赛题解读.md)
* 为了测试代码最终的跑通结果需要使用规定的GPU。在[模力方舟](https://ai.gitee.com/compute)平台上准备了大家此次需要的算力资源,使用免费的算力券购买实例,接着便可以在云端实例上进行代码修改和测试。
相关算力券的领取方式请见[算力平台使用说明](https://ai.gitee.com/docs/compute/container)、[算力券兑换发放和兑换](https://ai.gitee.com/docs/billing/coupons)。
```
Tips进行云端服务器的实例选择有库存的即可点击进入后需要确定配置。其余选项保持默认只需更改镜像处的选择基础镜像-->CV-CUDA-->PyTorch2.4.0-->Python任意-->maca 3.0.0.5
```
* 代码测试运行没有问题后便可以准备提交了记得将所有必要文件保存到提交文件夹。提交流程如下全程使用git
```
# cd到自己克隆到本地的项目路径下C:\Users\Desktop\ODTC AI Infra\GPUCodeForces
git remote -v # 检查是否链接到自己的Gitlink仓库
git checkout -b dev # 新建一个分支dev即分支名字可以任取
git add . # 将文件的变更操作暂存
git commit -m "输入你本次提交的目的" # 目的简洁明了最好
git push origin dev # 提交你的修改到分支上
```
对git与远程仓库操作的疑问可以点击[how-to-contribute.md](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/how-to-contribute.md)查看详情。
* 顺利提交后的代码还只在你自己fork的仓库下还需要和主仓库合并才能真正让管理员看到你的代码。
fork仓库你自己的仓库与主仓库之间关系如下
```
ODTC AI Infra/GPUCodeForces(main)
├── ...
├── folders
your_name/GPUCodeForces(main) # 自己仓库下的main分支内容与主仓库一致
├── ...
├── folders
your_name/GPUCodeForces(dev) # dev分支才是你修改后的代码存放处
├── ...
│ ├── your codes
├── folders
```
进入自己的仓库,点击上方选项栏:
```
合并请求(PR)-->+新建合并请求-->源分支选择dev(名称任取)-->填写下方选框-->标题为自己的issue标题-->描述填请简明扼要描述内关联自己的issue id(如“fixes #001”)
```
提交后便能看到自己的PR记录了在对应记录的评论区会有测试结果的告知请留意查看~
🌳一份完整的提交流程如上,期待各位自由发挥,赛出风采与水平!
⏺如仍有疑问,请点击[提交流程演示视频](https://www.bilibili.com/video/BV1CcnTztEfc/)
### ⭐审核流程
* 你提交的PR都会得到回复大概存在的几种情况如下
```
提交PR-->测试通过✔️-->已合并-->有效提交 ヽ(✿゚▽゚)
提交PR-->测试通过✔️-->已关闭-->代码重复/相似-->无效提交 (;′⌒`)
提交PR-->测试失败✖️-->已关闭-->代码不合格-->无效提交 (;′⌒`)
```
也就是说,除了能够自己在算力平台的实例上运行得到算子测算的初步结果外,还可以在这里看到最终的测算结果。这里显示测试通过才能进入后续审核流程,并最终上传至比赛的算子仓库。
### ✅ 参赛资格
* 你提交的PR样本中**至少有 1 个样本被评审通过并正式整合到“GPU CodeForces” 数据集**,即可算作有效参赛。
### ⚠️注意事项
1. 请勿抄袭他人代码或成果
2. 请勿恶意提交(如相同算子多次提交、相近优化重复提交)
\---相近优化:即指同一份参赛用例在优化后加速比没有提升或更低的用例提交
3. 请遵守提交的格式要求、内容规范
---
## 🏅 竞赛排名机制
1. **优先按接受数量从高到低排序作为排名取前12名。**
2. 若接受数量相同:
* 比较总基础评分高者优先
* 若仍相同,比加分项得分高者优先
> **接受数量** = 提交并被评审通过的样本总数
> **接受数量相同需要区分排名时如下的评分规则才会生效**
---
## 📈 评分规则
### 📊 基础得分
| 内容 | 分值 |
| --- | --- |
| 提供标准 GT 输出生成函数Numpy-CPU / 原始框架实现) | +2 分 |
| CUDA 执行时间评估 | +5 分 |
| CUDA 吞吐量评估 | +4 分 |
| CUDA 内存带宽评估 | +3 分 |
### ✨ 加分项
| 内容 | 分值 |
| --- | --- |
| 提供 Prompt  LLM 生成对应的 CUDA 代码并同样进行性能评价 | 额外加分 |
---
## 📚 术语解释
* **评测数据集**用来测试 GPU 性能的一组标准化样本包括代码、输入数据和预期结果。
* **GTGround Truth**:标准参考答案或结果,用来验证程序运行是否正确。
* **吞吐量Throughput**每秒钟能处理的数据量越高表示 GPU 处理能力越强。
* **内存带宽Memory Bandwidth**单位时间内 GPU 内存与计算核心之间的数据传输速度。
* **Prompt**引导大语言模型LLM生成代码或内容的提示词。
* **LLM**Large Language Model大语言模型 ChatGPT、LLaMA 等。
---
## 📬 联系与帮助
如需更多信息或格式说明,请查看官方文档或在本仓库提交[想法](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/issues/new)进行讨论,或直接在交流群内与主办团队进行沟通。
祝各位挑战成功贡献出高质量的 GPU 评测数据集🚀
## FAQ
[第一季FAQ参考](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/FAQ.md)