已合并
docs:Modified the README and CONTRIBUTING documents. #31662
shiyunhan创建于 3月11日
docs:Modified the README and CONTRIBUTING documents. #31662
已合并
shiyunhan创建于 3月11日
共 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,请确保链接所有相关问题。
MREADME.zh.md+47-254
@@ -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- ```bash44+## 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+ 
RSECURITYNOTE.md→docs/zh/SECURITYNOTE.md+0-0
文件重命名但无更改。