reasoning-gym/CONTRIBUTING.md
2025-02-08 15:59:44 +01:00

77 lines
3.3 KiB
Markdown

# Contributing to Reasoning Gym
Thank you for your interest in contributing to Reasoning Gym! This document provides guidelines and instructions for contributing to the project.
## Development Setup
1. Clone the repository:
```bash
git clone https://github.com/open-thought/reasoning-gym.git
```
2. Create a virtual environment (using conda):
```bash
conda create --name reasoning_gym python=3.11 -y
conda activate reasoning_gym
```
3. Install the package in editable mode:
```bash
pip install -e .
```
4. Install development dependencies:
```bash
pip install -r requirements-dev.txt
```
## Creating Procedural Datasets
When creating new datasets, please follow these guidelines:
1. **Focus on Complex Problems**:
- Prioritize problems where guessing has a low probability of success (e.g., number multiplication)
- Avoid tasks with small answer sets (true/false, multiple-choice) as they create noisy rewards for RL
2. **Implementation Requirements**:
- Create a configuration class
- Derive your dataset class from `ProceduralDataset` (see [dataset.py](https://github.com/open-thought/reasoning-gym/blob/main/reasoning_gym/dataset.py))
- Include comprehensive unit tests
- Return dictionary items with keys: `"question"`, `"answer"`, and `"metadata"`
- For datasets with multiple correct answers, override the `score_answer()` method (return value range: [0, 1])
3. **Getting Started**:
- Review an example implementation:
- Configuration & dataset class: [chain_sum.py](reasoning_gym/arithmetic/chain_sum.py)
- Unit tests: [test_chain_sum.py](https://github.com/open-thought/reasoning-gym/blob/main/tests/test_chain_sum.py)
- Write clear question prompts that an average human can understand and answer correctly
## Pull Request Process
1. **Fork and Clone**:
- [Fork the repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo)
- Clone your fork locally
- Read more about [forks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks)
2. **Create a Feature Branch**:
- Work on a [new branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository)
- Keep changes focused and minimal
3. **Code Quality**:
- Install pre-commit hooks: `pre-commit install`
- Run `pre-commit run -a` before committing
- When using AI coding assistants (cursor, aider, etc.), ensure proper formatting
4. **Submit Your PR**:
- [Create a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)
- [Request review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)
- Do not include changes to `GALLERY.md` (it's updated automatically)
5. **Review Process**:
- Address reviewer feedback promptly
- Keep discussions constructive
- Once approved, your changes will be merged into `main`
## Need Help?
Join our community discussion in the `#reasoning-gym` channel on the [GPU-Mode Discord server](https://discord.gg/gpumode).