Compare commits

...

44 Commits
dev ... Cup

Author SHA1 Message Date
p295ilteb 4ca2999ae5 Update README.md 2026-04-15 15:13:19 +08:00
p295ilteb e8cd08edff Update README.md 2026-04-15 15:05:26 +08:00
p295ilteb 7254b484b3 Update README.md 2026-04-15 10:53:45 +08:00
p295ilteb cf4eb82f09 Update README.md 2026-04-10 17:17:10 +08:00
p295ilteb 1d1be0a777 Update README.md 2026-04-09 10:21:12 +08:00
p295ilteb 45078f9336 Update README.md 2026-04-08 11:14:14 +08:00
p295ilteb e8d86f3888 Update README.md 2026-04-07 15:07:51 +08:00
p295ilteb 0adf9a28e7 Update README.md 2026-04-07 14:59:52 +08:00
p295ilteb 656a58af9d Update README.md 2026-04-07 14:54:31 +08:00
p295ilteb 5628a0c3c5 Update README.md 2026-04-07 14:25:10 +08:00
p295ilteb f1aaddac3b Update README.md 2026-04-07 14:17:25 +08:00
p295ilteb 6d5e81bf86 Update README.md 2026-04-07 14:14:43 +08:00
p295ilteb 18e9b37ecf Update README.md 2026-04-07 14:13:44 +08:00
p295ilteb ae72d4641a Update README.md 2026-04-07 14:08:11 +08:00
p295ilteb 15a0aeb226 Update README.md 2026-04-07 14:07:49 +08:00
p295ilteb f42afd4f13 Update README.md 2026-04-07 14:07:03 +08:00
topshare 7546188671 Update task_level.md 2025-11-12 22:51:04 +08:00
topshare abddd21078 Update maca.md 2025-11-10 11:25:33 +08:00
Wing651 786a2ffebf Update task_level.md 2025-11-10 10:52:12 +08:00
Wing651 541e8582dc Merge pull request 'add quickstart.md and maca.md for mc_vLLM' (#6) from Wing651/GPUApps:main into main 2025-11-07 17:00:35 +08:00
wing016 fd7ad3e7c8 add quickstart.md for mc_vLLM 2025-11-07 17:01:22 +08:00
wing016 535de0c675 add maca.md for mc_vLLM 2025-11-07 17:00:47 +08:00
topshare 08c84c2f20 vLLM社区验证任务
增加比赛vLLM验证任务。
2025-11-06 17:44:43 +08:00
wing016 d905cb32ac update task_level.md for mc_vLLM 2025-11-06 17:20:13 +08:00
wing016 d5c9a5d0ec update task_level.md for mc_vLLM 2025-11-06 14:22:22 +08:00
wing016 1fcbf4408f update task_level.md for mc_vLLM 2025-11-06 14:20:06 +08:00
wing016 1fceddbc64 update task_level.md for mc_vLLM 2025-11-05 14:41:16 +08:00
wing016 addc49ccb6 add task_level.md for mc_vLLM 2025-11-05 14:38:45 +08:00
Wing651 8356c25e40 Merge pull request '新增赛题与 Issue 对应清单文档(task_issue_list.md)' (#4) from Wing651/GPUApps:main into main 2025-10-28 17:07:03 +08:00
wing016 1c84bcab12 add task_issue_list.md 2025-10-28 11:27:30 +08:00
wing016 dc7f4cfea8 add task_issue_list.md 2025-10-28 10:39:56 +08:00
wing016 5d8b7ac1f3 add task_issue_list.md 2025-10-28 10:35:31 +08:00
Wing651 82b09e0740 Update TASK_INTERPRETATION.md 2025-10-21 17:37:49 +08:00
Wing651 4ac7cd435a Merge pull request '子赛题二、GPU 开源生态挑战赛-赛题解读' (#3) from Wing651/GPUApps:main into main 2025-10-21 17:35:29 +08:00
wing016 e7eab07356 move image.png to assets/ 2025-10-21 17:16:04 +08:00
Wing651 e08436c165 Update TASK_INTERPRETATION.md 2025-10-21 10:09:39 +08:00
Wing651 5bd7df433e ADD file via upload 2025-10-20 17:29:37 +08:00
Wing651 ab954e5f83 ADD file via upload 2025-10-20 17:29:25 +08:00
topshare 8146f9568f Add LICENSE 2025-10-08 19:34:47 +08:00
topshare 982a8a2e88 Merge pull request 'Delete License for gitlink' (#2) from topshare/GPUApps:dev into main
fix #5
2025-10-08 19:33:38 +08:00
Kevin Zhang 961728ebf7 remove License for gitlink License config 2025-10-08 09:07:58 +08:00
topshare 8a5f81a198 Merge pull request 'docs: add infinicore task' (#1) from wawahejun/GPUApps:main into main 2025-09-28 22:30:55 +08:00
wawahejun 06ca969422 docs: replace words 2025-09-28 22:16:56 +08:00
wawahejun 9cd553cb9a docs: add infinicore task 2025-09-19 21:09:41 +08:00
11 changed files with 1507 additions and 235 deletions

318
LICENSE
View File

@ -1,194 +1,124 @@
木兰宽松许可证第2版
木兰宽松许可证第2版
2020年1月 http://license.coscl.org.cn/MulanPSL2
您对“软件”的复制、使用、修改及分发受木兰宽松许可证第2版“本许可证”的如下条款的约束
0. 定义
“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。
“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。
“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。
“法人实体” 是指提交贡献的机构及其“关联实体”。
“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是
指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。
1. 授予版权许可
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可
以复制、使用、修改、分发其“贡献”,不论修改与否。
2. 授予专利许可
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定
撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡
献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软
件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“
关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或
其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权
行动之日终止。
3. 无商标许可
“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可但您为满足第4条规定
的声明义务而必须使用除外。
4. 分发限制
您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“
本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。
5. 免责声明与责任限制
“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对
任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于
何种法律理论,即使其曾被建议有此种损失的可能性。
6. 语言
“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文
版为准。
条款结束
如何将木兰宽松许可证第2版应用到您的软件
如果您希望将木兰宽松许可证第2版应用到您的新软件为了方便接收者查阅建议您完成如下三步
1 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;
2 请您在软件包的一级目录下创建以“LICENSE”为名的文件将整个许可证文本放入该文件中
3 请将如下声明文本放入每个源文件的头部注释中。
Copyright (c) [2025] [CCF ODTC AI Infra]
[Software Name] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan
PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
Mulan Permissive Software LicenseVersion 2
Mulan Permissive Software LicenseVersion 2 (Mulan PSL v2)
January 2020 http://license.coscl.org.cn/MulanPSL2
Your reproduction, use, modification and distribution of the Software shall
be subject to Mulan PSL v2 (this License) with the following terms and
conditions:
0. Definition
Software means the program and related documents which are licensed under
this License and comprise all Contribution(s).
Contribution means the copyrightable work licensed by a particular
Contributor under this License.
Contributor means the Individual or Legal Entity who licenses its
copyrightable work under this License.
Legal Entity means the entity making a Contribution and all its
Affiliates.
Affiliates means entities that control, are controlled by, or are under
common control with the acting entity under this License, control means
direct or indirect ownership of at least fifty percent (50%) of the voting
power, capital or other securities of controlled or commonly controlled
entity.
1. Grant of Copyright License
Subject to the terms and conditions of this License, each Contributor hereby
grants to you a perpetual, worldwide, royalty-free, non-exclusive,
irrevocable copyright license to reproduce, use, modify, or distribute its
Contribution, with modification or not.
2. Grant of Patent License
Subject to the terms and conditions of this License, each Contributor hereby
grants to you a perpetual, worldwide, royalty-free, non-exclusive,
irrevocable (except for revocation under this Section) patent license to
make, have made, use, offer for sale, sell, import or otherwise transfer its
Contribution, where such patent license is only limited to the patent claims
owned or controlled by such Contributor now or in future which will be
necessarily infringed by its Contribution alone, or by combination of the
Contribution with the Software to which the Contribution was contributed.
The patent license shall not apply to any modification of the Contribution,
and any other combination which includes the Contribution. If you or your
Affiliates directly or indirectly institute patent litigation (including a
cross claim or counterclaim in a litigation) or other patent enforcement
activities against any individual or entity by alleging that the Software or
any Contribution in it infringes patents, then any patent license granted to
you under this License for the Software shall terminate as of the date such
litigation or activity is filed or taken.
3. No Trademark License
No trademark license is granted to use the trade names, trademarks, service
marks, or product names of Contributor, except as required to fulfill notice
requirements in section 4.
4. Distribution Restriction
You may distribute the Software in any medium with or without modification,
whether in source or executable forms, provided that you provide recipients
with a copy of this License and retain copyright, patent, trademark and
disclaimer statements in the Software.
5. Disclaimer of Warranty and Limitation of Liability
THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY
KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR
COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT
LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING
FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO
MATTER HOW ITS CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES.
6. Language
THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION
AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF
DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION
SHALL PREVAIL.
END OF THE TERMS AND CONDITIONS
How to Apply the Mulan Permissive Software LicenseVersion 2
(Mulan PSL v2) to Your Software
To apply the Mulan PSL v2 to your work, for easy identification by
recipients, you are suggested to complete following three steps:
i. Fill in the blanks in following statement, including insert your software
name, the year of the first publication of your software, and your name
identified as the copyright owner;
ii. Create a file named "LICENSE" which contains the whole context of this
License in the first directory of your software package;
iii. Attach the statement to the appropriate annotated syntax at the
beginning of each source file.
Copyright (c) [2025] [CCF ODTC AI Infra]
[Software Name] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan
PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
木兰宽松许可证, 第2版
2020年1月 http://license.coscl.org.cn/MulanPSL2
您对“软件”的复制、使用、修改及分发受木兰宽松许可证第2版“本许可证”的如下条款的约束
0. 定义
“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。
“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。
“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。
“法人实体” 是指提交贡献的机构及其“关联实体”。
“关联实体” 是指对“本许可证”下的行为方而言控制、受控制或与其共同受控制的机构此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。
1. 授予版权许可
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。
2. 授予专利许可
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。
3. 无商标许可
“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可但您为满足第4条规定的声明义务而必须使用除外。
4. 分发限制
您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。
5. 免责声明与责任限制
“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。
6. 语言
“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。
条款结束
如何将木兰宽松许可证第2版应用到您的软件
如果您希望将木兰宽松许可证第2版应用到您的新软件为了方便接收者查阅建议您完成如下三步
1 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;
2 请您在软件包的一级目录下创建以“LICENSE”为名的文件将整个许可证文本放入该文件中
3 请将如下声明文本放入每个源文件的头部注释中。
Copyright (c) [2025] [CCF ODTC AI Infra]
[Software Name] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
Mulan Permissive Software LicenseVersion 2
Mulan Permissive Software LicenseVersion 2 (Mulan PSL v2)
January 2020 http://license.coscl.org.cn/MulanPSL2
Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions:
0. Definition
Software means the program and related documents which are licensed under this License and comprise all Contribution(s).
Contribution means the copyrightable work licensed by a particular Contributor under this License.
Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License.
Legal Entity means the entity making a Contribution and all its Affiliates.
Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, control means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity.
1. Grant of Copyright License
Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not.
2. Grant of Patent License
Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken.
3. No Trademark License
No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4.
4. Distribution Restriction
You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software.
5. Disclaimer of Warranty and Limitation of Liability
THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW ITS CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
6. Language
THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL.
END OF THE TERMS AND CONDITIONS
How to Apply the Mulan Permissive Software LicenseVersion 2 (Mulan PSL v2) to Your Software
To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps:
Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner;
Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package;
Attach the statement to the appropriate annotated syntax at the beginning of each source file.
Copyright (c) [Year] [name of copyright holder]
[Software Name] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.

432
README.md
View File

@ -1,55 +1,405 @@
# 子赛题二、GPU 开源生态挑战
# 国产开源 GPU AI 创新生态
## 📌 挑战方向
## 赛题背景
### 模型迁移
- 单 Transformers 模型迁移到 vLLM / SGLang可运行并优化
- 参考LMDeploy开源适配模型实现实现未支持的多型在国产算力上运行
- 其它有价值的迁移,以最终提交审核为准
本次大赛旨在推动国产开源 GPU 算力生态的发展,联合中国光华科技基金会作为公益支持单位,共同促进开源 AI 应用在实际场景中的落地。参赛团队将基于 OpenClaw/Claude Code/Open Code/Codex 等多个 AI 工具进行开发,使用 Gitee.AI 平台提供的沐曦资源包 API 或沐曦算力卡完成模型推理,并调用部署在沐曦 GPU 算力环境中的大模型服务实现智能功能。
### 论文复现
- AI4S 领域前沿论文复现与性能加速
通过本场比赛,希望达到以下目标:
- 推动国产GPU在AI应用场景中的实际使用
- 鼓励开发者探索更多Skill与MCP的应用场景
- 促进开源生态与国产算力的深度融合
- 在GitLink平台实现可复现、可共享的开源项目成果
### 生态破局
- 将 CUDA AI 开源软件迁移至国产开源MACA软件栈
## 算力平台使用
- 算力平台使用必须使用Gitee.AI平台提供的沐曦资源包API或沐曦算力卡
- 真实调用验证作品需基于国产算力完成真实调用与运行验证提供完整调用日志与性能数据禁止直接调用外部云端模型服务如OpenAI API等
### 生态繁荣
- Jax 模型迁移至 PyTorch生态
- 参与MinerU开源社区上游贡献支持MACA软件栈例如https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/issues/1
- 参与InfiniCore开源项目的上游贡献支持MACA软件栈例如https://github.com/InfiniTensor/InfiniCore, 参考的算子迁移案例见主仓库的其他算子迁移到MACA的方式以及https://github.com/wawahejun/InfiniCore-Intern 里面的迁移案例, 项目文档与概况详见:[DEV.md](./docs/InfiniCore-Doc/DEV.md)
- 参与github.com/MetaX-MACA组织的开源项目上游贡献例如https://github.com/MetaX-MACA/vLLM-metax/issues/7
## 算力领取
- 点击链接https://developer.metax-tech.com/activities/5 进入沐曦开发者社区-算力领取页面;
- 注册登录沐曦开发者社区,进入活动页面,填写并提交你的报名参赛信息;
- 审核通过后,即可收到一封邮件,邮件内包含沐曦算力券兑换码;
### 其它可参考项目列表
- [FlashMLA](https://github.com/MetaX-MACA/FlashMLA)
注:请先完成大赛报名再领取算力券,领取时需要核验报名信息;
## 其它方向
▶ 项目价值:推动国产 AI 基础设施自主化的有价值的领域。
## 赛程安排
## 📤 提交要求及评分标准
- 3 月 20 日 - 7 月 10 日:完成参赛报名、领取算力、作品开发、作品提交;
- 7 月 11 日 - 7 月 15 日:初赛线上评审;
- 7 月 17 日 - 7 月 19 日:决赛入围名单公布;
- 7 月 18 日 - 8 月 6 日:决赛作品优化提交;
- 8 月 11 日 - 8 月 16 日:获奖名单公示,活动现场颁奖
### 参赛资格
- 提交的代码可在MACA软件栈+曦云C500上运行的内容。
##算力领取
### 提交内容赛题Iusse附上对应PR的link注意提交邮箱必须一致
- 代码
- 部署脚本
- 环境配置
- 在线复现环境
- 文档
###申领对象:
### 文档要求
- 验收测试用例
- 使用手册
本次算力券的领取对象为已完成本次赛事官方报名、报名信息真实有效的人员,具体覆盖范围包括:在校学生(含初高中、专科、本科、硕士、博士)、科研人员、企业及个人开发者、开源技术社区贡献者。申领人必须为本人实名申领,申领信息需与赛事官方报名信息完全一致。
### 评分标准
- 能成功复现运行60 分
- 输出正确结果(参考 CUDA 平台61~100 分
###发放额度:
### 加分项
- 提供性能优化,且提供可复现的对比测试报告:+0~50 分
每位参赛者可以领取 1 张 300 元面额的沐曦 GPU 算力券。
## 🏆 排名机制
- 评委评分从高到低排序
- 若分数相同:
- 性能提升高者优先
- 内容完整性高者优先
参赛者在参赛过程中,因赛事相关的学习测试、开发调试、模型训练、作品优化等环节需要额外算力资源的,可将本人实名参赛信息、项目进展说明、详细算力需求方案发送至赛事组委会指定工作人员邮箱,经组委会与沐曦技术团队联合审核通过后,可为其提供专项增加额度的算力券专属支持,切实保障参赛项目的算力使用需求。
###算力券用途限制:
1. 算力券仅限申领人本人用于本次第八届 CCF 开源创新大赛・沐曦「国产开源 GPU AI 创新生态赛」相关合规环节,包括但不限于赛事相关的技术学习、环境测试、项目开发、作品调试、成果部署等赛事配套用途。
2. 严禁任何形式的转售、转让、套现等违规行为,严禁用于与本次赛事无关的商业经营、非法活动等其他非约定用途。一经发现违规使用行为,有权立即冻结、作废该算力券,并保留追究其相关法律责任的权利。
###申领与发放流程:
符合申领条件的参赛者,需通过沐曦开发者社区官方指定的赛事算力券专项申领入口,提交线上申领申请,同步提交本人赛事报名凭证,确保申领信息与赛事官方报名信息完全匹配。审核通过后,通过沐曦开发者社区平台,向申请人本人发放对应 300 元面额的算力券。
###保密风控与数据安全
本次算力券发放全流程仅涉及赛事报名资质核验,算力券申领发放相关必要信息,所有个人身份信息,参赛信息均严格保密。
##赛题任务
## 任务一:开源软件工程实践 —— 为知名开源项目贡献代码
### 任务目标
鼓励参赛团队深入参与开源生态建设,通过为 Tilelang、vLLM 等知名开源项目提交 PR 并成功 merge展现工程实践能力与开源协作能力推动国产算力与主流开源框架的深度适配。
### 任务要求
#### 1. 项目选择与调研
参赛团队可以从以下推荐项目中选择目标项目进行贡献,但不强制要求必须选择这些开源项目:
- Tilelang面向高性能 AI 算子开发的领域特定语言
- vLLM-metax沐曦适配的高性能推理框架https://www.gitlink.org.cn/metax-maca/vLLM-metax
- vLLm主流大模型推理框架
- SGLang主流大模型推理框架https://www.gitlink.org.cn/metax-maca/sglang
- mcTVM沐曦TVM后端适配https://www.gitlink.org.cn/metax-maca/mcTVM
- XLA训练框架
- 其他与沐曦GPU算力相关的开源项目
团队项目需要进行深入调研,了解:
- 项目目标、架构与代码组织
- 贡献指南与提交规范
- 现有 issue 与待解决的问题
- 沐曦 GPU 适配相关的开发需求
#### 2. 代码贡献与 PR 提交
- 代码修改:针对目标项目的 bug 修复、功能开发、文档完善等
- 沐曦适配:重点关注与沐曦 GPU 算力相关的适配工作
- PR 提交:按照项目规范提交 Pull Request
- Merge 目标:确保 PR 能够被项目维护者接受并合并
- 在 https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/issues 提交参与项目的PR记录
#### 3. 真实运行验证
- 在沐曦 GPU 算力环境中验证修改的正确性
- 提供完整的测试日志与性能对比数据
- 确保修改不影响现有功能
### 技术要求
####1. 开发环境
- 代码开发与调试基于沐曦 GPU 算力环境
- 使用 Gitee.AI 平台提供的算力资源进行测试
####2. 代码规范
- 遵循目标项目的代码风格与提交规范
- 提供完整的单元测试与集成测试
####3. 文档要求
- 提交代码需包含完整的注释与文档
- 更新相关 README 与技术说明
### 评分细则(满分 100 分)
| 评分项 | 分值 | 说明 |
| ------------- | ---- | -------------------------- |
| PR 成功 Merge | 60 | PR 被接受并成功合并入主干 |
| 技术难度 | 20 | 解决的问题复杂度与技术深度 |
| 沐曦适配度 | 20 | 与沐曦算力平台的适配程度 |
### 作品提交要求
####1. GitLink 仓库
- 建立参赛团队的项目仓库
- 整理贡献过程的完整记录文档
- 在本项目中以issue提交的方式放置作品项目仓库的入口
####2. 提交材料
- PR 链接与 merge 记录
####3. 开发记录
- Issue 记录
## 任务二:基于沐曦算力的 AI Skill 与 MCP 应用开发
### 任务目标
参赛团队基于 OpenClaw、Claude Code 或 Codex 平台开发 AI Skill 应用或 MCP 服务,并调用部署在沐曦 GPU 算力环境(模力方舟 Gitee.AI 沐曦资源包)中的大模型服务实现智能功能。推动 AI Skill 生态在国产算力平台上的发展与落地。
### 任务要求
#### 1. Skill/MCP 设计与开发
参赛团队需基于 OpenClaw 平台开发一个或多个 AI Skill 功能模块,或实现 MCP 服务:
AI Skill/MCP 开发方向(可以任选其一或多个,不做严格限制,也可以围绕真实需求进行设计):
- 知识问答助手:基于 RAG 的领域知识问答
- 论文总结与文献分析工具:学术文献智能解析
- 编程辅助工具:代码生成、审查、优化
- 翻译工具:多语言智能翻译
- 教学辅助助手:个性化学习辅导
- 数据分析助手:数据处理与可视化
- 医疗科普助手:医学知识问答
- 智造助手:工业级交互应用,包括问答,客服等场景
- 其它任何场景
#### 2. 模型服务集成
- 通过 Gitee.AI 平台调用沐曦 GPU 算力
- 完成至少 1 个大模型的接入与调用
- 实现完整的 API 接口封装
#### 3. 真实调用验证
- 在沐曦算力环境完成真实调用
- 提供完整的调用日志
- 记录性能数据(延迟、吞吐量等)
#### 4. 开源与部署
- 将作品开源至 GitLink 平台
- 完善 README 文档
- 提供可运行的部署说明
### 评分细则(满分 100 分)
| 评分项 | 分值 | 说明 |
| ------------------------ | ---- | ------------------------------------------ |
| Skill/MCP 设计和技术实现 | 30 | 功能设计合理性、场景价值、上手好用 |
| 真实调用验证 | 30 | 可运行可演示、用户体验,用户下载量、点赞量 |
| 开源质量 | 40 | 文档完整性、代码规范 |
### 作品提交要求
###1. GitLink 仓库
- 完整的 Skill/MCP 实现代码或者仓库链接
- 模型接口调用代码
- 相关配置文件
###2. README 文档
- 项目简介
- Skill 功能说明
- 使用的模型与算力环境
- 运行与部署方法
- 示例输入输出
###3. 演示材料
- Demo 演示视频(提供视频链接)
- 应用效果展示
###4. 开发记录
- Issue 记录
- Commit 历史
- 功能开发记录
## 任务三:基于国产算力平台的 AIGC 与智能体开发与应用
### 任务目标
参赛团队基于沐曦 GPU 算力环境,开发具有创新性的 AIGC 与智能体应用,推动多模态智能体在不同领域的应用落地。作品可以包含创新创意的 PlanPPT + 文档提交),进一步需实现 AIGC 与智能体基础构建与 API 调用 Demo。鼓励围绕真实应用场景进行设计完成完整的应用实现与开源提交。
### 任务要求
#### 阶段一:创新创意规划(基础阶段)
任务目标:完成 AIGC 与智能体的创新创意规划
具体要求:
- 结合实际应用场景,完成智能体设计规划
- 提交完整的创意方案文档PPT 格式)
- 明确智能体的核心功能与目标用户
- 阐述技术实现路径与预期效果
提交材料:
- 创意规划 PPT包含应用场景、技术架构、预期效果
- 详细设计文档
评分标准:
| 评分项 | 分值 |
| ---------- | ---- |
| 创意新颖性 | 15 |
| 场景合理性 | 15 |
| 技术可行性 | 10 |
| 文档完整性 | 10 |
| 满分 | 50 |
#### 阶段二:智能体基础构建与 Demo 实现(进阶阶段)
任务目标:在阶段一基础上,实现可运行的 AIGC 与智能体 Demo
具体要求:
- 智能体框架:基于开源框架(如 LangChain、LangGraph、LlamaIndex、RAGFlow、自研框架等构建智能体
- 模型接入:使用 Gitee.AI 平台提供的沐曦资源包 API 或沐曦算力卡,完成至少 1 个大模型的接入与调用
核心能力:
- 任务理解(内容生成、问答、推理)
- 多轮对话与上下文管理
- 工具调用能力
任务执行状态跟踪:
- 真实调用验证:必须在沐曦算力上完成真实调用,提供完整调用日志
- 可运行 Demo提供 CLI/API/Web/Notebook 等形式的可运行演示
评分标准:
| 评分项 | 分值 |
| -------------- | ---- |
| 架构设计合理性 | 10 |
| 智能体核心能力 | 10 |
| 生成质量与效果 | 10 |
| 沐曦算力集成 | 20 |
| Demo 可运行性 | 10 |
| 文档完整性 | 10 |
| 满分 | 70 |
#### 阶段三:完整产品化与运营(高阶阶段)
任务目标:在阶段二基础上,完成产品化部署与运营验证
具体要求:
- 工程优化:
1. 多Agent协作如有
2. 系统稳定性优化
3. 性能优化
4. 工具链扩展
- 云端部署:
1. 部署至云平台
2. 提供可访问的公网链接
3. 确保系统稳定运行
- 运营数据收集:
1. 真实用户使用数据
2. API 调用日志
3. 用户反馈
- 开源贡献:
1. 开源至 GitLink 平台
2. 完善 README 文档
3. 提供可复现部署说明
评分标准:
| 评分项 | 分值 |
| ------------ | ---- |
| 工程优化深度 | 20 |
| 云部署完成度 | 15 |
| 运营数据 | 15 |
| 应用价值 | 10 |
| 开源质量 | 10 |
| 文档完整性 | 10 |
| 满分 | 80 |
### 评分说明
赛道三采用阶段累计得分方式:
- 完成阶段一:最高 50 分
- 完成阶段一 + 阶段二:最高 120 分
- 完成全部三个阶段:最高 200 分
参赛团队可根据自身能力选择完成的最长阶段,评分时按所完成阶段对应的分值区间进行评定。
### 作品提交要求
1. GitLink 仓库
- 完整智能体代码
- 模型接口调用代码
- 配置文件与依赖清单
2. 文档材料
- README 完整文档
- 创意规划 PPT阶段一
- 技术说明文档
- 部署指南
3. 演示材料
- Demo 演示视频(提供视频链接)
- 运行截图
- 性能测试报告
- 真实调用日志
4. 开发记录
- Issue 记录
- Commit 历史
- 功能开发记录
## 作品提交统一要求
### GitLink 平台要求
1. 仓库建立
- 所有参赛项目必须提交在 GitLink 平台
- 建立公开项目仓库
2. 仓库内容要求
- 完整项目代码
- README 文档
- 演示材料(包括演示视频链接)
- 技术说明
- 开发过程记录
### README 文档要求
README 中应包含:
- 项目简介
- 功能说明
- 使用的模型与算力环境
- 运行与部署方法
- 示例输入输出
- 参考来源说明
### 开发过程记录
建议通过 Issue 记录以下内容:
- 功能设计或开发计划
- 模型接口调用问题
- 系统优化或功能改进
- 技术难点与解决方案
评审将结合 GitLink 开发记录对项目完成过程进行综合评估。
### 开源代码使用与原创要求
- 允许参考开源代码进行开发
- 必须在 README 中明确说明所参考的开源项目来源
- 必须在原有基础上进行功能扩展或场景改造
- 禁止直接复制已有项目或仅进行简单修改后作为参赛作品提交
## 奖金评选
###1. 奖金总额
本次大赛奖金总额为人民币 10 万元
###2. 奖项设置
| 奖项 | 数量 | 奖金 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 一等奖 | 3 名 | 10000 元 |
| 二等奖 | 9 名 | 3600 元 |
| 三等奖 | 18 名 | 1800 元 |
| 优秀奖 | 若干 | 获奖证书、纪念礼品 |
| 注:每个任务独立评选,各产生 1 名一等奖、3 名二等奖、6 名三等奖 |
###3. 评选规则
1. 分任务排名
- 每个任务单独排名,参与团队在该任务中的得分从高到低依次排序。
- 各任务独立评选,互不影响。
2. 取最优成绩获奖
- 每个团队在所有参与任务中,取最优成绩参与评奖。例如:某团队任务 1 排名第 1、任务 2 排名第 5则该团队以任务 1 的成绩(一等奖)参与最终评奖。
- 某任务成绩获奖后,其他任务的排名不再重复授奖。
- 每个团队最多只能获得 1 个奖项(取其最优成绩对应的奖项等级)。
3. 并列处理
- 若同一任务内出现总分并列,则根据该团队参与任务的数量排序,即参与任务数量多的团队排名靠前。
- 若仍并列,则由评审委员会根据项目质量综合评定。

133
TASK_INTERPRETATION.md Normal file
View File

@ -0,0 +1,133 @@
# 子赛题二、GPU 开源生态挑战赛-赛题解读
子赛题二是三个赛题中相对**入门友好、可选范围较广**如下文实例提交Mineru在C500+MACA3.0环境下的安装和使用文档),聚焦于 国产算力生态适配与开源社区贡献。
该赛题重点考察参赛者在模型迁移、开源生态适配与性能优化 方面的综合能力,旨在推动国产 AI 基础设施的自主可控与生态繁荣。
---
## 1. 参赛提交流程
所有参赛者在提交代码或文档前,**必须先创建对应的 Issue**
用于描述赛题内容、任务目标与预期结果。
### 1.1 Issue 模板格式(推荐使用)
```
## 赛题名称
简要描述赛题主题或目标。
## 背景介绍
说明赛题来源、相关技术背景或参考文档。
## 预期结果
说明完成赛题后应达到的目标或可验证结果。
## 技术路线建议
可参考的框架、依赖环境、文档地址等。
## 参考链接
- 官方文档:
- 相关仓库:
## 推荐执行者
是否推荐其他选手完成该赛题(如选“否”,请创建后 assign 自己)
```
> 创建完成后系统会自动生成一个编号,如 `#12`
---
### 1.2 PR 与 Issue 对应规则
**由于目前GitLink没有PR 与Issue对应的功能所以需选手手动将所提交的PR的Link粘贴至对应的Issue评论区。**
**推荐做法**
每个 PR 只关联一个主要 Issue保持清晰的任务对应关系。
---
### 1.3 如何提交一个PR
详情参考点击 [how_to_contribute_gitlink.md](https://www.gitlink.org.cn/ccf-ai-infra/opengrow/tree/main/how_to_contribute_gitlink.md)
## 2. 赛题流程实例引导
以 Issue [MinerU 上游社区支持 MACA 的使用(#1](https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/issues/1)为例,引导参赛者可以仿照此流程顺利参与本次 GPU 开源生态挑战赛子赛题二。
### 2.1 提交Issue
内容如下
![alt text](assets/image.png)
```
### 你提交的赛题的内容介绍
根据MinerU上游社区文档和MACA官方的文档在上游社区MinerU 2.0最新版本提供可支持MACA3.0环境安装和使用文档。
- MinerU社区文档地址https://opendatalab.github.io/MinerU
- MACA软件参考文档https://developer.metax-tech.com/doc/index
### 赛题有对应的预期结果
基于MACA安装和使用官方的MinerU仓库可以有详细的指导手册。
### 你有其他相关背景的信息吗?
初步估计maca版torch的基础环境安装MinerU初步的判断是可以工作如有问题可以直接评论详细的错误修复。
### 推荐其它选手完成【如选否请创建后assign赛题给自己】
- [ ] 是否希望推荐给别人完成该赛题。
```
### 2.2 提交PR
>根据对应选题提交包含不同内容的PR具体参照[README.md](https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/tree/main/README.md)
对应 Issue [MinerU 上游社区支持 MACA 的使用(#1](https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/issues/1)提交的[PR:Mineru在C500+MACA3.0环境下的安装和使用文档](https://github.com/opendatalab/MinerU/pull/3477/files)
>选题和所举实例类似的选手需保证PR被上游仓库接受。
### 2.3 提交后跟进与反馈
```
若提交的 PR 被上游仓库合并,系统将自动关闭对应的 Issue
若存在兼容性问题或运行错误,可在原 Issue 下追加评论说明;
评审组将根据上游仓库反馈和代码有效性确定最终得分;
推荐选手在提交后主动跟进讨论区,保持与社区开发者的互动,以加快合并进度。
```
## 3. 赛题选择范围
>赛题二除了下述列出的范围,还有其他挑战方向,具体对应[赛题](https://www.gitlink.org.cn/ccf-ai-infra/GPUApps#readme)
以下列出了本次比赛中认可的上游贡献方向与典型赛题来源。参赛选手可根据自身研究方向与技术特长,选择以下任意任务进行开发与提交。所有任务均需以实际 Issue 创建与 PR 合并记录 为依据,方可计入有效成果。
- 参与MinerU开源社区上游贡献支持MACA软件栈例如https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/issues/1
- 参与InfiniCore开源项目的上游贡献支持MACA软件栈例如项目主仓库https://github.com/InfiniTensor/InfiniCore, 参考的算子迁移案例见主仓库的其他算子迁移到metax的方式以及https://github.com/wawahejun/InfiniCore-Intern 里面的迁移案例, 项目文档与概况详见:DEV,待完成迁移到MACA的算子见:TASK
- 参与github.com/MetaX-MACA组织的开源项目上游贡献例如https://github.com/MetaX-MACA/vLLM-metax/issues/7
参赛选手可以跳转链接至上游仓库查看issue选择合适自己的方向。
>注意比赛提交的issue应按上述实例写清所选的具体题目。
## 总结
子赛题二旨在通过开源协作与技术创新,推动国产 AI 生态在算力适配、模型迁移与性能优化方向的共同发展。参赛者不仅需要具备代码实现与性能验证能力,更应重视开源协作流程的规范性,包括:
- Issue 编写完整清晰:明确任务目标、背景与预期结果,方便评审与上游开发者理解;
- PR 对应关系规范:确保每个 PR 仅关联一个主要 Issue
- 材料提交完整(按需提交):提交内容应包含代码、部署脚本、环境配置、测试用例与文档说明;
- 积极跟进反馈:在 PR 合并或讨论过程中,保持与上游社区的沟通,及时响应修改建议。
本赛题为参赛者提供了广阔的探索空间和真实的上游实践环境。无论你选择模型迁移、论文复现,还是生态适配与优化,都将为国产算力平台的繁荣贡献重要力量。
欢迎大家积极参与,共同推动 国产 AI 基础设施与开源生态 的持续发展,为构建开放、自主、可持续的 AI 技术体系贡献力量。

BIN
assets/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

View File

@ -0,0 +1,39 @@
# InfiniCore metax平台算子迁移任务清单
## 一、文档目的
明确在开源仓库 **InfiniCore 项目** 下需完成的算子迁移任务目标同步任务要求及动态更新规则在仓库提交PR且合并之后算子迁移任务才视作完成。
## 二、核心迁移任务
需在 InfiniCore 项目中完成以下算子的迁移开发,并确保迁移后的算子能正常适配 **MACA软件栈**,满足功能正确性与性能指标要求:
| 算子名称 | 参考文档 |
| ----------------------------- | -------------------------- |
| dequant | 暂无 |
| chunk\_gated\_delta\_rule | 暂无 |
| recurrent\_gated\_delta\_rule | 暂无 |
| topkrouter | [`topkrouter`](../TASK/topkrouter/README.md) |
| topksoftmax | [`topksoftmax`](../TASK/topksoftmax/README.md) |
## 三、重要任务说明
1. **算子列表动态更新**本文档所列算子并非最终固定版本算子列表会根据项目整体进展、metax平台适配需求随时调整包括新增、删减或修改算子参数要求
2. **更新同步要求**:请所有选手定期查看本 task.md 的更新记录(建议每日首次启动工作前核查),及时同步最新迁移任务清单,避免出现遗漏开发、重复开发或开发内容与最新需求不符的情况。
3. **版本追溯**:文档更新后会标注更新时间与变更内容,便于选手追溯历史版本差异,明确任务调整边界。
## 四、任务产出要求
1. 迁移后的算子源代码(需包含详细注释,说明关键适配逻辑);
2. 算子功能测试用例覆盖正常场景与异常场景验证适配metax平台后的功能正确性
3. 算子性能测试报告记录在metax平台下的pytorch测试中profile性能指标
## 五、沟通与反馈
若对算子迁移需求、Metax平台适配细节有疑问或发现文档内容存在歧义可通过 \[指定沟通渠道,如比赛群 / 比赛运营] 反馈,确保问题及时同步与解决。

View File

@ -0,0 +1,133 @@
# `Topkrouter`
Deepseek的MoE中用到的`Topkrouter`算子用于为每个token选择前topk个路由专家。
## 接口
### 计算
```c
infiniStatus_t infiniopTopkrouter(
infiniopTopkrouterDescriptor_t desc,
void *workspace,
size_t workspace_size,
void *values,
void *indices,
const void *x,
const void *correction_bias,
const float routed_scaling_factor,
const size_t topk,
void *stream
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数: </div>
- `desc`:
使用 `infiniopCreateTopkrouterDescriptor()` 初始化的算子描述符。
- `workspace`:
算子计算所需的额外工作空间。
- `workspace_size`:
`workspace` 的大小,单位:字节。
- `values`:
输出数据地址。表示每个token的前topk个路由专家的权重数据的地址数据类型为Float32指针形状为二维(ntoken, topk)。ntoken是输入token的数量。
- `indices`:
输出数据地址。表示每个token的前topk个路由专家的索引数据的地址数据类型为Int32指针形状为二维(ntoken, topk)。
- `x`:
输入数据地址。张量限制见[创建算子描述](#创建算子描述)部分中的 x_des。
- `correction_bias`:
输入数据地址,表示偏置权重。张量限制见[创建算子描述](#创建算子描述)部分中的 correction_bias_desc。
- `routed_scaling_factor`:
路由权重的缩放因子。
- `topk`:
计算前topk个权重和索引。
- `stream`:
计算流/队列。
<div style="background-color: lightblue; padding: 1px;"> 返回值:</div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`],[`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
### 创建算子描述
```c
infiniStatus_t infiniopCreateTopkrouterDescriptor(
infiniopHandle_t handle,
infiniopTopkrouterDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t x_desc,
infiniopTensorDescriptor_t correction_bias_desc);
```
<div style="background-color: lightblue; padding: 1px;"> 参数:</div>
- `handle`:
硬件控柄。详情请看:[`InfiniopHandle_t`]。
- `desc_ptr`:
存放将被初始化的算子描述符地址。
- `x_desc` : 路由专家的gate数据形状为二维(ntoken, num_experts)。ntoken是输入token的数量num_experts是路由专家的数量。
- `correction_bias_desc` : 每个专家的偏置权重参数,形状为一维,(num_experts)。
参数限制:
- `x_desc`: 数据类型为(`Float16`, `Float32`, `BFloat16`) 之一; 第二个维度的路由专家数量num_experts大小固定为256。
- `correction_bias_desc`: 数据类型为`Float32`。
<div style="background-color: lightblue; padding: 1px;"> 返回值:</div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
### 计算额外工作空间
```c
infiniStatus_t infiniopGetTopkrouterWorkspaceSize(
infiniopTopkrouterDescriptor_t desc,
size_t *size
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数:</div>
- `desc`:
使用 `infiniopCreateTopkrouterDescriptor()` 初始化的算子描述符。
- `size`:
存放空间大小的计算结果的地址。
<div style="background-color: lightblue; padding: 1px;"> 返回值:</div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
### 销毁算子描述符
```c
infiniStatus_t infiniopDestroyTopkrouterDescriptor(
infiniopTopkrouterDescriptor_t desc
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数: </div>
- `desc`:
待销毁的算子描述符。
<div style="background-color: lightblue; padding: 1px;"> 返回值: </div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
<!-- 链接 -->
[`InfiniopHandle_t`]: /infiniop/handle/README.md
[`INFINI_STATUS_SUCCESS`]: /common/status/README.md#INFINI_STATUS_SUCCESS
[`INFINI_STATUS_BAD_PARAM`]: /common/status/README.md#INFINI_STATUS_BAD_PARAM
[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]: /common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
[`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
[`INFINI_STATUS_INTERNAL_ERROR`]: /common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
[`INFINI_STATUS_BAD_TENSOR_SHAPE`]: /common/status/README.md#INFINI_STATUS_BAD_TENSOR_SHAPE
[`INFINI_STATUS_BAD_TENSOR_DTYPE`]: /common/status/README.md#INFINI_STATUS_BAD_TENSOR_DTYPE
[`INFINI_STATUS_BAD_TENSOR_STRIDES`]: /common/status/README.md#INFINI_STATUS_BAD_TENSOR_STRIDES

View File

@ -0,0 +1,132 @@
# `Topksoftmax`
Qwen的MoE中用到的`Topksoftmax`算子用于为每个token选择前topk个路由专家。
$$
Topksoftmax(x) =Norm(Topk( Softmax({x})))
$$
其中:
- $x$: 表示每个路由专家的gate数据。
## 接口
### 计算
```c
infiniStatus_t infiniopTopksoftmax(
infiniopTopksoftmaxDescriptor_t desc,
void* workspace,
size_t workspace_size,
void* values,
void* indices,
const void* x,
const size_t topk,
const int norm,
void* stream
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数: </div>
- `desc`:
使用 `infiniopCreateTopksoftmaxDescriptor()` 初始化的算子描述符。
- `workspace`:
算子计算所需的额外工作空间。
- `workspace_size`:
`workspace` 的大小,单位:字节。
- `values`:
输出数据地址。表示每个token的前topk个路由专家的权重数据地址数据类型为Float32指针形状为二维(ntoken, topk)。ntoken是输入token的数量。
- `indices`:
输出数据地址。表示每个token的前topk个路由专家的索引数据地址数据类型为Int32指针形状为二维(ntoken, topk)。
- `x`:
输入数据地址。张量限制见[创建算子描述](#创建算子描述)部分中的 x_des。
- `topk`:
表示要返回前topk个权重和索引。
- `norm`:
表示是否对输出的权重进行L1归一化。
- `stream`:
计算流/队列。
<div style="background-color: lightblue; padding: 1px;"> 返回值:</div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`],[`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
### 创建算子描述
```c
infiniStatus_t infiniopCreateTopksoftmaxDescriptor(
infiniopHandle_t handle,
infiniopTopksoftmaxDescriptor_t *desc_ptr,
infiniopTensorDescriptor_t x_desc
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数:</div>
- `handle`:
硬件控柄。详情请看:[`InfiniopHandle_t`]。
- `desc_ptr`:
存放将被初始化的算子描述符地址。
- `x_desc` : 路由专家的gate数据形状为二维(ntoken, num_experts)。ntoken是输入token的数量num_experts是路由专家的数量。
参数限制:
- `x_desc`: 数据类型为(`Float16`, `Float32`, `BFloat16`) 之一。
<div style="background-color: lightblue; padding: 1px;"> 返回值:</div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_BAD_PARAM`], [`INFINI_STATUS_BAD_TENSOR_DTYPE`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
### 计算额外工作空间
```c
infiniStatus_t infiniopGetTopksoftmaxWorkspaceSize(
infiniopTopksoftmaxDescriptor_t desc,
size_t* size
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数:</div>
- `desc`:
使用 `infiniopCreateTopksoftmaxDescriptor()` 初始化的算子描述符。
- `size`:
存放空间大小的计算结果的地址。
<div style="background-color: lightblue; padding: 1px;"> 返回值:</div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
### 销毁算子描述符
```c
infiniStatus_t infiniopDestroyTopksoftmaxDescriptor(
infiniopTopksoftmaxDescriptor_t desc
);
```
<div style="background-color: lightblue; padding: 1px;"> 参数: </div>
- `desc`:
待销毁的算子描述符。
<div style="background-color: lightblue; padding: 1px;"> 返回值: </div>
- [`INFINI_STATUS_SUCCESS`], [`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`].
<!-- 链接 -->
[`InfiniopHandle_t`]: /infiniop/handle/README.md
[`INFINI_STATUS_SUCCESS`]: /common/status/README.md#INFINI_STATUS_SUCCESS
[`INFINI_STATUS_BAD_PARAM`]: /common/status/README.md#INFINI_STATUS_BAD_PARAM
[`INFINI_STATUS_INSUFFICIENT_WORKSPACE`]: /common/status/README.md#INFINI_STATUS_INSUFFICIENT_WORKSPACE
[`INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED`]: /common/status/README.md#INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED
[`INFINI_STATUS_INTERNAL_ERROR`]: /common/status/README.md#INFINI_STATUS_INTERNAL_ERROR
[`INFINI_STATUS_BAD_TENSOR_SHAPE`]: /common/status/README.md#INFINI_STATUS_BAD_TENSOR_SHAPE
[`INFINI_STATUS_BAD_TENSOR_DTYPE`]: /common/status/README.md#INFINI_STATUS_BAD_TENSOR_DTYPE
[`INFINI_STATUS_BAD_TENSOR_STRIDES`]: /common/status/README.md#INFINI_STATUS_BAD_TENSOR_STRIDES

107
mc_vLLM/maca.md Normal file
View File

@ -0,0 +1,107 @@
# Installation
## Requirements
- OS: Linux
- Python: 3.10
- MACA3.2.x.x
- PyTorch2.6
> Note: We recommend using the official container images to build and run the development environment. You can get from [maca-pytorch:3.2.1.4-torch2.6-py310-ubuntu24.04-amd64](https://developer.metax-tech.com/softnova/docker)
## Set up using pip (without UV)
### Build wheel from source
!!! note
If using pip, all the build and installation steps are based on *corresponding docker images*. You can find them on [MetaX Dev Site](https://developer.metax-tech.com/softnova/docker).
We need to add `-no-build-isolation` flag (or an equivalent one) during package building, since all the requirements are already pre-installed in released docker image.
#### Setup environment variables
```bash
# setup MACA path
export MACA_PATH="/opt/maca"
# cu-bridge
export CUCC_PATH="${MACA_PATH}/tools/cu-bridge"
export CUDA_PATH=/root/cu-bridge/CUDA_DIR
export CUCC_CMAKE_ENTRY=2
# update PATH
export PATH=${MACA_PATH}/mxgpu_llvm/bin:${MACA_PATH}/bin:${CUCC_PATH}/tools:${CUCC_PATH}/bin:${PATH}
export LD_LIBRARY_PATH=${MACA_PATH}/lib:${MACA_PATH}/ompi/lib:${MACA_PATH}/mxgpu_llvm/lib:${LD_LIBRARY_PATH}
export VLLM_INSTALL_PUNICA_KERNELS=1
```
#### Build vLLM engine wothout device
Clone vllm and checkout v0.11.0 tag:
```bash
git clone --depth 1 --branch v0.11.0 https://github.com/vllm-project/vllm
cd vllm
```
Build with *empty device*:
```bash
python use_existing_torch.py
pip install -r requirements/build.txt
VLLM_TARGET_DEVICE=empty pip install -v . --no-build-isolation
```
#### Build MACA GPU plugin
Clone vLLM-MetaX and checkout v0.11.0-dev branch:
```bash
git clone --depth 1 --branch v0.11.0-dev https://github.com/MetaX-MACA/vLLM-metax
cd vLLM-metax
```
Install the build requirments first:
```bash
python use_existing_metax.py
pip install -r requirements/build.txt
```
Build and install vLLM:
```bash
pip install . -v --no-build-isolation
```
If you want to develop vLLM, install it in editable mode instead.
```bash
pip install . -e -v --no-build-isolation
```
Optionally, build a portable wheel which you can then install elsewhere:
```bash
python -m build -w -n
pip install dist/*.whl
```
!!! note
vllm-metax need to manually copy the .so files to vllm's site-package folder.
This additional behavior has been fixed and removed in v0.11.1 or newer. But **before v0.11.1**, you may still need execute the command:
```bash
vllm_metax_init
```
after your installation. And It's also **not recommended** to install plugin via editable mode. (This is usually unstable for library copy)
## Set up using UV (experimental)
Todo
## Extra information

257
mc_vLLM/quickstart.md Normal file
View File

@ -0,0 +1,257 @@
# Quickstart
Currently the recommanded way to start ***vLLM-MetaX*** is via *docker*.
You could get the docker image at [MetaX develop community](https://developer.metax-tech.com/softnova/docker).
*Belows is version mapping to released plugin and maca*:
| plugin version | maca version | docker distribution tag |
|:--------------:|:------------:|:-----------------------:|
|v0.8.5 |maca2.33.1.13 | vllm:maca.ai2.33.1.13-torch2.6-py310-ubuntu22.04-amd64 |
|v0.9.1 |maca3.0.0.5 | vllm:maca.ai3.0.0.5-torch2.6-py310-ubuntu22.04-amd64 |
|v0.10.1.1 (dev) |maca3.1.0.7 | not released |
|v0.10.2 |maca3.2.0.7 | not released |
|v0.11.0 |maca3.2.x.x | not released |
|master |maca3.2.x.x. | not released |
> Note: All the vllm tests are based on the related maca version. Using a non-corresponding version of maca for vllm may cause unexpected bugs or errors. Correct functionality is not guaranteed.
## Prerequisites & Setup environment variables
To use vLLM MetaX, you need to install the MetaX Hardware Backend Plugin first, refer to [Installation](./installation/maca.md) for details.
!!! note
By default, vLLM downloads models from [Hugging Face](https://huggingface.co/). If you would like to use models from [ModelScope](https://www.modelscope.cn), set the environment variable `VLLM_USE_MODELSCOPE` before initializing the engine.
```shell
pip install modelscope
export VLLM_USE_MODELSCOPE=True
```
### Setup environment variables
```bash
# setup MACA path
export MACA_PATH="/opt/maca"
# setup cu-bridge path
export CUCC_PATH="${MACA_PATH}/tools/cu-bridge"
export CUDA_PATH=/root/cu-bridge/CUDA_DIR
export CUCC_CMAKE_ENTRY=2
# update PATH ENV
export PATH=${MACA_PATH}/mxgpu_llvm/bin:${MACA_PATH}/bin:${CUCC_PATH}/tools:${CUCC_PATH}/bin:${PATH}
export LD_LIBRARY_PATH=${MACA_PATH}/lib:${MACA_PATH}/ompi/lib:${MACA_PATH}/mxgpu_llvm/lib:${LD_LIBRARY_PATH}
export VLLM_INSTALL_PUNICA_KERNELS=1
# use modelscope download models
export VLLM_USE_MODELSCOPE=True
```
### Check MACA GPU vLLM Plugin Availability
```bash
# check vLLM version
pip list|grep vllm
# check MACA GPU plugin availability
python -c "from vllm import LLM; llm = LLM('facebook/opt-125m'); print('Engine initialization succeeded')"
```
## Offline Batched Inference
With vLLM installed, you can start generating texts for list of input prompts (i.e. offline batch inferencing). See the example script: [examples/offline_inference/basic/basic.py](../../examples/offline_inference/basic/basic.py)
The first line of this example imports the classes [LLM][vllm.LLM] and [SamplingParams][vllm.SamplingParams]:
- [LLM][vllm.LLM] is the main class for running offline inference with vLLM engine.
- [SamplingParams][vllm.SamplingParams] specifies the parameters for the sampling process.
```python
from vllm import LLM, SamplingParams
```
The next section defines a list of input prompts and sampling parameters for text generation. The [sampling temperature](https://arxiv.org/html/2402.05201v1) is set to `0.8` and the [nucleus sampling probability](https://en.wikipedia.org/wiki/Top-p_sampling) is set to `0.95`. You can find more information about the sampling parameters [here](../api/README.md#inference-parameters).
!!! important
By default, vLLM will use sampling parameters recommended by model creator by applying the `generation_config.json` from the Hugging Face model repository if it exists. In most cases, this will provide you with the best results by default if [SamplingParams][vllm.SamplingParams] is not specified.
However, if vLLM's default sampling parameters are preferred, please set `generation_config="vllm"` when creating the [LLM][vllm.LLM] instance.
```python
prompts = [
"Hello, my name is",
"The president of the United States is",
"The capital of France is",
"The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
```
The [LLM][vllm.LLM] class initializes vLLM's engine and the [OPT-125M model](https://arxiv.org/abs/2205.01068) for offline inference. The list of supported models can be found [here](../models/supported_models.md).
```python
llm = LLM(model="facebook/opt-125m")
```
Now, the fun part! The outputs are generated using `llm.generate`. It adds the input prompts to the vLLM engine's waiting queue and executes the vLLM engine to generate the outputs with high throughput. The outputs are returned as a list of `RequestOutput` objects, which include all of the output tokens.
```python
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
```
!!! note
The `llm.generate` method does not automatically apply the model's chat template to the input prompt. Therefore, if you are using an Instruct model or Chat model, you should manually apply the corresponding chat template to ensure the expected behavior. Alternatively, you can use the `llm.chat` method and pass a list of messages which have the same format as those passed to OpenAI's `client.chat.completions`:
??? code
```python
# Using tokenizer to apply chat template
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("/path/to/chat_model")
messages_list = [
[{"role": "user", "content": prompt}]
for prompt in prompts
]
texts = tokenizer.apply_chat_template(
messages_list,
tokenize=False,
add_generation_prompt=True,
)
# Generate outputs
outputs = llm.generate(texts, sampling_params)
# Print the outputs.
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
# Using chat interface.
outputs = llm.chat(messages_list, sampling_params)
for idx, output in enumerate(outputs):
prompt = prompts[idx]
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
```
## OpenAI-Compatible Server
vLLM can be deployed as a server that implements the OpenAI API protocol. This allows vLLM to be used as a drop-in replacement for applications using OpenAI API.
By default, it starts the server at `http://localhost:8000`. You can specify the address with `--host` and `--port` arguments. The server currently hosts one model at a time and implements endpoints such as [list models](https://platform.openai.com/docs/api-reference/models/list), [create chat completion](https://platform.openai.com/docs/api-reference/chat/completions/create), and [create completion](https://platform.openai.com/docs/api-reference/completions/create) endpoints.
Run the following command to start the vLLM server with the [Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) model:
```bash
vllm serve Qwen/Qwen2.5-1.5B-Instruct
```
!!! note
By default, the server uses a predefined chat template stored in the tokenizer.
You can learn about overriding it [here](../serving/openai_compatible_server.md#chat-template).
!!! important
By default, the server applies `generation_config.json` from the huggingface model repository if it exists. This means the default values of certain sampling parameters can be overridden by those recommended by the model creator.
To disable this behavior, please pass `--generation-config vllm` when launching the server.
This server can be queried in the same format as OpenAI API. For example, to list the models:
```bash
curl http://localhost:8000/v1/models
```
You can pass in the argument `--api-key` or environment variable `VLLM_API_KEY` to enable the server to check for API key in the header.
You can pass multiple keys after `--api-key`, and the server will accept any of the keys passed, this can be useful for key rotation.
### OpenAI Completions API with vLLM
Once your server is started, you can query the model with input prompts:
```bash
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-1.5B-Instruct",
"prompt": "San Francisco is a",
"max_tokens": 7,
"temperature": 0
}'
```
Since this server is compatible with OpenAI API, you can use it as a drop-in replacement for any applications using OpenAI API. For example, another way to query the server is via the `openai` Python package:
??? code
```python
from openai import OpenAI
# Modify OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
completion = client.completions.create(
model="Qwen/Qwen2.5-1.5B-Instruct",
prompt="San Francisco is a",
)
print("Completion result:", completion)
```
A more detailed client example can be found here: [examples/offline_inference/basic/basic.py](../../examples/offline_inference/basic/basic.py)
### OpenAI Chat Completions API with vLLM
vLLM is designed to also support the OpenAI Chat Completions API. The chat interface is a more dynamic, interactive way to communicate with the model, allowing back-and-forth exchanges that can be stored in the chat history. This is useful for tasks that require context or more detailed explanations.
You can use the [create chat completion](https://platform.openai.com/docs/api-reference/chat/completions/create) endpoint to interact with the model:
```bash
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-1.5B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"}
]
}'
```
Alternatively, you can use the `openai` Python package:
??? code
```python
from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
chat_response = client.chat.completions.create(
model="Qwen/Qwen2.5-1.5B-Instruct",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Tell me a joke."},
],
)
print("Chat response:", chat_response)
```
## On Attention Backends

101
mc_vLLM/task_level.md Normal file
View File

@ -0,0 +1,101 @@
# vLLM推理框架文档任务解读
## 一、前置说明
1. **提交要求**:所有交付需提交至 [MACA-vLLM](https://github.com/MetaX-MACA/vLLM-metax) 仓库的文档对应目录。
2. **参考资料**
- vLLM 官方文档:[https://docs.vllm.ai](https://docs.vllm.ai)
- [vLLM for MACA 版本社区文档](https://ilikeineine.github.io/vLLM-metax/)
---
## 二、Level 1环境与基础验证类5/10分
### 核心目标
熟悉 vLLM-MetaX 基础环境开发,完成 MACA 平台上的模型推理验证。
### 任务内容
1. **环境验证任务5分**
- 使用 **MACA 3.2.1 + PyTorch 2.6 镜像** 完成 vLLM 源码安装;
- 检查环境变量配置及日志输出;
- 提交运行截图、验证日志至对应比赛的 Issue。
2. **代码编译构建文档完善并被合并10分**
- 完善编译与构建文档,补充 MACA 环境下的依赖安装、环境变量配置及常见的编译错误解决方案;
- 提交更新文档和验证脚本的 PR 至 https://github.com/MetaX-MACA/vLLM-metax/tree/v0.11.0-dev/docs Issue中并附带运行截图与验证日志。
---
## 三、Level 2模型验证与适配类5/15分
### 模型验证清单
- [ vLLM 官方模型支持列表](https://docs.qq.com/sheet/DTkZWVGhBVWtKZHZU?tab=BB08J2)
- 紫色标记的是已验证过可以在MACA-vLLM上支持的故分值为5若选手在验证过程中发现存在BUG并提出可获得额外加分。
- 白色标记成功验证可在MACA-vLLM上支持即得15分若验证不成功提交详细日志和验证步骤也得15分。
### 核心目标
完成 vLLM 官方支持模型在 MACA 平台的验证。
### 任务内容
1. **MACA-vLLM社区支持模型验证**
- 参考 vLLM 官方模型支持列表的紫色标签部分;
- 验证 **已列入 MACA 开源模型支持列表** 能正确运行;
- 提交验证日志与推理结果截图;
- 验证离线推理(Offline Inference)与在线推理Online Serving均能正常运行
- 计分标准:每完成 1 个模型验证得 5 分,单人上限 10 分,先到先得。
2. **不在 MACA 支持列表的模型验证测试验证vLLM官方支持列表并加入MACA 开源模型支持列表)**
- 选择 **在vLLM官方支持列表但 MACA 开源模型支持列表暂未支持的模型**,即表格中的白色标签部分;
- 尝试在 MACA-vLLM 上进行验证、复现或完善使用文档;
- 验证离线推理(Offline Inference)与在线推理Online Serving均能正常运行
- 成功完成验证并提交对应验证文档合并到MACA开源模型支持列表的可得 **15 分**。[参考PR](https://github.com/MetaX-MACA/vLLM-metax/pull/129)
---
## 四、Level 3特性功能验证与 BUG 分析类5/15分
### 核心目标
验证 vLLM 关键特性在 MACA 上的实现情况,发现潜在兼容性问题。
### 任务内容
1. **特性验证任务**
- 选择 1 项 vLLM 功能(如 KV Cache、Quantization、LoRA、Paged Attention 等);
- 验证其在 MACA 平台是否可正常工作;
- 提供完整测试步骤与日志;
- 首次验证通过计 5 分,单人上限 10 分。
2. **BUG 复现任务**
- 找出 MACA 平台与 CUDA 平台差异导致的特性不支持问题或BUG
- 提供复现方法与详细日志;
- 若能定位问题原因并提交详细分析,得 15 分。
---
## 五、Level 4开发与贡献类50分
### 核心目标
完成特性修复、性能优化或完整案例开发,实现对 MACA 平台的增强贡献。
### 任务内容
1. **BUG 修复与 PR 提交**
- 找出 vLLM 在 MACA 平台的核心问题;
- 提供复现步骤、问题定位及修复代码;
- 提交可合并的 PR 并通过 Review
- 合并后得 50 分。
---
## 六、补充说明
| 议题 | 内容说明 |
|------|-----------|
| 环境变量配置 | 需在文档中明确说明关键环境变量及默认值(如 `VLLM_USE_MACA=1` |
| 限制条件 | 量化方法支持受限,单卡推理模型尺寸受显存限制 |
| 新特性支持 | 仅列出 MACA 独有特性(其余引用 vLLM 官方文档) |
| 模型验证维度 | 需验证量化参数与 CUDA 结果一致性 |
| 验证方式 | 离线推理(Offline Inference)与在线推理Online Serving均需覆盖 |
---
## 七、附录与参考链接
- [vLLM 官方支持模型列表](https://docs.vllm.ai/en/latest/models/supported_models.html)
- [vLLM-MetaX 官方站点](https://vllm-metax.readthedocs.io/en/latest/getting_started/quickstart.html)
- [vLLM-MetaX GitHub 仓库](https://github.com/MetaX-MACA/vLLM-metax)
- [MACA Hardware Supported Models](https://github.com/MetaX-MACA/vLLM-metax/blob/v0.11.0-dev/docs/models/supported_models.md)

90
task_issue_list.md Normal file
View File

@ -0,0 +1,90 @@
# GPU 开源生态挑战赛 - 赛题与 Issue 对应清单
这个list仅提供参考赛题二是一个较为开放的命题范围并不限于下文所提到的方向。本文档用于帮助参赛选手快速查找并选择适合的赛题方向与对应的 Issue。
所有任务均需以 **Issue + PR** 的形式提交,且 PR 必须引用对应的 Issue例如 `在对应issue评论PR的link`),方可计入有效成果。
---
## 文档类赛题Documentation Track
适合对系统架构、软件安装、运行指南、生态兼容性分析等方向感兴趣的参赛者。
| 序号 | 赛题名称 | Issue / 仓库 | 简介 |
|------|------------|-------------|------|
| 1 | 示例MinerU 上游社区支持 MACA 的使用文档 *(选手可参考)*| [GPUApps #1](https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/issues/1) | 在 MinerU 上游仓库编写并验证 MACA 3.0 环境下的安装与使用指南 |
| 2 | MACA 软件栈开发环境配置说明 | *(待创建)* | 编写基于 MACA 环境的开发配置与调试指南 |
| 3 | InfiniCore 算子开发文档整理 | *(待创建)* | 对 InfiniCore 项目中算子适配 MACA 的过程进行文档化说明 |
| 4 | MACA 插件生态兼容性报告 | *(待创建)* | 对 MACA 与主流深度学习框架插件PyTorch、TensorRT 等)的兼容性进行调研与文档总结 |
| 5 | 分布式推理环境搭建与验证指南 | *(待创建)* | 整理基于多 GPU 的推理部署方案,输出安装与性能验证手册 |
| 6 | Kernel Library 重构方案说明 | [GPUKernelContest #12](https://github.com/MetaX-MACA/vLLM-metax/issues/12) | 针对内核拆包packaging split方案编写技术说明与 RFC 跟踪文档 |
| 7 | 自主选题:文档贡献与改进 | *(开放类)*| 参赛者可在任一公开 Issue 中选择合适主题(如文档补充、优化等),经赛题组确认后即可作为正式参赛方向 |
---
## 代码类赛题Code Implementation Track
适合有一定编程经验的选手,聚焦模型迁移、算子适配、性能优化等方向。
| 序号 | 赛题名称 | Issue / 仓库 | 简介 |
|------|------------|-------------|------|
| 1 | InfiniCore 算子迁移至 MACA 软件栈 | [GitHub: InfiniCore #TASK](https://github.com/InfiniTensor/InfiniCore) | 将部分 CUDA 算子迁移至国产 MACA 软件栈,提升兼容性与性能 |
| 2 | vLLM 模型适配至 MACA 平台 | [MACA #7](https://github.com/MetaX-MACA/vLLM-metax/issues/7) | 完成 vLLM 在国产算力平台上的迁移、验证与性能优化 |
| 3 | 修复平台 topksoftmax CPU 版本运行错误 | [InfiniCore #528](https://github.com/InfiniTensor/InfiniCore/issues/528) | 定位并修复在平台上 topksoftmax 算子 CPU 版本的运行错误,验证修复后在不同平台下结果一致性,提升国产算力兼容性与稳定性 |
| 4 | AI4S 前沿论文复现与加速实现 | *(待创建)* | 选择 AI for Science 领域论文,复现并在国产算力上加速运行 |
| 5 | 单 Transformers 模型迁移到 vLLM / SGLang | *(待创建)* | 将主流 Transformers 模型迁移至 vLLM 或 SGLang在国产算力平台上实现可运行与性能优化 |
| 6 | LMDeploy 模型适配迁移 | *(待创建)* | 参考 LMDeploy 的模型适配方案,扩展未支持模型类型在国产算力平台上的运行能力 |
| 7 | JAX 模型迁移至 PyTorch 生态 | *(待创建)* | 将 JAX/Flax 等框架模型迁移至 PyTorch 生态,实现训练与推理功能对齐 |
| 8 | CUDA AI 软件迁移至国产 MACA 栈 | *(待创建)* | 将 CUDA AI 开源软件迁移至国产 MACA 软件栈,实现算子与框架兼容 |
| 9 | 其它有价值的模型或算子迁移 | *(待创建)* | 聚焦具有科研或工程价值的模型迁移任务,以最终审核结果为准 |
---
## 生态类赛题Ecosystem Contribution Track
适合对上游开源生态建设、社区贡献感兴趣的选手。可通过提交 PR 至开源项目上游仓库完成任务。
| 序号 | 赛题名称 | Issue / 仓库 | 简介 |
|------|------------|----------------|------|
| 1 | 参与 InfiniCore 社区上游贡献 | [InfiniCore 主仓库](https://github.com/InfiniTensor/InfiniCore) | 完成算子迁移或优化,提交 PR 至主仓库 |
| 2 | 参与 MACA 组织上游贡献 | [MACA 主仓库](https://github.com/MetaX-MACA) | 支持国产算力平台生态扩展,贡献文档或代码实现 |
| 3 | vLLM Kernel 模块拆分与打包重构 | [vLLM #12](https://github.com/MetaX-MACA/vLLM-metax/issues/12) | 讨论并实现 vLLM项目中内核模块的结构化拆分与独立打包以减少构建时间、优化依赖关系、提升项目可扩展性促进国产算力生态的维护与发展 |
| 4 | InfiniCore 上游贡献与算子迁移 | [主仓库](https://github.com/InfiniTensor/InfiniCore)<br>[迁移案例参考](https://github.com/wawahejun/InfiniCore-Intern) | 参考 InfiniCore 仓库算子迁移案例,完成国产化迁移与验证 |
| 5 | FlashMLA 项目参与与适配 | *(待创建)* | 参与 FlashMLA 等高性能推理框架的国产化迁移与适配 |
---
## 其他潜在方向(可自拟题)
| 序号 | 赛题名称 | Issue / 仓库 | 简介 |
| -- | --------------- | -------- | ------------------------------ |
| 1 | 国产 AI 基础设施自主化探索 | *(待创建)* | 聚焦国产 AI 基础设施自主化与软硬件协同优化 |
| 2 | 生态集成与性能评测 | *(待创建)* | 针对多个项目的适配成果进行统一测试、性能分析与可视化报告输出 |
参赛者也可提出新的赛题方向,需经组委会审核后列入正式评审范围:
- FlashMLA 模型或框架迁移;
- 将 JAX 模型迁移至 PyTorch 生态;
- 将 CUDA AI 开源项目迁移至 MACA 软件栈;
- 其他具有生态价值的优化或适配方向。
---
## 注意事项与建议
- 所有提交需遵循 [TASK_INTERPRETATION.md](https://www.gitlink.org.cn/ccf-ai-infra/GPUApps/tree/main/TASK_INTERPRETATION.md) 中的流程;
- 推荐每个 PR 只对应一个主要 Issue
- 若上游仓库为 GitHub请保持与社区开发者积极沟通确保合并成功
- 所有被上游仓库合并的有效贡献将计入评分;
- 建议在提交后保持跟进,补充文档或测试说明。
---
## 结语
子赛题二鼓励所有参赛者积极参与国产算力生态建设,通过真实的上游贡献推动 MACA、InfiniCore、MinerU 等开源社区协同发展。
无论是文档编写、模型迁移还是算子优化,每一次有效的贡献,都是推动国产 AI 生态自立自强的重要一步。
> 欢迎大家踊跃参与,共同建设开放、可持续的国产 AI 开源生态!
---