已合并
docs: update CONTRIBUTING.md with formatting fixes, AI dev guide, and docs guide #36348
chenrayray创建于 5月21日
docs: update CONTRIBUTING.md with formatting fixes, AI dev guide, and docs guide #36348
已合并
chenrayray创建于 5月21日
1 个文件变更+368-114
@@ -1,145 +1,254 @@
1-# PyTorch贡献指南1+# PyTorch 贡献指南
2 2 
3-感谢您考虑为 PyTorch做出贡献!我们欢迎任何形式的贡献,包括错误修复、功能增强、文档改进等,甚至只是反馈。无论您是经验丰富的开发者还是第一次参与开源项目,您的帮助都是非常宝贵的。3+感谢您考虑为 PyTorch 做出贡献我们欢迎任何形式的贡献,包括错误修复、功能增强、文档改进等。无论您是经验丰富的开发者还是第一次参与开源项目,您的帮助都是非常宝贵的。
4 4 
5-您可以通过多种方式支持本项目:5+## 项目介绍
6 6 
7-- 通过[Issues](https://gitcode.com/Ascend/pytorch/issues)反馈问题7+PyTorch 是基于 Ascend NPU 的深度学习框架发行版,针对华为昇腾 NPU 进行了深度优化适配本项目提供与 PyTorch 官方的 API 兼容性,并充分发挥昇腾芯片的计算能力。
8-- 建议或实现新功能。
9-- 改进或扩展文档。
10-- 审查Pull Request并协助其他贡献者。
11-- 传播项目:在博客文章、社交媒体上分享PyTorch,或给仓库点个⭐。
12 8 
13-## 寻找可贡献的问题 9+### 项目架构
14 10 
15-您可以通过查看[Issues列表](https://gitcode.com/Ascend/pytorch/issues)了解项目的发展计划和路线图。11+```text
12+pytorch
13+├── docs/ # 项目文档
14+├── ci/ # CI 构建脚本
15+├── tools/ # 开发工具
16+├── cmake/ # CMake 配置
17+├── torch_npu/ # NPU 核心适配模块
18+│ ├── csrc/ # C++ 后端实现
19+│ ├── distributed/ # 分布式 Python 接口
20+│ ├── _inductor/ # Inductor 后端适配
21+│ ├── dynamo/ # Dynamo 编译器适配
22+│ ├── npu/ # NPU Python 接口
23+│ ├── profiler/ # 性能分析 Python 接口
24+│ ├── _afd/ # AFD Python 接口
25+│ ├── _logging/ # 日志模块 Python 接口
26+│ ├── asd/ # 异步检测工具
27+│ ├── contrib/ # 贡献的扩展模块
28+│ ├── onnx/ # ONNX 适配
29+│ └── optim/ # 优化器适配
30+├── third_party/ # 第三方依赖
31+├── torchnpugen/ # 代码生成工具
32+├── examples/ # 示例代码
33+└── test/ # 测试用例
34+```
35+ 
36+### 核心模块说明
37+ 
38+| 模块 | 说明 |
39+|----------------------------|--------------------------------------------------------------------------|
40+| `torch_npu/csrc/core/npu` | NPU 核心组件:事件管理(NPUEvent)、流管理(NPUStream)、图执行(NPUGraph)、设备守卫(NPUGuard)、内存管理 |
41+| `torch_npu/csrc/aten` | ATen 算子 NPU 后端:算子注册、调度、实现适配 |
42+| `torch_npu/csrc/framework` | 算子命令框架:OpCommand、Kernel 调度、算子构建器 |
43+| `torch_npu/npu/aclnn` | ACLNN 算子 Python 接口:AscendCL NPU 算子库封装 |
44+| `torch_npu/npu/amp` | 自动混合精度:GradScaler、FP16/BF16 支持 |
45+| `torchnpugen` | 代码生成工具:自动微分代码生成、代码模板 |
46+| `examples` | 示例代码:分布式通信、模型推理、ResNet 示例 |
47+| `third_party/op-plugin` | 算子插件:自定义算子实现、PyTorch 算子覆盖 |
48+| `test/npu` | NPU 功能测试:设备管理、内存分配、算子测试 |
49+ 
50+## 贡献方式
51+ 
52+我们热情期待您的加入!每一个贡献都是推动 PyTorch 进步的重要力量:
53+ 
54+- **反馈问题**:报告 Bug 或提交功能建议,帮助我们发现并解决问题
55+- **贡献代码**:提交代码修复或新功能实现,直接参与项目开发
56+- **完善文档**:改进文档或补充缺失内容,提升项目可读性
57+- **代码审查**:审查 Pull Request,帮助提升代码质量
58+- **分享传播**:在博客、社交媒体上分享项目,给仓库点个 ⭐
59+ 
60+## 贡献场景
61+ 
62+本项目热烈欢迎各种形式的贡献,期待您的参与!
63+ 
64+### 一、需求与功能建议
65+ 
66+如果您有新功能建议或性能优化想法,我们热情邀请您提交 Issue 与社区深入讨论。
67+ 
68+**Issue 类型**:需求/功能建议
69+ 
70+**需要包含的内容**
71+ 
72+- **功能背景**:该功能解决什么问题、能为用户带来什么价值
73+- **功能描述**:详细描述建议的功能
74+- **设计方案**:技术思路、关键模块设计、上下游组件关系
75+- **预期收益**:功能目标、性能指标、精度表现
76+ 
77+### 二、Bug 反馈与修复
78+ 
79+如果您发现 Bug 或文档问题,我们真诚欢迎您的反馈和修复建议。
80+ 
81+**Bug Report 格式**
82+ 
83+- **环境信息**:PyTorch 版本、OS、Python 版本、CANN 版本等
84+- **问题描述**:添加标签以便在问题仪表板上突出显示
85+- **复现步骤**:尽可能详细地描述如何重现问题
86+- **预期行为**:描述您预期发生的行为
87+- **给审稿人的特别说明**:如有任何特殊情况
88+ 
89+**修复流程**
90+ 
91+1. 在 Issue 中找到对应的 Bug 描述
92+2. 评论 `/assign` 认领该任务
93+3. 创建分支进行修复
94+4. 提交 Pull Request
95+ 
96+### 三、协助社区建设
97+ 
98+如果您有能力解决他人提出的问题,我们热烈期待您在 Issue 中分享您的解决方案。
16 99 
17## 贡献流程100## 贡献流程
18 101 
19-- [贡献者许可协议](#贡献者许可协议)
20-- [开发与测试](#开发与测试)
21- 
22### 贡献者许可协议102### 贡献者许可协议
23 103 
24在您第一次向 PyTorch 社区提交代码之前,需要签署 CLA。104在您第一次向 PyTorch 社区提交代码之前,需要签署 CLA。
25 105 
26-对于个人贡献者,详细信息请参考[ICLA 在线文档](https://www.mindspore.cn/icla)。106+对于个人贡献者,详细信息请参考 [ICLA 在线文档](https://www.mindspore.cn/icla)。
27 107 
28### 开发与测试108### 开发与测试
29 109 
30-1. 在GitCode平台点击仓库右上角"Fork"按钮,将仓库克隆到个人账户110+1. **Fork 仓库**: GitCode 平台点击仓库右上角 "Fork" 按钮,将仓库克隆到个人账户
31 111 
32-2. 克隆到本地:112+2. **克隆到本地**:
113+ 
114+ ```bash
115+ git clone https://gitcode.com/<your-username>/pytorch.git
116+ cd pytorch
117+ ```
118+ 
119+3. **创建开发分支**
120+ 
121+ ```bash
122+ git checkout -b {new_branch_name} origin/master
123+ ```
124+ 
125+4. **代码开发**:请遵循 **[代码规范](#代码规范)**
126+ 
127+5. **代码测试**:运行测试确保代码功能正常
128+ 
129+6. **门禁检查**:运行 CI 检查,确保代码通过编译、静态检查、UT 测试
130+ 
131+7. **提交 Pull Request**:提交 PR 并等待代码审查
132+ 
133+8. **社区评审**:如果涉及 patch、头文件宏、API 接口等更新,需提交社区评审
134+ 
135+### 代码合入评审要求
136+ 
137+以下类型的修改需要社区评审:
138+ 
139+- **Patch 替换**:对 PyTorch 原生接口的 patch 替换
140+- **头文件宏更新**:新增或修改宏定义
141+- **API 接口变更**:新增、修改或删除公共 API
142+- **核心组件变更**:内存管理、设备管理等核心模块的修改
143+ 
144+## 代码规范
145+ 
146+请遵循这些风格,使 PyTorch 易于开发、审查和维护。
147+ 
148+### 编码指南
149+ 
150+- **Python**:建议使用 [PEP 8 编码样式](https://pep8.org/)
151+- **C++**:建议使用 [Google C++ 编码指南](http://google.github.io/styleguide/cppguide.html)
152+ 
153+执行代码检查,可参照[本地静态检查](#本地静态检查)。
154+ 
155+### 单元测试指南
156+ 
157+- **Python**:建议使用 [pytest](http://pytest.org/en/latest/)
158+- **C++**:建议使用 [Googletest Primer](https://github.com/google/googletest/blob/master/docs/primer.md)
159+ 
160+测试用例的设计意图应该通过它的注释名称来反映。
161+ 
162+### 重构指南
163+ 
164+我们鼓励开发人员重构代码以消除代码异味。所有的代码都应该符合编码风格和测试风格的需求。
165+ 
166+## 实操指南
167+ 
168+### 环境搭建与编译
169+ 
170+**编译构建**
33 171 
34```bash172```bash
35-git clone https://gitcode.com/<your-username>/pytorch.git173+# 安装依赖并编译
36-cd pytorch174+bash ci/build.sh --python=3.10
37 175 
176+# 针对指定的 PyTorch 版本构建(支持 2.10.0 / 2.11.0 / 2.12.0)
177+# 要求环境中已安装对应版本的 PyTorch
178+bash ci/build.sh --python=3.10 --torch=2.10.0
179+ 
180+# 或使用 CMake 手动编译
181+mkdir build && cd build
182+cmake ..
183+make -j$(nproc)
38```184```
39-3. 在个人仓库进行代码开发
40- 代码开发请遵循 **[代码规范](#代码规范)**
41 185 
42-4. 代码测试186+### 编译加速技巧
43- 参见 **[代码测试](https://gitcode.com/Ascend/pytorch/blob/master/test/README.md)**
44 187 
45-5. **[门禁异常处理](#门禁异常处理)** 188+#### 使用 Ninja 构建
46 189 
47-6. **[提交Pull Request](#提交Pull-Request)** 190+默认情况下,CMake 使用 Makefile 生成器。安装 Ninja 构建系统可以显著加快编译速度。
48 191 
49-7. **[报告问题](#报告问题)** 192+本项目 `setup.py` 会自动检测系统中是否安装了 Ninja:如果环境变量 `CMAKE_GENERATOR` 设置为 `ninja`,或者 `ninja` 命令在 `PATH` 中可用,将自动使用 Ninja 作为构建系统。
50 193 
51-#### 代码规范194+```bash
195+pip install ninja
196+```
52 197 
53-请遵循这些风格,以使 PyTorch 易于开发、审查和维护198+安装 Ninja 后,编译即可自动生效,无需额外配置如果之前已经编译过,安装 Ninja 后需要先执行一次清理:
54 199 
55-- 编码指南200+```bash
201+python setup.py clean
202+```
56 203 
57- 请在PyTorch社区使用规统一的编码分格,python建议的编码风格是[PEP 8编码样式](https://pep8.org/),C++编码所建议的风格是 [Google C++编码指南](http://google.github.io/styleguide/cppguide.html) 。执行代码检查,可参照[本地静态检查](#本地静态检查)。204+#### 使用 Mold 链接器
58 205 
59-- 元测试指南206+在频繁修改个文件并重新编译的开发循环中,链接时间会占据主导。大多数 Linux 发行版自带的系统链接器(GNU `ld`)速度较慢,使用更快的链接器可以显著改善构建体验。
60 207 
61- 请在PyTorch社区使用统一单元测试风格, Python中建议的单元测试风格是[pytest](http://www.pytest.org/en/latest/),C++单元测试所建议的风格是 [Googletest Primer](#https://github.com/google/googletest/blob/master/docs/primer.md) 。例的设计意图应该通过它的注释名称来反映208+本项目`CMakeLists.txt` 已内置链接器自动检逻辑:优先检测 mold 链接器,若存在则自动启(`-fuse-ld=mold`)
62 209 
63-- 重构指南210+```bash
211+sudo apt install mold
212+# 或从源码安装:https://github.com/rui314/mold
213+```
64 214 
65- 我们鼓励开发人员构我们的代码以消除[代码异味](https://en.wikipedia.org/wiki/Code_smell)。所有的代码都应该符合码风格和测试风格的重构代码也不例外。当您收到警告时,您必须重构要合并代码215+安装后译即可自动生效。若确认链接器是否正确启用可检查编译输出中链接选项是否包含 `-fuse-ld=mold`
66 216 
67-#### 门禁异常处理217+#### 使用 CCache
68 218 
69-门禁异常主要包含如几种请根据相关提示解决异常问题219+即使依赖跟踪基于文件修改时间,仍有许多场景文件会被重复编译。使用 ccache 可以有效避免重复编译节省大量时间
70 220 
71-- 编译异常221+本项目的 `CMakeLists.txt` 已内置 ccache 自动检测逻辑,安装 ccache 后即可自动启用。但建议根据自身环境调整 ccache 配置(如缓存目录、缓存大小、压缩等)以获得最佳效果:
72 222 
73- 请检查代码编译失败的原因,解决问题后重新编译即可。223+```bash
224+sudo apt install ccache
225+# 或
226+sudo yum install ccache
227+```
74 228 
75-- 静态检查异常(代码Bug、代码漏洞、代码异味)229+验证 ccache 是否生效:连续执行两次完整编译,第二次应明显快于第一次。如果未生效,可检查 `build/CMakeCache.txt` 中的 `CMAKE_C_COMPILER_LAUNCHER` 和 `CMAKE_CXX_COMPILER_LAUNCHER` 变量是否包含 ccache:
76 230 
77- 请依照提示查找代码中的异常并解决。231+```cmake
232+//C compiler launcher
233+CMAKE_C_COMPILER_LAUNCHER:PATH=/usr/bin/ccache
78 234 
79-- UT测试未通过235+//CXX compiler launcher
236+CMAKE_CXX_COMPILER_LAUNCHER:PATH=/usr/bin/ccache
237+```
80 238 
81- 请根据提示,查找测试用例不通过项并检查原因,解决后再测试。239+#### 仅编译所需目标
82 240 
83-#### 提交Pull Request241+如果只需重新构建 `torch_npu.so`,可以在 build 目录下直接指定目标,避免全量构建:
84 242 
85-1. 本地创建分支。243+```bash
244+cd build && ninja torch_npu
245+```
86 246 
87- 为了避免多个分支之间的不一致建议创建新的分支进行开发:247+如果未安装 Ninja将 `ninja` 替换为 `make` 即可。
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 248 
139### 本地静态检查249### 本地静态检查
140 250 
141-项目使用 [lintrunner](https://github.com/suo/lintrunner) 进行静态检查,支持在本地运行与 CI 完全一致的检查项,251+项目使用 [lintrunner](https://github.com/suo/lintrunner) 进行静态检查,支持在本地运行与 CI 完全一致的检查项,包括 Python 代码风格(Flake8、Ruff、PYFMT)、C++ 格式(ClangFormat、ClangTidy)、拼写检查(Codespell)等。
142-包括 Python 代码风格(Flake8、Ruff、PYFMT)、C++ 格式(ClangFormat、ClangTidy)、拼写检查(Codespell)等。
143 252 
144#### 安装依赖253#### 安装依赖
145 254 
@@ -174,32 +283,177 @@ git diff --name-only HEAD | xargs lintrunner
174 283 
175> **提示**:`--take` 参数可指定只运行部分检查项,常用项如下:284> **提示**:`--take` 参数可指定只运行部分检查项,常用项如下:
176>285>
177-> | 代码 | 说明 |286+> | 代码 | 说明 |
178-> |------|------|287+> |---------------|----------------------------------------------------------------|
179-> | `FLAKE8` | Python 语法与风格检查 |288+> | `FLAKE8` | Python 语法与风格检查 |
180-> | `RUFF` | Python 快速 lint 与 import 排序 |289+> | `RUFF` | Python 快速 lint 与 import 排序 |
181-> | `PYFMT` | Python 代码格式化(usort + ruff-format) |290+> | `PYFMT` | Python 代码格式化(usort + ruff-format) |
182-> | `CLANGFORMAT` | C++ 代码格式化 |291+> | `CLANGFORMAT` | C++ 代码格式化 |
183-> | `CLANGTIDY` | C++ 静态分析 |292+> | `CLANGTIDY` | C++ 静态分析 |
184-> | `SPACES` | 行尾空格检查 |293+> | `SPACES` | 行尾空格检查 |
185-> | `TABS` | Tab 字符检查 |294+> | `TABS` | Tab 字符检查 |
186-> | `NEWLINE` | 文件末尾换行检查 |295+> | `NEWLINE` | 文件末尾换行检查 |
187-> | `CODESPELL` | 拼写检查如果是误报可以将误报词按照字典序添加至 `tools/linter/dictionary.txt` 后再重新检查 |296+> | `CODESPELL` | 拼写检查, 如果是误报可以将误报词按照字典序添加至 `tools/linter/dictionary.txt` 后再重新检查 |
188 297 
189更多执行命令可参照[lintrunner wiki](https://github.com/pytorch/pytorch/wiki/lintrunner)。298更多执行命令可参照[lintrunner wiki](https://github.com/pytorch/pytorch/wiki/lintrunner)。
190 299 
300+### PR 合入要求
301+ 
302+**合入检查清单**(详细要求参考 [PR 模板](./.gitcode/PULL_REQUEST_TEMPLATE.md)):
303+ 
304+- [ ] 代码编译通过
305+- [ ] 静态检查通过(CppLint、CppCheck 等)
306+- [ ] UT 测试用例通过
307+- [ ] 代码风格符合规范(PEP 8、Google C++ Style)
308+- [ ] 提交信息规范(符合 Conventional Commits)
309+- [ ] PR 标题正确使用类型标签(feat、fix、refactor、docs、test 等)
310+- [ ] 代码注释完备,正确记录错误日志
311+- [ ] 代码实现进行了返回值、空指针等校验
312+ 
313+### 功能验证指导
314+ 
315+**测试用例位置**
316+ 
317+- `test/npu/` - NPU 功能测试
318+- `test/nn/` - 网络层测试
319+- `test/distributed/` - 分布式测试
320+- `test/dynamo/` - 编译器测试
321+ 
322+**运行测试**(详细说明参考 [测试文档](./test/README.md)):
323+ 
324+```bash
325+# 安装测试依赖
326+pip3 install -r test/requirements.txt
327+ 
328+# 补全测试文件
329+cd test
330+bash get_synchronized_files.sh
331+ 
332+# 运行单个测试文件
333+python test_autocast.py
334+ 
335+# 或使用 run_test.py
336+python run_test.py -i test_autocast
337+ 
338+# 运行指定用例
339+python test_autocast.py -v -k test_autocast_nn_fp32
340+ 
341+# 运行全量 UT
342+cd ..
343+python ci/access_control_test.py --all
344+```
345+ 
346+### 门禁异常处理
347+ 
348+门禁异常主要包含如下几种,请根据相关提示解决:
349+ 
350+- **编译异常**:请检查代码编译失败的原因,解决问题后重新编译
351+- **静态检查异常**:请依照提示查找代码中的问题并解决(如代码风格、潜在 Bug 等)
352+- **UT 测试未通过**:请根据提示查找测试用例不通过项并检查原因
353+ 
354+### AI辅助研发
355+ 
356+PyTorch NPU 项目鼓励使用 AI 辅助研发与文档开发,以提升贡献效率。我们提供了昇腾官方的 agent-skills 仓库,其中包含一系列适用于昇腾生态的 AI Agent Skill 配置,可帮助您在开发中更好地利用 AI 编码助手。
357+ 
358+- **agent-skills 仓库**:[https://gitcode.com/Ascend/agent-skills](https://gitcode.com/Ascend/agent-skills)
359+- 该仓库提供了昇腾芯片场景下常用的 Skill 模板和工具,可用于代码生成、问题诊断、性能分析等场景。
360+- 仓库中的 skills 持续更新中,同时欢迎贡献新的 Skill 或对现有 Skill 提出改进建议。
361+ 
362+使用 AI 辅助研发时请注意:
363+ 
364+- AI 生成的代码仍需人工审查,确保代码质量、安全性和正确性。
365+- 遵循项目的[代码规范](#代码规范)和[单元测试指南](#单元测试指南)。
366+- 提交的代码需通过门禁检查(编译、静态检查、UT 测试等)。
367+ 
368+### 文档开发说明
369+ 
370+#### 文档承载方式
371+ 
372+本项目的文档采用 Markdown 格式,存放于仓库的 `docs/zh/` 目录下,随代码一同托管在 GitCode 平台。
373+ 
374+> **注意**:文档承载在长稳版本的分支中,如 `v2.7.1`。如果您需要查看或修改文档,请切换到对应的长稳版本分支进行操作。
375+ 
376+文档主要包含以下类目:
377+ 
378+- **安装指南**`installation_guide/`):环境准备、源码编译、pip 安装等说明。
379+- **快速入门**`quick_start/`):快速上手教程。
380+- **原生 API 文档**`native_apis/`):各版本 PyTorch 原生 API 支持情况。
381+- **框架特性指南**`framework_feature_guide_pytorch/`):NPU 图模式、Inductor、内存优化等特性说明。
382+- **环境变量参考**`environment_variable_reference/`):NPU 相关环境变量说明。
383+- **故障排除**`troubleshooting/`):常见问题及错误码分析。
384+- **安全声明**`SECURITYNOTE.md`):安全相关说明。
385+- **贡献指南**`CONTRIBUTING.md`):本文档。
386+ 
387+#### 如何提交文档
388+ 
389+文档的提交流程与代码提交一致,请参考[贡献流程](#贡献流程):
390+ 
391+1. Fork 仓库并在本地创建分支。
392+2.`docs/zh/` 目录下新增或修改对应的 Markdown 文件。
393+3. 编写文档时注意:
394+ - 使用清晰、准确的中文表述。
395+ - 代码示例需确保可运行。
396+ - 遵循现有文档的格式和风格。
397+4. 提交 Pull Request,并在 PR 描述中说明文档变更内容。
398+ 
399+#### CI 文档检查
400+ 
401+提交文档的 Pull Request 后,CI 门禁会自动对变更的 Markdown 文件进行以下检查:
402+ 
403+- **换行符检查(NEWLINE)**:确保文件末尾有且仅有一个换行符,且文件不包含多余的空行。
404+- **尾随空格检查(SPACES)**:确保每行末尾没有多余的空格。
405+- **制表符检查(TABS)**:确保文件中使用空格缩进而非制表符(Tab)。
406+- **拼写检查(CODESPELL)**:通过 codespell 工具检查英文拼写错误。
407+ 
408+## 提交 Pull Request
409+ 
410+1. **推送代码到远程仓库**
411+ 
412+ ```bash
413+ git add .
414+ git status
415+ git commit -m "Your commit title"
416+ git commit -s --amend # 添加详细描述
417+ git push origin {new_branch_name}
418+ ```
419+ 
420+2. **创建 Pull Request**
421+ 
422+在 GitCode 上创建 Pull Request,根据 [PR 模板](./.gitcode/PULL_REQUEST_TEMPLATE.md) 完整填写:
423+ 
424+- 合入来源
425+- 修改方案
426+- 资料变更
427+- 接口变更
428+- 功能验证
429+- CheckList
430+ 
431+确认信息完整准确后提交 Pull Request,等待代码审查。
432+ 
191## 社区准则433## 社区准则
192 434 
193### 行为准则435### 行为准则
194 436 
195- 我们致力于为所有参与者提供一个友好、安全包容的环境。参与本项目即表示您同意:437+我们致力于为所有参与者提供一个友好、安全包容的环境
196 438 
197- - 尊重不同的观点和经验439+- **尊重差异**:尊重不同的观点和经验,包容多元文化
198- - 接受建设性的批评440+- **开放心态**:接受建设性的批评,持续学习和进步
199- - 关注对社区最有利的事情441+- **聚焦贡献**:关注对社区最有利的事情,推动项目发展
200- - 对其他社区成员表示同理心442+- **同理心**:对其他社区成员表示同理心,互帮互助
201 443 
202### 沟通渠道444### 沟通渠道
203 445 
204-- **Issues**:用于报告Bug、出功能建议和讨论技术问题446+我们为您供多种沟通渠道,方便您参与社区互动:
205-- **Pull Requests**:用于代码审查和讨论具体实现447+ 
448+- **[Issues](https://gitcode.com/Ascend/pytorch/issues)**:用于报告 Bug、提出功能建议
449+- **[Pull Requests](https://gitcode.com/Ascend/pytorch/pulls)**:用于代码审查和讨论
450+ 
451+### 问题咨询
452+ 
453+我们热烈欢迎每一位开发者积极参与社区讨论!期待与您共同成长:
454+ 
455+- **发现未解决的问题**:欢迎在 Issue 中发表评论,展示您的解决方案
456+- **遇到长期未处理的问题**:建议在解决前进行预检查,避免重复工作
457+- **成功解决了自己报告的问题**:也请分享您的解决方案,让社区一起学习和进步
458+ 
459+有任何疑问,随时欢迎在社区中交流讨论,期待您的精彩贡献!