Clone the repository:
git clone https://github.com/OpenPipe/ART.git
cd ARTInstall the dependencies:
uv syncThis project uses ruff for both code formatting and linting. Before submitting a pull request, please ensure your code passes all quality checks:
# Run all code quality checks (formatting, linting, and dependency sync)
./scripts/run_checks.sh
# Automatically fix any issues that can be fixed
./scripts/run_checks.sh --fixThe run_checks.sh script will:
- Check code formatting with ruff
- Check for linting issues with ruff
- Verify that
uv.lockis in sync withpyproject.toml
These checks are automatically run in CI for all pull requests. If your PR fails these checks, simply run ./scripts/run_checks.sh --fix locally and commit the changes.
To create a new release:
-
Review merged PRs since the last release:
- Go to the pull requests page
- Review PRs merged since the last release to understand what changed
- Note any breaking changes, new features, or important bug fixes
-
Create a draft release:
- Go to Actions
- Click "Run workflow"
- Select the version bump type:
patch: Bug fixes and minor changes (0.3.13 → 0.3.14)minor: New features and non-breaking changes (0.3.13 → 0.4.0)major: Breaking changes (0.3.13 → 1.0.0)
-
Edit the draft release notes:
- Go to the releases page
- Click "Edit" on the draft release
- Add release highlights, breaking changes, and curated changelog
- The auto-generated PR list provides a starting point, but manual curation improves clarity
-
Finalize the release:
- Review and merge the automatically created release PR
- This will automatically:
- Create the git tag
- Publish the curated release notes
- Build and publish the package to PyPI
Then follow the SkyPilot or Local Training instructions below.
Copy the .env.example file to .env and set the environment variables:
cp .env.example .envEnsure you have a valid SkyPilot cloud available:
uv run sky checkLaunch a cluster:
./scripts/launch-cluster.sh # you can pass any sky launch arguments hereMake sure you are on a machine with at least one H100 or A100-80GB GPU. Machines equipped with lower-end GPUs may work, but training will be slower.
You can now SSH into the art cluster, using either VSCode or the command line.
Simply run:
ssh art-
Install the Remote-SSH extension on your local machine
- Open the extensions view by clicking on the Extensions icon in the Activity Bar on the left.
- Search for "Remote-SSH" and install it.
-
Configure default extensions for your remote host
- In your VSCode settings, find "Remote.SSH: Default Extensions"
- Add the following extensions:
ms-python.pythonms-toolsai.jupytereamodio.gitlenscharliermarsh.ruff
-
Connect to the host
- Open the command palette and run "Remote-SSH: Connect to Host..."
- Select
art
-
Set up the host
- Click "Open Folder"
- Select "sky_workdir"
- Click OK
- Click "Open Folder"
-
Run a notebook
- Find
2048.ipynband run it!
- Find
Now you can run the "2048" example in /examples/2048/2048.ipynb.
It has been tested with the Qwen/Qwen2.5-14B-Instruct model on a 1xH100 instance.
You can monitor training progress with Weights & Biases at https://wandb.ai/your-wandb-organization/agent-reinforcement-training.
You should see immediate improvement in val/reward after one step.
If you run into any issues, the training output is set to maximum verbosity. Copying the outputs such as the vLLM or torchtune logs, or copying/screenshotting the plotted packed tensors, may help me debug the issue.
When you're done, you can tear down the cluster with:
uv run sky down art