已合并
docs:Modified the README and CONTRIBUTING documents. #31662
shiyunhan创建于 3月11日
docs:Modified the README and CONTRIBUTING documents. #31662
已合并
共 4 个文件变更+201-480
| @@ -1,226 +0,0 @@ | |||
| 1 | -# PyTorch贡献指南 | ||
| 2 | -- [贡献者许可协议](#贡献者许可协议.md) | ||
| 3 | -- [入门](#入门.md) | ||
| 4 | -- [开发指导](#开发指导.md) | ||
| 5 | - - [测试用例](#测试用例.md) | ||
| 6 | - - [代码风格](#代码风格.md) | ||
| 7 | - - [门禁异常处理](#门禁异常处理.md) | ||
| 8 | - - [Fork-Pull开发模式](#Fork-Pull开发模式.md) | ||
| 9 | - - [报告问题](#报告问题.md) | ||
| 10 | - - [提出PR](#提出PR.md) | ||
| 11 | -<h2 id="贡献者许可协议.md">贡献者许可协议</h2> | ||
| 12 | - | ||
| 13 | -在您第一次向 PyTorch 社区提交代码之前,需要签署 CLA。 | ||
| 14 | - | ||
| 15 | -对于个人贡献者,详细信息请参考[ICLA 在线文档](https://www.mindspore.cn/icla)。 | ||
| 16 | - | ||
| 17 | -<h2 id="入门.md">入门</h2> | ||
| 18 | - | ||
| 19 | -- 在[GitCode](https://gitcode.com/ascend/pytorch)上Fork存储库。 | ||
| 20 | -- 阅读[README.md](#https://gitcode.com/ascend/pytorch/blob/master/README.zh.md)以获取项目信息和构建说明。 | ||
| 21 | - | ||
| 22 | -<h2 id="开发指导.md">开发指导</h2> | ||
| 23 | - | ||
| 24 | -- **[测试用例](#测试用例.md)** | ||
| 25 | - | ||
| 26 | -- **[代码风格](#代码风格.md)** | ||
| 27 | - | ||
| 28 | -- **[门禁异常处理](#门禁异常处理.md)** | ||
| 29 | - | ||
| 30 | -- **[Fork-Pull开发模式](#Fork-Pull开发模式.md)** | ||
| 31 | - | ||
| 32 | -- **[报告问题](#报告问题.md)** | ||
| 33 | - | ||
| 34 | -- **[提出PR](#提出PR.md)** | ||
| 35 | - | ||
| 36 | - | ||
| 37 | -<h2 id="测试用例.md">测试用例</h2> | ||
| 38 | - | ||
| 39 | -通过具体示例,完成PyTorch的功能测试。 | ||
| 40 | - | ||
| 41 | -1. 编写测试脚本。 | ||
| 42 | - | ||
| 43 | - 以add运算为例,在“pytorch/test/test\_network\_ops“路径下编写测试脚本文件: test\_add.py。 | ||
| 44 | - | ||
| 45 | - 以下示例仅为一个简单的用例实现,供用户参考。具体测试用例的实现,需要根据运算定义进行完整的覆盖才能保证功能的基本正确。 | ||
| 46 | - | ||
| 47 | - ``` | ||
| 48 | - # 引入依赖库 | ||
| 49 | - import sys | ||
| 50 | - import torch | ||
| 51 | - import torch_npu | ||
| 52 | - import numpy as np | ||
| 53 | - | ||
| 54 | - from torch_npu.testing.testcase import TestCase, run_tests | ||
| 55 | - from torch_npu.testing.common_utils import create_common_tensor | ||
| 56 | - | ||
| 57 | - | ||
| 58 | - # 定义add测试用例类 | ||
| 59 | - class TestAdd(TestCase): | ||
| 60 | - | ||
| 61 | - # 定义CPU的add执行函数 | ||
| 62 | - def cpu_op_exec(self, input1, input2): | ||
| 63 | - output = torch.add(input1, input2, alpha = 1) | ||
| 64 | - output = output.numpy() | ||
| 65 | - return output | ||
| 66 | - | ||
| 67 | - # 定义NPU的add执行函数 | ||
| 68 | - def npu_op_exec_new(self, input1, input2): | ||
| 69 | - output = torch.add(input1, input2, alpha = 1) | ||
| 70 | - output = output.to("cpu") | ||
| 71 | - output = output.numpy() | ||
| 72 | - return output | ||
| 73 | - | ||
| 74 | - # 定义add对应场景通用函数,该函数中负责场景对应输入数据和对比CPU和NPU返回结果 | ||
| 75 | - def add_result(self, shape_format): | ||
| 76 | - for item in shape_format: | ||
| 77 | - cpu_input1, npu_input1 = create_common_tensor(item, 0, 100) | ||
| 78 | - cpu_input2, npu_input2 = create_common_tensor(item, 0, 100) | ||
| 79 | - if cpu_input1.dtype == torch.float16: | ||
| 80 | - cpu_input1 = cpu_input1.to(torch.float32) | ||
| 81 | - cpu_input2 = cpu_input2.to(torch.float32) | ||
| 82 | - cpu_output = self.cpu_op_exec(cpu_input1, cpu_input2) | ||
| 83 | - npu_output = self.npu_op_exec_new(npu_input1, npu_input2) | ||
| 84 | - cpu_output = cpu_output.astype(npu_output.dtype) | ||
| 85 | - self.assertRtolEqual(cpu_output, npu_output) | ||
| 86 | - | ||
| 87 | - # 定义具体add场景的测试用例,用例函数需要以test_开头 | ||
| 88 | - def test_add_shape_format_fp32_2d(self): | ||
| 89 | - format_list = [0, 3, 29] | ||
| 90 | - shape_format = [ | ||
| 91 | - [np.float32, i, [5, 256]] for i in format_list | ||
| 92 | - ] | ||
| 93 | - self.add_result(shape_format) | ||
| 94 | - | ||
| 95 | - if __name__ == "__main__": | ||
| 96 | - run_tests() | ||
| 97 | - ``` | ||
| 98 | - | ||
| 99 | -2. 设置环境变量。 | ||
| 100 | - | ||
| 101 | - 进入"pytorch"根目录,并执行env.sh脚本。 | ||
| 102 | - | ||
| 103 | - ``` | ||
| 104 | - bash env.sh | ||
| 105 | - ``` | ||
| 106 | - | ||
| 107 | -3. 执行测试用例脚本。 | ||
| 108 | - | ||
| 109 | - 进入“test\_add.py“所在的目录,执行: | ||
| 110 | - | ||
| 111 | - ``` | ||
| 112 | - python3.7 test_add.py | ||
| 113 | - ``` | ||
| 114 | - | ||
| 115 | - | ||
| 116 | -<h2 id="代码风格.md">代码风格</h2> | ||
| 117 | - | ||
| 118 | -请遵循这些风格,以使 PyTorch 易于开发、审查和维护。 | ||
| 119 | - | ||
| 120 | -- 编码指南 | ||
| 121 | - | ||
| 122 | - 请在PyTorch社区使用规统一的编码分格,python建议的编码风格是[PEP 8编码样式](https://pep8.org/),C++编码所建议的风格是 [Google C++编码指南](http://google.github.io/styleguide/cppguide.html) 。可以使用[CppLint](https://github.com/cpplint/cpplint),[CppCheck](http://cppcheck.sourceforge.net/),[CMakeLint](https://github.com/cmake-lint/cmake-lint),[CodeSpell](https://github.com/codespell-project/codespell), [Lizard](http://www.lizard.ws/),[ShellCheck](https://github.com/koalaman/shellcheck)和[pylint](https://pylint.org/)检查代码的格式,建议在您的IDE中安装这些插件。 | ||
| 123 | - | ||
| 124 | -- 单元测试指南 | ||
| 125 | - | ||
| 126 | - 请在PyTorch社区使用统一的单元测试风格, Python中建议的单元测试风格是[pytest](http://www.pytest.org/en/latest/),C++单元测试所建议的风格是 [Googletest Primer](#https://github.com/google/googletest/blob/master/docs/primer.md) 。测试用例的设计意图应该通过它的注释名称来反映。 | ||
| 127 | - | ||
| 128 | -- 重构指南 | ||
| 129 | - | ||
| 130 | - 我们鼓励开发人员重构我们的代码以消除[代码异味](https://en.wikipedia.org/wiki/Code_smell)。所有的代码都应该符合编码风格和测试风格的需求,重构代码也不例外。当您收到警告时,您必须重构要合并的代码。 | ||
| 131 | - | ||
| 132 | - | ||
| 133 | -<h2 id="门禁异常处理.md">门禁异常处理</h2> | ||
| 134 | - | ||
| 135 | -门禁异常主要包含如下几种,请根据相关提示解决异常问题。 | ||
| 136 | - | ||
| 137 | -- 编译异常 | ||
| 138 | - | ||
| 139 | - 请检查代码编译失败的原因,解决问题后重新编译即可。 | ||
| 140 | - | ||
| 141 | -- 静态检查异常(代码Bug、代码漏洞、代码异味) | ||
| 142 | - | ||
| 143 | - 请依照提示查找代码中的异常并解决。 | ||
| 144 | - | ||
| 145 | -- UT测试未通过 | ||
| 146 | - | ||
| 147 | - 请根据提示,查找测试用例不通过项并检查原因,解决后再测试。 | ||
| 148 | - | ||
| 149 | - | ||
| 150 | -<h2 id="Fork-Pull开发模式.md">Fork-Pull开发模式</h2> | ||
| 151 | - | ||
| 152 | -1. Fork PyTorch存储库。 | ||
| 153 | - | ||
| 154 | - 在向PyTorch项目提交代码之前,请确保该项目已经Fork到您自己的存储库。这意味着PyTorch存储库和您自己的存储库之间将存在并行开发,因此请注意避免存储库之间的不一致。 | ||
| 155 | - | ||
| 156 | -2. 克隆远程仓库。 | ||
| 157 | - | ||
| 158 | - 如果要将代码下载到本地环境,git是很好的方法: | ||
| 159 | - | ||
| 160 | - ``` | ||
| 161 | - # For GitCode | ||
| 162 | - git clone https://gitcode.com/{insert_your_forked_repo}/pytorch.git | ||
| 163 | - git remote add upstream https://gitcode.com/pytorch/pytorch.git | ||
| 164 | - ``` | ||
| 165 | - | ||
| 166 | -3. 本地开发代码。 | ||
| 167 | - | ||
| 168 | - 为了避免多个分支之间的不一致,建议创建新的分支进行开发: | ||
| 169 | - | ||
| 170 | - ``` | ||
| 171 | - git checkout -b {new_branch_name} origin/master | ||
| 172 | - ``` | ||
| 173 | - | ||
| 174 | - 以master分支为例,PyTorch可能会根据需要创建版本分支和下游开发分支,请先修复上游的bug。然后就可以随意更改代码了。 | ||
| 175 | - | ||
| 176 | -4. 将代码推送到远程仓库。 | ||
| 177 | - | ||
| 178 | - 更新代码后,您需要以正式的方式推送更新: | ||
| 179 | - | ||
| 180 | - ``` | ||
| 181 | - git add . | ||
| 182 | - git status # Check the update status | ||
| 183 | - git commit -m "Your commit title" | ||
| 184 | - git commit -s --amend #Add the concrete description of your commit | ||
| 185 | - git push origin {new_branch_name} | ||
| 186 | - ``` | ||
| 187 | - | ||
| 188 | -5. 向 PyTorch存储库拉取请求。 | ||
| 189 | - | ||
| 190 | - 在最后一步中,您需要在新分支和“PyTorch master“分支之间拉取比较请求。完成拉取请求后,“Jenkins CI“将自动设置为构建测试。您的pull request应该尽快合并到上游 master 分支,以降低合并的风险。 | ||
| 191 | - | ||
| 192 | - | ||
| 193 | -<h2 id="报告问题.md">报告问题</h2> | ||
| 194 | - | ||
| 195 | -为项目做出贡献的一个好方法是在遇到问题时发送详细报告。我们总是很感激写得很好、彻底的错误报告,并会由此感谢您! | ||
| 196 | - | ||
| 197 | -报告问题时,请参考以下格式: | ||
| 198 | - | ||
| 199 | -- 您使用的是什么版本的环境 (pytorch、os、python 等)? | ||
| 200 | -- 这是错误报告还是功能请求? | ||
| 201 | -- 什么样的问题,添加标签以在问题仪表板上突出显示。 | ||
| 202 | -- 发生了什么? | ||
| 203 | -- 您预计会发生什么? | ||
| 204 | -- 如何重现它?(尽可能最小和精确。) | ||
| 205 | -- 给审稿人的特别说明? | ||
| 206 | - | ||
| 207 | -问题咨询: | ||
| 208 | - | ||
| 209 | -- 如果您发现一个未解决的问题,而这正是您要解决的问题,请对该问题发表一些评论,告诉其他人您将负责它。 | ||
| 210 | -- 如果问题已打开一段时间,建议贡献者在解决该问题之前进行预检查。 | ||
| 211 | -- 如果您解决了自己报告的问题,则还需要在关闭该问题之前让其他人知道。 | ||
| 212 | - | ||
| 213 | -<h2 id="提出PR.md">提出PR</h2> | ||
| 214 | - | ||
| 215 | -- 在[GitCode](https://gitcode.com/ascend/pytorch/issues)上提出您的想法作为_问题_。 | ||
| 216 | -- 如果是需要大量设计细节的新功能,还应提交设计方案。 | ||
| 217 | -- 在问题讨论和设计提案审查中达成共识后,完成分叉回购的开发并提交 PR(Pull Request)。 | ||
| 218 | -- 在从批准者那里收到2+ LGTM(Looks Good To Me)之前,不允许任何PR 。请注意,审批人不允许在自己的 PR 上添加LGTM。 | ||
| 219 | -- 在 PR 被充分讨论后,它将根据讨论的结果被合并、放弃或拒绝。 | ||
| 220 | - | ||
| 221 | -公关咨询: | ||
| 222 | - | ||
| 223 | -- 应避免任何不相关的更改。 | ||
| 224 | -- 确保你的提交历史被排序。 | ||
| 225 | -- 始终将您的分支与主分支保持一致。 | ||
| 226 | -- 对于错误修复 PR,请确保链接所有相关问题。 | ||
| @@ -1,263 +1,50 @@ | |||
| 1 | # Ascend Extension for PyTorch插件 | 1 | # Ascend Extension for PyTorch插件 |
| 2 | 2 | ||
| 3 | - | ||
| 4 | ## 简介 | 3 | ## 简介 |
| 5 | 4 | ||
| 6 | 本项目开发了名为**torch_npu**的**Ascend Extension for PyTorch**插件,使昇腾NPU可以适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。 | 5 | 本项目开发了名为**torch_npu**的**Ascend Extension for PyTorch**插件,使昇腾NPU可以适配PyTorch框架,为使用PyTorch框架的开发者提供昇腾AI处理器的超强算力。 |
| 7 | 6 | ||
| 8 | 昇腾为基于华为昇腾处理器和软件的行业应用及服务提供全栈AI计算基础设施。您可以通过访问[昇腾社区](https://www.hiascend.com/zh/),了解关于昇腾的更多信息。 | 7 | 昇腾为基于华为昇腾处理器和软件的行业应用及服务提供全栈AI计算基础设施。您可以通过访问[昇腾社区](https://www.hiascend.com/zh/),了解关于昇腾的更多信息。 |
| 9 | 8 | ||
| 9 | +## 目录结构 | ||
| 10 | + | ||
| 11 | +关键目录如下: | ||
| 12 | + | ||
| 13 | +```ColdFusion | ||
| 14 | +├─ci # 持续集成脚本目录 | ||
| 15 | +├─cmake # CMake构建配置目录 | ||
| 16 | +├─torch_npu # 核心适配目录 | ||
| 17 | +│ ├─csrc/ # 底层核心目录 | ||
| 18 | +│ ├─npu/ # NPU接口目录 | ||
| 19 | +│ ├─distributed/ # 分布式训练适配目录 | ||
| 20 | +│ ├─asd/ # Ascend Debug工具目录 | ||
| 21 | +├─docs # 项目文档目录 | ||
| 22 | +├─examples # 示例目录 | ||
| 23 | +├─torchnpugen/ # 代码生成模块目录 | ||
| 24 | +└─test # 测试目录 | ||
| 25 | +``` | ||
| 26 | + | ||
| 10 | ## 版本说明 | 27 | ## 版本说明 |
| 11 | 28 | ||
| 12 | -### PyTorch与Python版本配套表 | 29 | +Ascend Extension for PyTorch的版本说明包含版本配套说明、版本兼容性说明和更新说明等,具体请参见《[Ascend Extension for PyTorch 版本说明](docs/zh/release_notes/release_notes.md)》。 |
| 13 | 30 | ||
| 14 | -| PyTorch版本 | Python版本 | | ||
| 15 | -|---------------|:-------------------------------------------------------------| | ||
| 16 | -| PyTorch1.11.0 | Python3.7.x(>=3.7.5), Python3.8.x, Python3.9.x, Python3.10.x | | ||
| 17 | -| PyTorch2.1.0 | Python3.8.x, Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 18 | -| PyTorch2.2.0 | Python3.8.x, Python3.9.x, Python3.10.x | | ||
| 19 | -| PyTorch2.3.1 | Python3.8.x, Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 20 | -| PyTorch2.4.0 | Python3.8.x, Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 21 | -| PyTorch2.5.1 | Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 22 | -| PyTorch2.6.0 | Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 23 | -| PyTorch2.7.1 | Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 24 | -| PyTorch2.8.0 | Python3.9.x, Python3.10.x, Python 3.11.x | | ||
| 25 | - | ||
| 26 | - | ||
| 27 | - | ||
| 28 | -### 昇腾辅助软件 | ||
| 29 | - | ||
| 30 | -**Ascend Extension for PyTorch**的分支名称采用`{PyTorch版本}-{昇腾版本}`命名规则,前者为**Ascend Extension for PyTorch**匹配的PyTorch版本,后者为**Ascend Extension for PyTorch**版本号,详细匹配如下: | ||
| 31 | - | ||
| 32 | -| CANN版本 | 支持的PyTorch版本 | 支持的Extension版本 | GitCode分支 | | ||
| 33 | -|-----------------------|--------------|------------------|-------------------| | ||
| 34 | -| CANN 8.5.0 | 2.9.0 | 2.9.0 | v2.9.0-7.3.0 | | ||
| 35 | -| | 2.8.0 | 2.8.0.post2 | v2.8.0-7.3.0 | | ||
| 36 | -| | 2.7.1 | 2.7.1.post2 | v2.7.1-7.3.0 | | ||
| 37 | -| | 2.6.0 | 2.6.0.post5 | v2.6.0-7.3.0 | | ||
| 38 | -| CANN 8.3.RC1 | 2.8.0 | 2.8.0 | v2.8.0-7.2.0 | | ||
| 39 | -| | 2.7.1 | 2.7.1 | v2.7.1-7.2.0 | | ||
| 40 | -| | 2.6.0 | 2.6.0.post3 | v2.6.0-7.2.0 | | ||
| 41 | -| | 2.1.0 | 2.1.0.post17 | v2.1.0-7.2.0 | | ||
| 42 | -| CANN 8.2.RC1 | 2.6.0 | 2.6.0 | v2.6.0-7.1.0 | | ||
| 43 | -| | 2.5.1 | 2.5.1.post1 | v2.5.1-7.1.0 | | ||
| 44 | -| | 2.1.0 | 2.1.0.post13 | v2.1.0-7.1.0 | | ||
| 45 | -| CANN 8.2.RC1.alpha002 | 2.7.1 | 2.7.1rc1 | v2.7.1 | | ||
| 46 | -| CANN 8.1.RC1 | 2.5.1 | 2.5.1 | v2.5.1-7.0.0 | | ||
| 47 | -| | 2.4.0 | 2.4.0.post4 | v2.4.0-7.0.0 | | ||
| 48 | -| | 2.3.1 | 2.3.1.post6 | v2.3.1-7.0.0 | | ||
| 49 | -| | 2.1.0 | 2.1.0.post12 | v2.1.0-7.0.0 | | ||
| 50 | -| CANN 8.1.RC1.alpha002 | 2.6.0 | 2.6.0rc1 | v2.6.0 | | ||
| 51 | -| CANN 8.0.0 | 2.4.0 | 2.4.0.post2 | v2.4.0-6.0.0 | | ||
| 52 | -| | 2.3.1 | 2.3.1.post4 | v2.3.1-6.0.0 | | ||
| 53 | -| | 2.1.0 | 2.1.0.post10 | v2.1.0-6.0.0 | | ||
| 54 | -| CANN 8.0.RC3 | 2.4.0 | 2.4.0 | v2.4.0-6.0.rc3 | | ||
| 55 | -| | 2.3.1 | 2.3.1.post2 | v2.3.1-6.0.rc3 | | ||
| 56 | -| | 2.1.0 | 2.1.0.post8 | v2.1.0-6.0.rc3 | | ||
| 57 | -| CANN 8.0.RC2 | 2.3.1 | 2.3.1 | v2.3.1-6.0.rc2 | | ||
| 58 | -| | 2.2.0 | 2.2.0.post2 | v2.2.0-6.0.rc2 | | ||
| 59 | -| | 2.1.0 | 2.1.0.post6 | v2.1.0-6.0.rc2 | | ||
| 60 | -| | 1.11.0 | 1.11.0.post14 | v1.11.0-6.0.rc2 | | ||
| 61 | -| CANN 8.0.RC1 | 2.2.0 | 2.2.0 | v2.2.0-6.0.rc1 | | ||
| 62 | -| | 2.1.0 | 2.1.0.post4 | v2.1.0-6.0.rc1 | | ||
| 63 | -| | 1.11.0 | 1.11.0.post11 | v1.11.0-6.0.rc1 | | ||
| 64 | -| CANN 7.0.0 | 2.1.0 | 2.1.0 | v2.1.0-5.0.0 | | ||
| 65 | -| | 2.0.1 | 2.0.1.post1 | v2.0.1-5.0.0 | | ||
| 66 | -| | 1.11.0 | 1.11.0.post8 | v1.11.0-5.0.0 | | ||
| 67 | -| CANN 7.0.RC1 | 2.1.0 | 2.1.0.rc1 | v2.1.0-5.0.rc3 | | ||
| 68 | -| | 2.0.1 | 2.0.1 | v2.0.1-5.0.rc3 | | ||
| 69 | -| | 1.11.0 | 1.11.0.post4 | v1.11.0-5.0.rc3 | | ||
| 70 | -| CANN 6.3.RC3.1 | 1.11.0 | 1.11.0.post3 | v1.11.0-5.0.rc2.2 | | ||
| 71 | -| CANN 6.3.RC3 | 1.11.0 | 1.11.0.post2 | v1.11.0-5.0.rc2.1 | | ||
| 72 | -| CANN 6.3.RC2 | 2.0.1 | 2.0.1.rc1 | v2.0.1-5.0.rc2 | | ||
| 73 | -| | 1.11.0 | 1.11.0.post1 | v1.11.0-5.0.rc2 | | ||
| 74 | -| | 1.8.1 | 1.8.1.post2 | v1.8.1-5.0.rc2 | | ||
| 75 | -| CANN 6.3.RC1 | 1.11.0 | 1.11.0 | v1.11.0-5.0.rc1 | | ||
| 76 | -| | 1.8.1 | 1.8.1.post1 | v1.8.1-5.0.rc1 | | ||
| 77 | -| CANN 6.0.1 | 1.5.0 | 1.5.0.post8 | v1.5.0-3.0.0 | | ||
| 78 | -| | 1.8.1 | 1.8.1 | v1.8.1-3.0.0 | | ||
| 79 | -| | 1.11.0 | 1.11.0.rc2(beta) | v1.11.0-3.0.0 | | ||
| 80 | -| CANN 6.0.RC1 | 1.5.0 | 1.5.0.post7 | v1.5.0-3.0.rc3 | | ||
| 81 | -| | 1.8.1 | 1.8.1.rc3 | v1.8.1-3.0.rc3 | | ||
| 82 | -| | 1.11.0 | 1.11.0.rc1(beta) | v1.11.0-3.0.rc3 | | ||
| 83 | -| CANN 5.1.RC2 | 1.5.0 | 1.5.0.post6 | v1.5.0-3.0.rc2 | | ||
| 84 | -| | 1.8.1 | 1.8.1.rc2 | v1.8.1-3.0.rc2 | | ||
| 85 | -| CANN 5.1.RC1 | 1.5.0 | 1.5.0.post5 | v1.5.0-3.0.rc1 | | ||
| 86 | -| | 1.8.1 | 1.8.1.rc1 | v1.8.1-3.0.rc1 | | ||
| 87 | -| CANN 5.0.4 | 1.5.0 | 1.5.0.post4 | 2.0.4.tr5 | | ||
| 88 | -| CANN 5.0.3 | 1.8.1 | 1.5.0.post3 | 2.0.3.tr5 | | ||
| 89 | -| CANN 5.0.2 | 1.5.0 | 1.5.0.post2 | 2.0.2.tr5 | | ||
| 90 | - | ||
| 91 | - | ||
| 92 | -## 快速入门 | ||
| 93 | - | ||
| 94 | -基于CNN模型识别手写数字的脚本,对在GPU上训练的该脚本代码进行修改,使其可以迁移到昇腾NPU上进行训练。具体操作请参见[Ascend Extension for PyTorch 快速入门](https://www.hiascend.com/document/detail/zh/Pytorch/710/fastexperience/fastexperience_0001.html)。 | ||
| 95 | 31 | ||
| 96 | ## 环境部署 | 32 | ## 环境部署 |
| 97 | 33 | ||
| 98 | -### 使用二进制文件进行安装 | 34 | +Ascend Extension for PyTorch插件的安装操作,具体请参见《[Ascend Extension for PyTorch 软件安装](docs/zh/installation_guide/menu_installation_guide.md)》。 |
| 99 | 35 | ||
| 100 | -我们为用户提供可以快速安装**torch_npu**的whl安装包。在安装**torch_npu**之前,您需要先安装**CANN**软件。[昇腾辅助软件](#昇腾辅助软件)中有更多关于CANN的版本信息。请参考[CANN安装指南](https://www.hiascend.com/cann)获取**CANN**安装包。 | 36 | +## 快速入门 |
| 101 | 37 | ||
| 102 | -1. **安装PyTorch** | 38 | +以CNN模型为例,介绍将其迁移至昇腾NPU上进行训练的方法,具体操作请参见《[Ascend Extension for PyTorch 快速入门](docs/zh/quick_start/quick_start.md)》。 |
| 103 | 39 | ||
| 104 | - 通过 pip 安装 PyTorch。 | 40 | +## 特性介绍 |
| 105 | 41 | ||
| 106 | - **aarch64:** | 42 | +Ascend Extension for PyTorch插件从内存资源优化、通信性能优化、计算性能优化、辅助报错定位等方面精心打造了一系列独特的特性,具体特性指导请参见《[PyTorch 框架特性指南](docs/zh/framework_feature_guide_pytorch/menu_framework_feature.md)》。 |
| 107 | 43 | ||
| 108 | - ```bash | 44 | +## API参考 |
| 109 | - pip3 install torch==2.7.1 | ||
| 110 | - ``` | ||
| 111 | 45 | ||
| 112 | - **x86:** | 46 | +- 原生PyTorch API在昇腾NPU设备上的支持情况请参见《[PyTorch 原生API支持度](docs/zh/native_apis/menu_pt_native_apis.md)》。 |
| 113 | - | 47 | +- Ascend Extension for PyTorch插件提供了部分自定义API接口,具体使用请参见《[Ascend Extension for PyTorch自定义API](https://gitcode.com/Ascend/op-plugin/blob/7.3.0/docs/menu_Pytorch_API.md)》。 |
| 114 | - ```bash | ||
| 115 | - pip3 install torch==2.7.1+cpu --index-url https://download.pytorch.org/whl/cpu | ||
| 116 | - ``` | ||
| 117 | - | ||
| 118 | - 若使用pip命令安装失败,请使用下载链接或进入[PyTorch官方网站](https://pytorch.org/)进行查询下载对应版本。 | ||
| 119 | - | ||
| 120 | - | 架构 | Python版本 | 下载链接 | | ||
| 121 | - |---------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| 122 | - | x86 | Python3.9 | [下载链接](https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp39-cp39-manylinux_2_28_x86_64.whl#sha256=bda4f93d64dcd9ae5d51844bbccc6fcb7d603522bcc95d256b5fe3bdb9dccca3) | | ||
| 123 | - | x86 | Python3.10 | [下载链接](https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl#sha256=16d75fa4e96ea28a785dfd66083ca55eb1058b6d6c5413f01656ca965ee2077e) | | ||
| 124 | - | x86 | Python3.11 | [下载链接](https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl#sha256=cb06175284673a581dd91fb1965662ae4ecaba6e5c357aa0ea7bb8b84b6b7eeb) | | ||
| 125 | - | aarch64 | Python3.9 | [下载链接](https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp39-cp39-manylinux_2_28_aarch64.whl#sha256=eac8b7ef5c7ca106daec5e829dfa8ca56ca47601db13b402d2608861ad3ab926) | | ||
| 126 | - | aarch64 | Python3.10 | [下载链接](https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl#sha256=b2149858b8340aeeb1f3056e0bff5b82b96e43b596fe49a9dba3184522261213) | | ||
| 127 | - | aarch64 | Python3.11 | [下载链接](https://download.pytorch.org/whl/cpu/torch-2.8.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl#sha256=680129efdeeec3db5da3f88ee5d28c1b1e103b774aef40f9d638e2cce8f8d8d8) | | ||
| 128 | - | ||
| 129 | -2. **安装torch_npu依赖** | ||
| 130 | - | ||
| 131 | - 运行以下命令安装依赖。 | ||
| 132 | - | ||
| 133 | - ```bash | ||
| 134 | - pip3 install pyyaml | ||
| 135 | - pip3 install setuptools | ||
| 136 | - ``` | ||
| 137 | - | ||
| 138 | -3. **安装torch_npu** | ||
| 139 | - | ||
| 140 | - ```bash | ||
| 141 | - pip3 install torch-npu==2.7.1 | ||
| 142 | - ``` | ||
| 143 | - 如需要保存安装日志,可在pip3 install命令后面加上参数 `--log <PATH>`,并对您指定的目录`<PATH>`做好权限管控。 | ||
| 144 | - | ||
| 145 | -### 使用源代码进行安装 | ||
| 146 | - | ||
| 147 | -某些特殊场景下,用户可能需要自行编译**torch_npu**。可以根据[昇腾辅助软件表](#昇腾辅助软件)和[PyTorch与Python版本配套表](#pytorch与python版本配套表)选择合适的分支。 | ||
| 148 | - | ||
| 149 | -推荐使用Docker镜像编译**torch_npu**,可以通过以下步骤获取(建议只挂载工作路径,并避开系统路径,以降低安全风险), 生成的.whl文件路径为./dist/。 | ||
| 150 | - | ||
| 151 | ->**须知:**<br> | ||
| 152 | ->如果不使用镜像,编译时请注意gcc版本遵循约束:ARM与X86架构下推荐使用gcc 11.2。 | ||
| 153 | - | ||
| 154 | -1. **克隆torch_npu代码仓** | ||
| 155 | - | ||
| 156 | - ``` | ||
| 157 | - git clone https://gitcode.com/ascend/pytorch.git -b v2.7.1-7.2.0 --depth 1 | ||
| 158 | - | ||
| 159 | - ``` | ||
| 160 | - | ||
| 161 | -2. **构建镜像** | ||
| 162 | - | ||
| 163 | - ``` | ||
| 164 | - cd pytorch/ci/docker/{arch} # {arch} for X86 or ARM | ||
| 165 | - docker build -t manylinux-builder:v1 . | ||
| 166 | - ``` | ||
| 167 | - | ||
| 168 | -3. **进入Docker容器** | ||
| 169 | - | ||
| 170 | - ``` | ||
| 171 | - docker run -it -v /{code_path}/pytorch:/home/pytorch manylinux-builder:v1 bash | ||
| 172 | - # {code_path} is the torch_npu source code path | ||
| 173 | - ``` | ||
| 174 | - | ||
| 175 | -4. **编译torch_npu** | ||
| 176 | - | ||
| 177 | - 以**Python 3.9** 为例。 | ||
| 178 | - | ||
| 179 | - ``` | ||
| 180 | - cd /home/pytorch | ||
| 181 | - bash ci/build.sh --python=3.9 | ||
| 182 | - ``` | ||
| 183 | - | ||
| 184 | - **提示** | ||
| 185 | - | ||
| 186 | - 如果想使用新的C++ ABI编译,请首先运行如下命令,此时推荐和社区torch包相同的编译环境:glibc 2.28, gcc 11.2.1。 | ||
| 187 | - | ||
| 188 | - ``` | ||
| 189 | - export _GLIBCXX_USE_CXX11_ABI=1 | ||
| 190 | - ``` | ||
| 191 | - | ||
| 192 | - 同时,我们支持使用如下变量配置-fabi-version,要求和社区torch包ABI版本一致。 | ||
| 193 | - | ||
| 194 | - ``` | ||
| 195 | - export _ABI_VERSION=16 | ||
| 196 | - ``` | ||
| 197 | - | ||
| 198 | -### 安装后验证 | ||
| 199 | - | ||
| 200 | -#### 前提 | ||
| 201 | - | ||
| 202 | -运行以下命令初始化**CANN**环境变量。 | ||
| 203 | - | ||
| 204 | -```Shell | ||
| 205 | -# Default path, change it if needed. | ||
| 206 | -source /usr/local/Ascend/ascend-toolkit/set_env.sh | ||
| 207 | -``` | ||
| 208 | - | ||
| 209 | -#### 快速验证 | ||
| 210 | - | ||
| 211 | - 可以通过以下样例快速体验**昇腾NPU**。 | ||
| 212 | - | ||
| 213 | -```diff | ||
| 214 | -import torch | ||
| 215 | -- import torch_npu # torch_npu2.5.1及以后版本可以不用手动导包 | ||
| 216 | - | ||
| 217 | -x = torch.randn(2, 2).npu() | ||
| 218 | -y = torch.randn(2, 2).npu() | ||
| 219 | -z = x.mm(y) | ||
| 220 | - | ||
| 221 | -print(z) | ||
| 222 | -``` | ||
| 223 | - | ||
| 224 | -## 卸载 | ||
| 225 | -Pytorch框架训练环境的卸载可以参考[昇腾官方文档](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/ptes/ptes_00032.html)。 | ||
| 226 | - | ||
| 227 | -torch_npu的卸载只需执行命令: | ||
| 228 | - | ||
| 229 | - ```bash | ||
| 230 | - pip3 uninstall torch_npu | ||
| 231 | - ``` | ||
| 232 | - | ||
| 233 | -如需要保存卸载日志,可在pip3 uninstall命令后面加上参数 `--log <PATH>`,并对您指定的目录`<PATH>`做好权限管控。 | ||
| 234 | - | ||
| 235 | - | ||
| 236 | - | ||
| 237 | -## 硬件配套 | ||
| 238 | - | ||
| 239 | -昇腾训练设备包含以下型号,都可作为PyTorch模型的训练环境。 | ||
| 240 | -| 产品系列 | 产品型号 | | ||
| 241 | -|-----------------------|----------------------------------| | ||
| 242 | -| Atlas 训练系列产品 | Atlas 800 训练服务器(型号:9000) | | ||
| 243 | -| | Atlas 800 训练服务器(型号:9010) | | ||
| 244 | -| | Atlas 900 PoD(型号:9000) | | ||
| 245 | -| | Atlas 300T 训练卡(型号:9000) | | ||
| 246 | -| | Atlas 300T Pro 训练卡(型号:9000)| | ||
| 247 | -| Atlas A2 训练系列产品 | Atlas 800T A2 训练服务器 | | ||
| 248 | -| | Atlas 900 A2 PoD 集群基础单元 | | ||
| 249 | -| | Atlas 200T A2 Box16 异构子框 | | ||
| 250 | -| Atlas A3 训练系列产品 | Atlas 800T A3 训练服务器 | | ||
| 251 | -| | Atlas 900 A3 SuperPoD 超节点 | | ||
| 252 | - | ||
| 253 | -昇腾推理设备包含以下型号,都可作为大模型的推理环境。 | ||
| 254 | -| 产品系列 | 产品型号 | | ||
| 255 | -|-----------------------|----------------------------------| | ||
| 256 | -| Atlas 800I A2推理产品 | Atlas 800I A2 推理服务器 | | ||
| 257 | - | ||
| 258 | -## 建议与交流 | ||
| 259 | - | ||
| 260 | -欢迎大家为社区做贡献。如果有任何疑问或建议,请提交[GitCode Issues](https://gitcode.com/Ascend/pytorch/issues),我们会尽快回复。感谢您的支持。 | ||
| 261 | 48 | ||
| 262 | ## 分支维护策略 | 49 | ## 分支维护策略 |
| 263 | 50 | ||
| @@ -289,23 +76,29 @@ Ascend Extension for PyTorch版本分支的维护阶段如下: | |||
| 289 | | 1.8.1 | 长期支持 | EOL | 2022/4/10 | | 2023/4/10 | | 76 | | 1.8.1 | 长期支持 | EOL | 2022/4/10 | | 2023/4/10 | |
| 290 | | 1.5.0 | 长期支持 | EOL | 2021/7/29 | | 2022/7/29 | | 77 | | 1.5.0 | 长期支持 | EOL | 2021/7/29 | | 2022/7/29 | |
| 291 | 78 | ||
| 79 | +## 贡献指导 | ||
| 80 | +介绍如何向Ascend Extension for PyTorch插件库贡献代码,具体请参见[Ascend Extension for PyTorch插件 贡献指南](docs/zh/CONTRIBUTING.md)。 | ||
| 81 | + | ||
| 82 | +## 联系我们 | ||
| 83 | + | ||
| 84 | +欢迎大家为社区做贡献。如果有任何疑问或建议,请提交[GitCode Issues](https://gitcode.com/Ascend/pytorch/issues),我们会尽快回复。感谢您的支持。 | ||
| 85 | + | ||
| 292 | ## 安全声明 | 86 | ## 安全声明 |
| 87 | +Ascend Extension for PyTorch的系统安全加固、运行用户建议和文件权限控制等内容,请参见[Ascend Extension for PyTorch插件 安全声明](docs/zh/SECURITYNOTE.md)。 | ||
| 293 | 88 | ||
| 294 | -[Ascend Extension for PyTorch插件 安全声明](./SECURITYNOTE.md) | 89 | +## 免责声明 |
| 90 | +致Ascend Extension for PyTorch插件使用者 | ||
| 91 | +- 本插件仅供调试和开发使用,使用者需自行承担使用风险,并理解以下内容: | ||
| 92 | + - 数据处理及删除:用户在使用本插件过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。 | ||
| 93 | + - 数据保密与传播:使用者了解并同意不得将通过本插件产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本插件及其开发者概不负责。 | ||
| 94 | + - 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本插件及其开发者概不负责。 | ||
| 95 | +- 免责声明范围:本免责声明适用于所有使用本插件的个人或实体。使用本插件即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本插件。 | ||
| 96 | +- 在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本插件所产生的任何问题或疑问,请及时联系开发者。 | ||
| 295 | 97 | ||
| 296 | -## 参考文档 | 98 | +## License |
| 297 | 99 | ||
| 298 | -有关安装指南、模型迁移和训练/推理教程和API列表等更多详细信息,请参考[昇腾社区Ascend Extension for PyTorch](https://www.hiascend.com/software/ai-frameworks?framework=pytorch)。 | 100 | +Ascend Extension for PyTorch插件的使用许可证,具体请参见[LICENSE](LICENSE)文件。 |
| 299 | 101 | ||
| 300 | -| 文档名称 | 文档链接 | | 102 | +## 致谢 |
| 301 | -| -------------------------- | ------------------------------------------------------------ | | ||
| 302 | -| 软件安装指南 | [参考链接](https://www.hiascend.com/document/detail/zh/Pytorch/720/configandinstg/instg/insg_0001.html) | | ||
| 303 | -| 网络模型迁移和训练 | [参考链接](https://www.hiascend.com/document/detail/zh/Pytorch/720/ptmoddevg/trainingmigrguide/PT_LMTMOG_0002.html) | | ||
| 304 | -| 算子适配 | [参考链接](https://www.hiascend.com/document/detail/zh/Pytorch/720/ptmoddevg/Frameworkfeatures/featuresguide_00021.html) | | ||
| 305 | -| PyTorch原生接口清单 | [参考链接](https://www.hiascend.com/document/detail/zh/Pytorch/720/apiref/PyTorchNativeapi/ptaoplist_000003.html) | | ||
| 306 | -| Ascend Extension for PyTorch自定义API参考 | [参考链接](https://www.hiascend.com/document/detail/zh/Pytorch/720/apiref/torchnpuCustomsapi/context/%E6%A6%82%E8%BF%B0.md) | | ||
| 307 | 103 | ||
| 308 | - | 104 | +感谢来自社区的每一个PR,欢迎贡献Ascend Extension for PyTorch插件! |
| 309 | -## 许可证 | ||
| 310 | - | ||
| 311 | -Ascend Extension for PyTorch插件使用BSD许可证。详见[LICENSE](LICENSE)文件。 | ||
| @@ -0,0 +1,154 @@ | |||
| 1 | +# PyTorch贡献指南 | ||
| 2 | + | ||
| 3 | +感谢您考虑为 PyTorch做出贡献!我们欢迎任何形式的贡献,包括错误修复、功能增强、文档改进等,甚至只是反馈。无论您是经验丰富的开发者还是第一次参与开源项目,您的帮助都是非常宝贵的。 | ||
| 4 | + | ||
| 5 | +您可以通过多种方式支持本项目: | ||
| 6 | + | ||
| 7 | +- 通过[Issues](https://gitcode.com/Ascend/pytorch/issues)反馈问题。 | ||
| 8 | +- 建议或实现新功能。 | ||
| 9 | +- 改进或扩展文档。 | ||
| 10 | +- 审查Pull Request并协助其他贡献者。 | ||
| 11 | +- 传播项目:在博客文章、社交媒体上分享PyTorch,或给仓库点个⭐。 | ||
| 12 | + | ||
| 13 | +## 寻找可贡献的问题 | ||
| 14 | + | ||
| 15 | +您可以通过查看[Issues列表](https://gitcode.com/Ascend/pytorch/issues)了解项目的发展计划和路线图。 | ||
| 16 | + | ||
| 17 | +## 贡献流程 | ||
| 18 | + | ||
| 19 | +- [贡献者许可协议](#贡献者许可协议) | ||
| 20 | +- [开发与测试](#开发与测试) | ||
| 21 | + | ||
| 22 | +### 贡献者许可协议 | ||
| 23 | + | ||
| 24 | +在您第一次向 PyTorch 社区提交代码之前,需要签署 CLA。 | ||
| 25 | + | ||
| 26 | +对于个人贡献者,详细信息请参考[ICLA 在线文档](https://www.mindspore.cn/icla)。 | ||
| 27 | + | ||
| 28 | +### 开发与测试 | ||
| 29 | + | ||
| 30 | +1. 先在GitCode平台点击仓库右上角"Fork"按钮,将仓库克隆到个人账户 | ||
| 31 | + | ||
| 32 | +2. 克隆到本地: | ||
| 33 | + | ||
| 34 | +```bash | ||
| 35 | +git clone https://gitcode.com/<your-username>/pytorch.git | ||
| 36 | +cd pytorch | ||
| 37 | + | ||
| 38 | +``` | ||
| 39 | +3. 在个人仓库进行代码开发 | ||
| 40 | + 代码开发请遵循 **[代码规范](#代码规范)** | ||
| 41 | + | ||
| 42 | +4. 代码测试 | ||
| 43 | + 参见 **[代码测试](https://gitcode.com/Ascend/pytorch/blob/master/test/README.md)** | ||
| 44 | + | ||
| 45 | +5. **[门禁异常处理](#门禁异常处理)** | ||
| 46 | + | ||
| 47 | +6. **[提交Pull Request](#提交Pull-Request)** | ||
| 48 | + | ||
| 49 | +7. **[报告问题](#报告问题)** | ||
| 50 | + | ||
| 51 | +#### 代码规范 | ||
| 52 | + | ||
| 53 | +请遵循这些风格,以使 PyTorch 易于开发、审查和维护。 | ||
| 54 | + | ||
| 55 | +- 编码指南 | ||
| 56 | + | ||
| 57 | + 请在PyTorch社区使用规统一的编码分格,python建议的编码风格是[PEP 8编码样式](https://pep8.org/),C++编码所建议的风格是 [Google C++编码指南](http://google.github.io/styleguide/cppguide.html) 。可以使用[CppLint](https://github.com/cpplint/cpplint),[CppCheck](http://cppcheck.sourceforge.net/),[CMakeLint](https://github.com/cmake-lint/cmake-lint),[CodeSpell](https://github.com/codespell-project/codespell), [Lizard](http://www.lizard.ws/),[ShellCheck](https://github.com/koalaman/shellcheck)和[pylint](https://pylint.org/)检查代码的格式,建议在您的IDE中安装这些插件。 | ||
| 58 | + | ||
| 59 | +- 单元测试指南 | ||
| 60 | + | ||
| 61 | + 请在PyTorch社区使用统一的单元测试风格, Python中建议的单元测试风格是[pytest](http://www.pytest.org/en/latest/),C++单元测试所建议的风格是 [Googletest Primer](#https://github.com/google/googletest/blob/master/docs/primer.md) 。测试用例的设计意图应该通过它的注释名称来反映。 | ||
| 62 | + | ||
| 63 | +- 重构指南 | ||
| 64 | + | ||
| 65 | + 我们鼓励开发人员重构我们的代码以消除[代码异味](https://en.wikipedia.org/wiki/Code_smell)。所有的代码都应该符合编码风格和测试风格的需求,重构代码也不例外。当您收到警告时,您必须重构要合并的代码。 | ||
| 66 | + | ||
| 67 | +#### 门禁异常处理 | ||
| 68 | + | ||
| 69 | +门禁异常主要包含如下几种,请根据相关提示解决异常问题。 | ||
| 70 | + | ||
| 71 | +- 编译异常 | ||
| 72 | + | ||
| 73 | + 请检查代码编译失败的原因,解决问题后重新编译即可。 | ||
| 74 | + | ||
| 75 | +- 静态检查异常(代码Bug、代码漏洞、代码异味) | ||
| 76 | + | ||
| 77 | + 请依照提示查找代码中的异常并解决。 | ||
| 78 | + | ||
| 79 | +- UT测试未通过 | ||
| 80 | + | ||
| 81 | + 请根据提示,查找测试用例不通过项并检查原因,解决后再测试。 | ||
| 82 | + | ||
| 83 | +#### 提交Pull Request | ||
| 84 | + | ||
| 85 | +1. 本地创建分支。 | ||
| 86 | + | ||
| 87 | + 为了避免多个分支之间的不一致,建议创建新的分支进行开发: | ||
| 88 | + | ||
| 89 | + ``` | ||
| 90 | + git checkout -b {new_branch_name} origin/master | ||
| 91 | + ``` | ||
| 92 | + | ||
| 93 | + 以master分支为例,PyTorch可能会根据需要创建版本分支和下游开发分支,请先修复上游的bug。然后就可以随意更改代码了。 | ||
| 94 | + | ||
| 95 | +2. 将代码推送到远程仓库。 | ||
| 96 | + | ||
| 97 | + 更新代码后,您需要以正式的方式推送更新: | ||
| 98 | + | ||
| 99 | + ``` | ||
| 100 | + git add . | ||
| 101 | + git status # Check the update status | ||
| 102 | + git commit -m "Your commit title" | ||
| 103 | + git commit -s --amend #Add the concrete description of your commit | ||
| 104 | + git push origin {new_branch_name} | ||
| 105 | + ``` | ||
| 106 | + | ||
| 107 | +3. 创建Pull Request | ||
| 108 | + | ||
| 109 | + 在GitCode上创建Pull Request | ||
| 110 | + 根据`.gitcode/PULL_REQUEST_TEMPLATE.md`中的规范模板,完整填写: | ||
| 111 | + - 合入来源 | ||
| 112 | + - 修改方案 | ||
| 113 | + - 资料变更 | ||
| 114 | + - 接口变更 | ||
| 115 | + - 功能验证 | ||
| 116 | + - CheckList | ||
| 117 | + 确认信息完整准确后提交Pull Request,等待代码审查 | ||
| 118 | + | ||
| 119 | +#### 报告问题 | ||
| 120 | + | ||
| 121 | +为项目做出贡献的一个好方法是在遇到问题时发送详细报告。我们总是很感激写得很好、彻底的错误报告,并会由此感谢您! | ||
| 122 | + | ||
| 123 | +报告问题时,请参考以下格式: | ||
| 124 | + | ||
| 125 | +- 您使用的是什么版本的环境 (pytorch、os、python 等)? | ||
| 126 | +- 这是错误报告还是功能请求? | ||
| 127 | +- 什么样的问题,添加标签以在问题仪表板上突出显示。 | ||
| 128 | +- 发生了什么? | ||
| 129 | +- 您预计会发生什么? | ||
| 130 | +- 如何重现它?(尽可能最小和精确。) | ||
| 131 | +- 给审稿人的特别说明? | ||
| 132 | + | ||
| 133 | +问题咨询: | ||
| 134 | + | ||
| 135 | +- 如果您发现一个未解决的问题,而这正是您要解决的问题,请对该问题发表一些评论,告诉其他人您将负责它。 | ||
| 136 | +- 如果问题已打开一段时间,建议贡献者在解决该问题之前进行预检查。 | ||
| 137 | +- 如果您解决了自己报告的问题,则还需要在关闭该问题之前让其他人知道。 | ||
| 138 | +## 社区准则 | ||
| 139 | + | ||
| 140 | +### 行为准则 | ||
| 141 | + | ||
| 142 | + 我们致力于为所有参与者提供一个友好、安全和包容的环境。参与本项目即表示您同意: | ||
| 143 | + | ||
| 144 | + - 尊重不同的观点和经验 | ||
| 145 | + - 接受建设性的批评 | ||
| 146 | + - 关注对社区最有利的事情 | ||
| 147 | + - 对其他社区成员表示同理心 | ||
| 148 | + | ||
| 149 | +### 沟通渠道 | ||
| 150 | + | ||
| 151 | +- **Issues**:用于报告Bug、提出功能建议和讨论技术问题 | ||
| 152 | +- **Pull Requests**:用于代码审查和讨论具体实现 | ||
| 153 | + | ||
| 154 | + | ||