贡献指南¶
感谢您有兴趣为 MindNLP 做出贡献!本指南将帮助您了解开发流程。
开发环境配置¶
1. Fork 并克隆仓库¶
# 在 GitHub 上 Fork 仓库,然后克隆您的 Fork
git clone https://github.com/YOUR_USERNAME/mindnlp.git
cd mindnlp
# 添加上游远程仓库
git remote add upstream https://github.com/mindspore-lab/mindnlp.git
2. 创建开发环境¶
# 创建并激活 conda 环境
conda create -n mindnlp python=3.10
conda activate mindnlp
# 安装 MindSpore(根据您的平台选择合适的版本)
# 参见:https://www.mindspore.cn/install
# 以开发模式安装 MindNLP
pip install -e .
# 安装开发依赖
pip install -r requirements/dev_requirements.txt
3. 保持 Fork 更新¶
git fetch upstream
git checkout master
git merge upstream/master
代码风格指南¶
Python 风格¶
- 遵循 PEP 8 规范
- 使用 4 个空格缩进(不使用制表符)
- 最大行长度:120 个字符
- 使用有意义的变量和函数名
文档字符串¶
使用 Google 风格的文档字符串:
def function_name(param1, param2):
"""函数的简短描述。
如需要可添加更详细的描述。
Args:
param1 (type): param1 的描述。
param2 (type): param2 的描述。
Returns:
type: 返回值的描述。
Raises:
ExceptionType: 何时会抛出此异常。
"""
pass
导入顺序¶
按以下顺序组织导入:
- 标准库导入
- 第三方库导入
- MindSpore 导入
- MindNLP 导入
import os
import sys
import numpy as np
import mindspore
from mindspore import ops
from mindnlp.transformers import AutoModel
测试¶
运行测试¶
# 运行特定测试文件
python tests/run_test.py -vs tests/transformers/tests/models/bert/test_modeling_bert.py
# 运行特定测试用例
python tests/run_test.py -vs tests/transformers/tests/models/bert/test_modeling_bert.py::BertModelTest::test_model
编写测试¶
- 将测试放在
tests/目录中 - 使用 pytest 编写测试用例
- 确保测试可重复且相互独立
Pull Request 流程¶
1. 创建功能分支¶
git checkout -b feature/your-feature-name
2. 进行更改¶
- 编写清晰、文档完善的代码
- 为新功能添加测试
- 确保现有测试通过
3. 提交更改¶
编写清晰、描述性的提交信息:
git add .
git commit -m "feat: 添加新模型架构支持
- 实现了 NewModel 类
- 添加了分词器支持
- 包含单元测试"
遵循约定式提交格式:
- feat: 新功能
- fix: Bug 修复
- docs: 文档更改
- test: 测试添加/更改
- refactor: 代码重构
4. 推送并创建 PR¶
git push origin feature/your-feature-name
然后在 GitHub 上创建 Pull Request,包含:
- 描述更改的清晰标题
- 更改内容和原因的描述
- 相关 issue 的引用
5. 代码审查¶
- 及时响应审查反馈
- 在新提交中进行请求的更改
- 保持 PR 专注于单个功能/修复
目录结构¶
mindnlp/
├── src/
│ ├── mindnlp/ # MindNLP 主要源代码
│ │ ├── transformers/ # Transformer 模型
│ │ ├── engine/ # 训练引擎
│ │ └── dataset/ # 数据集工具
│ └── mindtorch/ # PyTorch 兼容层
├── tests/ # 测试文件
├── docs/ # 文档
└── examples/ # 示例脚本
获取帮助¶
- 提交 issue 报告 bug 或功能请求
- 加入 MindSpore NLP SIG 参与讨论
- 创建新 issue 前请先查看现有 issue
许可证¶
通过为 MindNLP 做出贡献,您同意您的贡献将根据 Apache 2.0 许可证进行许可。