Contributing to MindNLP¶
Thank you for your interest in contributing to MindNLP! This guide will help you get started with the development process.
Development Setup¶
1. Fork and Clone¶
# Fork the repository on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/mindnlp.git
cd mindnlp
# Add upstream remote
git remote add upstream https://github.com/mindspore-lab/mindnlp.git
2. Create a Development Environment¶
# Create and activate a conda environment
conda create -n mindnlp python=3.10
conda activate mindnlp
# Install MindSpore (choose the appropriate version for your platform)
# See: https://www.mindspore.cn/install
# Install MindNLP in development mode
pip install -e .
# Install development dependencies
pip install -r requirements/dev_requirements.txt
3. Keep Your Fork Updated¶
git fetch upstream
git checkout master
git merge upstream/master
Code Style Guidelines¶
Python Style¶
- Follow PEP 8 conventions
- Use 4 spaces for indentation (no tabs)
- Maximum line length: 120 characters
- Use meaningful variable and function names
Docstrings¶
Use Google-style docstrings for functions and classes:
def function_name(param1, param2):
"""Short description of function.
Longer description if needed.
Args:
param1 (type): Description of param1.
param2 (type): Description of param2.
Returns:
type: Description of return value.
Raises:
ExceptionType: When this exception is raised.
"""
pass
Import Order¶
Organize imports in the following order:
- Standard library imports
- Third-party imports
- MindSpore imports
- MindNLP imports
import os
import sys
import numpy as np
import mindspore
from mindspore import ops
from mindnlp.transformers import AutoModel
Testing¶
Running Tests¶
# Run specific test file
python tests/run_test.py -vs tests/transformers/tests/models/bert/test_modeling_bert.py
# Run specific test case
python tests/run_test.py -vs tests/transformers/tests/models/bert/test_modeling_bert.py::BertModelTest::test_model
Writing Tests¶
- Place tests in the
tests/directory - Use pytest for writing test cases
- Ensure tests are reproducible and independent
Pull Request Process¶
1. Create a Feature Branch¶
git checkout -b feature/your-feature-name
2. Make Your Changes¶
- Write clean, well-documented code
- Add tests for new functionality
- Ensure existing tests pass
3. Commit Your Changes¶
Write clear, descriptive commit messages:
git add .
git commit -m "feat: Add support for new model architecture
- Implemented NewModel class
- Added tokenizer support
- Included unit tests"
Follow conventional commit format:
- feat: for new features
- fix: for bug fixes
- docs: for documentation changes
- test: for test additions/changes
- refactor: for code refactoring
4. Push and Create PR¶
git push origin feature/your-feature-name
Then create a Pull Request on GitHub with:
- Clear title describing the change
- Description of what was changed and why
- Reference to any related issues
5. Code Review¶
- Respond to review feedback promptly
- Make requested changes in new commits
- Keep the PR focused on a single feature/fix
Directory Structure¶
mindnlp/
├── src/
│ ├── mindnlp/ # Main MindNLP source code
│ │ ├── transformers/ # Transformer models
│ │ ├── engine/ # Training engine
│ │ └── dataset/ # Dataset utilities
│ └── mindtorch/ # PyTorch compatibility layer
├── tests/ # Test files
├── docs/ # Documentation
└── examples/ # Example scripts
Getting Help¶
- Open an issue for bugs or feature requests
- Join the MindSpore NLP SIG for discussions
- Check existing issues before creating new ones
License¶
By contributing to MindNLP, you agree that your contributions will be licensed under the Apache 2.0 License.