5.1 KiB
5.1 KiB
GPU 算子优化挑战赛(GPUKernelContest)
欢迎参加 GPU 算子优化挑战赛 🎯!
本比赛旨在通过优化深度学习框架中的核心计算模块,提升大模型的运行效率。在本仓库中,你可以提交你的优化代码、测试样例和使用说明。
🧠 比赛背景简介
随着大语言模型(LLM, 如 ChatGPT 等)的广泛使用,其在运行推理时对计算资源的要求越来越高,出现了所谓的 “三高” 问题:
- 高延迟:响应慢
- 高显存占用:消耗大量显存
- 高生态依赖:对系统和软件依赖复杂
本次挑战赛正是为了解决这些问题,鼓励选手优化 GPU 上的底层算子(即最基础的数学运算模块),提高模型推理效率。
🔧 挑战方向
本次挑战主要有两个技术方向:
1. Test Time Scaling 算子优化
- 对深度学习框架中的基础算子(如 PyTorch 或 PaddlePaddle 中的矩阵乘法)进行性能优化。
2. Gemm 内核极致优化
- GEMM(General Matrix Multiplication) 是大模型中的核心计算操作。
- 目标是对其内核(Kernel)进行精细调优,提高执行效率。
👉 项目目标:在不更换硬件的前提下,让推理速度提升 30%!
🚀 快速上手
本竞赛旨在评估参赛者在GPU并行计算领域的算法优化能力。为了快速让参赛者进入比赛状态,可选择实现三个核心算法的高性能版本:
- ReduceSum: 高精度归约求和
- SortPair: 键值对稳定排序
- TopkPair: 键值对TopK选择
📥
编译和测试
1. 全量编译和运行
# 编译并运行所有算法测试(默认行为)
./run.sh
# 仅编译所有算法,不运行测试
./run.sh --build-only
# 编译并运行单个算法测试
./run.sh --run_reduce # ReduceSum算法
./run.sh --run_sort # SortPair算法
./run.sh --run_topk # TopkPair算法
2. 单独编译和运行
# 编译并运行ReduceSum算法(默认行为)
./run_reduce_sum.sh
# 仅编译ReduceSum算法,不运行测试
./run_reduce_sum.sh --build-only
# 编译并运行SortPair正确性测试
./run_sort_pair.sh --run correctness
# 编译并运行TopkPair性能测试
./run_topk_pair.sh --run performance
3. 手动运行测试
./build/test_reducesum [correctness|performance|all]
./build/test_sortpair [correctness|performance|all]
./build/test_topkpair [correctness|performance|all]
✅ 参赛要求:
- 提交内容必须可以在沐曦自研 GPU 曦云 C500 上运行。
- 所提交的优化代码将由主办方审核,需成功合并(Merge)到官方 Gitee 仓库,才算有效提交。
📦 提交内容包含:
- 算子优化后的代码
- 可运行的测试用例
- 使用说明文档
📈 评分机制
每次提交会按以下规则评分:
🎯 基础得分(Level):
| 等级 | 内容描述 | 分值 |
|---|---|---|
| Level 1 | 优化一个 PyTorch / Paddle 算子 | 5 分 |
| Level 2 | 融合优化 2~9 个算子 | 10 分 |
| Level 3 | 含 MMA(多维矩阵乘)融合算子 | 50 分 |
| Level 4 | 用于大模型推理的复杂融合算子 | 50 分 |
| 合并至metax-maca开源项目仓库的每个PR | - | 50 分 |
✨ 加分项:
| 内容 | 分值 |
|---|---|
| 代码规范、清晰 | +10 分 |
| 性能优化明显 | +10 分 |
| 记录优化过程、说明模型来源 | +20 分 |
| 使用 LLM Prompt 自动生成代码及样例 | +20 分 |
注意: 加分项只针对于在基础得分相同的情况下通过加分项来区分不同的排名和后续优秀选手的参考。
🏅 排名规则
- 比赛周期:2 个月
- 排名按累计得分排序,取前 12 名!
若得分相同:
- 提交次数多者优先
- 提交时间早者优先
📚 官方参考项目仓库
你可以参考以下项目仓库,了解算子开发与提交格式:
🖥️ 可用资源
- 曦云 C500 GPU 1/2卡,主办方通过算力券的形式发放给报名的同学。
💡 术语解释
- 算子(Operator):指深度学习框架中的基本计算模块,例如矩阵乘法、卷积等。
- GEMM:全称 General Matrix Multiplication,一种用于矩阵计算的核心算法,是大模型中的基础运算。
- MMA:Matrix Multiply-Accumulate,多维矩阵乘加运算,适用于复杂计算加速。
- LLM:Large Language Model,大语言模型,如 GPT、BERT 等。
- 推理(Inference):模型训练完成后,用来“预测”或“使用”的过程。
- Prompt:用于引导大模型生成特定内容的输入提示词。
- PR(Pull Request):在 Git 仓库中提交你的修改请求,供维护者审查后合并。
📬 联系与帮助
如需帮助或有疑问,请联系主办方或在项目中发起 Issue。
祝你挑战顺利,优化出更快的大模型推理体验!🚀