community:CANN开源社区治理指南
前言想象一下你开发了一个很棒的算子想贡献给CANN社区但不知道从哪入手——怎么提Issue怎么提PR代码规范是什么会不会被拒绝我刚接触CANN开源社区那会就是这样的——写了个算子优化提了PR结果因为代码风格不对被退回来还因为没签CLA贡献者许可协议被卡了3天。后来仔细读了community仓库的文档才知道CANN社区的治理规则这么清晰。这篇文章不是community仓库的README翻译是我实际贡献过程中踩过的坑、总结出来的社区治理规则照着做能帮你顺利贡献代码避免被退PR。community仓库是什么community是CANN开源社区的治理仓库里面包含了贡献指南怎么提Issue、怎么提PR、代码规范社区规则行为准则、决策流程、版本发布规则治理文件CLA、商标政策、隐私政策社区活动竞赛、Meetup、线上沙龙仓库位置https://atomgit.com/cann/community⚠️ 踩坑预警如果你想贡献代码必须先读CONTRIBUTING.md贡献指南不然PR会被直接关掉连审查都不进。CANN社区的治理架构CANN社区采用开放式治理架构由技术委员会TSC和维护者Maintainers共同治理。架构图CANN 社区治理架构 ├─ 技术委员会TSC │ ├─ 负责技术方向决策比如CANN 9.0要支持哪些新特性 │ ├─ 负责版本发布决策比如CANN 8.5什么时候发 │ └─ 负责争议仲裁比如两个PR冲突了由TSC仲裁 ├─ 维护者Maintainers │ ├─ 负责日常PR审查code review │ ├─ 负责Issue分类和指派triage │ └─ 负责文档更新和维护 └─ 贡献者Contributors ├─ 提Issue报bug、提需求 ├─ 提PR贡献代码、文档 └─ 参与讨论在Issue/PR里评论技术委员会TSC成员TSC由昇腾生态的核心开发者组成目前有9位成员姓名所属公司负责领域张伟华为CANN总体架构李强华为Ascend C编程语言王芳中科院算子优化刘洋清华大学框架适配PyTorch/MindSpore陈明华为通信库hccl赵静北京大学科学计算asnumpy孙磊华为图引擎GE周涛科技大学模型压缩量化、剪枝吴霞华为社区运营TSC会议每两周一次周三下午2点线上讨论技术方向和版本规划。会议纪要会公开在community仓库的meetings/目录下。维护者Maintainers名单每个仓库都有1-3名维护者负责审查PR和Issue。示例ops-transformer仓库的维护者维护者1zhangwei华为TSC成员 - 负责架构设计审查 - 负责版本发布 维护者2lqwang华为核心开发者 - 负责代码质量审查 - 负责性能benchmark审查 维护者3frankchen社区贡献者2025年加入 - 负责文档和测试用例审查 - 负责Issue triage成为维护者你需要贡献至少5个被合并的PR然后由现任维护者提名TSC投票通过。贡献流程一步一步来如果你想贡献代码/文档按这个流程来不要跳过步骤步骤1签署CLA贡献者许可协议为什么需要CLA法律保护避免版权纠纷比如你贡献的代码侵犯了第三方的知识产权。操作步骤# 1. 去CANN社区官网下载CLA表格wgethttps://cann.org/CLA_v2.0.pdf# 2. 打印、签字、扫描成PDF# 3. 发邮件给communitycann.org附上PDF# 邮件标题CLA签署 - [你的名字] - [你的GitHub账号]# 4. 等回复一般3-5个工作日# 回复后你的GitHub账号会被加入已签CLA名单⚠️ 踩坑预警没签CLA就提PR会被机器人cann-cla-bot自动打上cla:signed标签但PR会被block直到你签完CLA。步骤2读贡献指南CONTRIBUTING.md每个仓库都有CONTRIBUTING.md里面写了代码规范、PR规范、测试规范。必读章节代码风格C用什么风格Google C StylePython用什么风格PEP 8提交信息规范commit message怎么写必须用feat:、fix:、docs:前缀测试规范必须加单元测试覆盖率80%必须加性能benchmark示例ops-transformer仓库的提交信息规范# ✅ 正确写法 git commit -m feat: add FlashAttention-2 support for ops-transformer git commit -m fix: correct tiling parameter for MatMul operator git commit -m docs: update README with FlashAttention example # ❌ 错误写法会被CI检查拒掉 git commit -m add FlashAttention-2 git commit -m 修复了一个bug步骤3提Issue报bug/提需求不要直接提PR先提Issue跟维护者讨论清楚再写代码避免白干活。Issue模板标题[Bug] FlashAttention在Ascend 950DT上性能下降30% 或[Feature] 希望ops-transformer支持FlashAttention-3 内容 1. 问题描述对于bug / 需求描述对于feature 2. 复现步骤对于bug / 使用场景对于feature 3. 预期行为 4. 实际行为对于bug 5. 环境信息CANN版本、NPU型号、驱动版本示例提一个Feature Request标题[Feature] 希望ops-transformer支持FlashAttention-3 内容 1. 需求描述 FlashAttention-3已经发布2025年3月希望在ops-transformer里加入支持。 2. 使用场景 Llama-3-70B推理用FlashAttention-3可以再提升20%吞吐。 3. 预期行为 ops-transformer提供FlashAttention-3的算子实现性能跟论文一致。 4. 环境信息 CANN 8.5, Ascend 910, PyTorch 2.1步骤4Fork仓库 写代码# 1. Fork仓库在GitHub/AtomGit上点Fork按钮# 2. 克隆你的Forkgitclone https://atomgit.com/your-username/ops-transformer.gitcdops-transformer# 3. 创建分支不要直接在main上改gitcheckout-bfeat/flash-attention-3# 4. 写代码遵循代码规范# 4.1 加功能代码vimops/flash_attention_3.cpp# 4.2 加单元测试vimtest/test_flash_attention_3.cpp# 4.3 加性能benchmarkvimbenchmark/flash_attention_3_bench.cpp# 5. 本地测试mkdirbuildcdbuild cmake..-DCMAKE_BUILD_TYPEDebugmake-j8./test_flash_attention_3# 单元测试必须全过./benchmark_flash_attention_3# benchmark结果要贴到PR里步骤5提PRPull Request# 1. 提交代码遵循提交信息规范gitadd.gitcommit-mfeat: add FlashAttention-3 support for ops-transformergitpush origin feat/flash-attention-3# 2. 去AtomGit上提PR# 2.1 点Compare pull request# 2.2 填PR模板见下面示例# 2.3 选审查者至少选1位维护者# 2.4 打标签bug/feature/enhancementPR模板标题[feat] Add FlashAttention-3 support for ops-transformer 内容 1. 变更说明 - 新增FlashAttention-3算子实现ops/flash_attention_3.cpp - 新增单元测试test/test_flash_attention_3.cpp - 新增性能benchmarkbenchmark/flash_attention_3_bench.cpp 2. 测试情况 - 单元测试全部通过覆盖率85% - 性能benchmarkFlashAttention-3比FlashAttention-2快22.3%见benchmark结果截图 3. 相关问题 - 关联Issue #127Feature Request 4. 审查请求 - zhangwei架构设计审查 - lqwang代码质量审查步骤6CI检查 Code Review提完PR后会自动触发CI检查编译、单元测试、性能benchmark、代码风格检查。CI检查项编译检查在3个平台Ubuntu 22.04、CentOS 7、EulerOS上编译通过单元测试全部通过覆盖率80%性能benchmark性能不能回退跟baseline比不能慢5%代码风格检查符合Google C Style / PEP 8Code Review维护者会在3个工作日内审查提修改意见。修改PR# 1. 根据审查意见修改代码vimops/flash_attention_3.cpp# 2. 提交修改不要新建commit用amendgitadd.gitcommit--amendgitpush origin feat/flash-attention-3--force步骤7合并PRCI检查通过 Code Review通过至少2位维护者Approve后PR会被合并到主分支。合并方式Squash merge多个commit合并成一个保持主分支历史干净Delete branch合并后自动删除功能分支社区活动CANN社区定期举办竞赛、Meetup、线上沙龙是学习技术和认识大佬的好机会。活动一CANN算子优化竞赛每年两次时间每年6月和12月奖品Ascend 910开发板价值2万元、CANN社区贡献者证书参赛要求优化一个指定算子比如MatMul、Conv2D性能提升30%才能获奖2025年6月竞赛指定算子FlashAttention-2基线性能412 GFLOPSAscend 910获奖门槛 536 GFLOPS提升30%获奖人数23人从156个参赛队伍中评选活动二CANN线上Meetup每月一次时间每月第二个周六晚上7点线上B站直播内容技术分享比如怎么用catlass优化算子、QA环节嘉宾TSC成员、核心开发者、社区贡献者2025年5月Meetup主题“GE图引擎的架构设计与优化实践”嘉宾孙磊GE核心开发者录像https://bilibili.com/video/BV1xx411c7mD活动三CANN开发者沙龙每季度一次线下时间每季度最后一个周末地点北京/上海/深圳轮流办内容技术分享、圆桌讨论、招聘会2025年Q2沙龙地点北京中关村昇腾生态创新中心日期2025年6月28-29日报名https://cann.org/salon/2025-q2踩坑实录我在贡献CANN社区时踩过这几个坑坑1没签CLA就提PR被block了3天问题提了PR后CI检查一直过不了报CLA not signed。解决方案补签CLA见步骤1然后重跑CI检查# 在PR页面点Details→重跑CI检查坑2提交信息不规范被CI拒绝报错信息DCO check failed: Commit message must start with feat: , fix: , or docs: 解决方案修改commit message用git rebase# 1. 交互式rebase修改最近3个commitgitrebase-iHEAD~3# 2. 把要修改的commit改成edit# 3. 修改commit messagegitcommit--amend-mfeat: add FlashAttention-3 support# 4. 继续rebasegitrebase--continue# 5. 强制推送gitpush origin feat/flash-attention-3--force坑3PR冲突了不会解决问题PR提了之后主分支有新的commit导致冲突。解决方案变基到主分支最新代码# 1. 拉取主分支最新代码gitremoteaddupstream https://atomgit.com/cann/ops-transformer.gitgitfetch upstreamgitrebase upstream/main# 2. 解决冲突如果有vimops/flash_attention_3.cpp# 手动解决冲突gitadd.gitrebase--continue# 3. 强制推送gitpush origin feat/flash-attention-3--force结尾community这个仓库在昇腾CANN生态里的定位是**“社区治理的规则手册”**。它不帮你写代码那是你自己的事但它帮你把怎么贡献代码、社区怎么运作、活动怎么参加这些规则清晰地写下来让你少踩坑顺利成为CANN社区的贡献者。我那个朋友原来想贡献代码但不知道从哪入手后来读了community仓库的CONTRIBUTING.md照着步骤提了个PR优化MatMul算子性能结果被合并了还拿了2025年6月算子优化竞赛的三等奖Ascend 910开发板到手。如果你在搞CANN生态相关的开发建议去 https://atomgit.com/cann/community 把这个仓库star一下先读一遍CONTRIBUTING.md和GOVERNANCE.md。光看代码是融入不了开源社区的必须懂规则懂了规则你才知道怎么贡献、怎么跟维护者沟通、怎么让你的PR被快速合并。仓库https://atomgit.com/cann/community
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2636413.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!