torchforge: PyTorch-native reinforcement learning infrastructure
PyTorch-native post-training at scale
At a glance
- What is it?
- torchforge is a PyTorch agentic RL library that separates infrastructure concerns from model concerns so that RL algorithms can be written without touching placement, fault handling or communication code. Development on the project is paused while LLM training work is consolidated in torchtitan.
- Who is it for?
- torchforge suits researchers who want to write a reinforcement learning algorithm and have placement, rollout and communication handled for them, and who value being able to replace any part of the loop. It is the wrong starting point for new work, because the README states that development in Forge has paused and that LLM training at PyTorch is being consolidated in torchtitan.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 44 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem is the infrastructure, not the algorithm
torchforge exists to separate infra concerns from model concerns so that reinforcement learning experimentation is easier. The README frames it as a PyTorch-native agentic RL library that lets you focus on algorithms rather than infrastructure, and it delivers that by providing clear RL abstractions plus one scalable implementation of them. The distinction the project draws is between two kinds of need. When you want fine-grained control over placement, over fault handling and redirecting training loads during a run, or over communication patterns, the primitives are there. When you do not want that control, you can concentrate on the RL algorithm itself. The three stated goals follow from that: usability for rapid research, isolating the RL loop from infrastructure; hackability, since every part of the loop can be modified without interacting with infrastructure; and scalability, the ability to shift between async and synchronous training and across thousands of GPUs. The hosted documentation lives at meta-pytorch.org/torchforge, and a Discord badge points to the OpenEnv community channel.
A pinned dependency set that defines the shape of the project
The pyproject.toml shows the project name is forge, described as a PyTorch native platform for post-training generative AI models, and it requires Python of at least 3.10 and under 3.13. The dependency list is where the architectural choices are visible. It pins `torch==2.9.0`, `torchdata>=0.8.0`, `torchtitan==0.2.0` and `torchmonarch==0.2.0`, requires `vllm>=0.13.0,<0.14.0`, and pulls in `torchstore`. The comment next to torchstore in the file refers to switching to a nightly build, which tells you the dependency set is expected to move. Around the core sit the usual research stack: `datasets>=2.21.0` and `tokenizers` for Hugging Face integrations, `omegaconf` for configuration, `wandb` for experiment tracking and `hf_transfer`. The optional dependency groups mirror that structure, with a dev group carrying pytest, pytest-cov, pytest-timeout, tensorboard, expecttest, anyio, pytest-asyncio and multiprocess, and a docs group with sphinx and the extensions it needs. The repository layout shows the same split: `src/` for the library, `apps/` for runnable examples, `benchmarks/`, `experimental/`, `tests/`, `scripts/`, `docs/` and `assets/`.
Installing with conda, and the ROCm path
The README states that torchforge requires PyTorch 2.9.0 with Monarch, vLLM and torchtitan, and the documented install path is conda. You create an environment on Python 3.12, activate it and run the bundled install script:
conda create -n forge python=3.12
conda activate forge
./scripts/install.shROCm users get a dedicated script with the same first two steps:
conda create -n forge python=3.12
conda activate forge
./scripts/install_rocm.shThe ROCm notes are the useful part. `PYTORCH_ROCM_ARCH` and `ROCM_VERSION` are auto-detected where possible and can be set manually, with gfx942 given as an example architecture. For ROCm 7.x, PyTorch stable 2.9.0 is not available, so the script defaults to nightly wheels, and you can override with `PYTORCH_CHANNEL=stable|nightly`. ROCm builds install Monarch with `USE_TENSOR_ENGINE=0`, which means RDMA and distributed tensor features are disabled for now, and the script accepts optional flags `--use-sudo` for system packages and `--skip-amdsmi`. The script installs system dependencies as well and uses DNF, which the README notes could be extended to other Linux distributions.
Pixi, and the uv gap the project admits to
There is a second supported path through Pixi, which the README describes as combining the benefits of uv with access to conda forge for system dependencies. The repository ships a pixi.toml manifest with build tasks, where install is the combined install all task. Installing Pixi itself is a curl one-liner:
curl -fsSL https://pixi.sh/install.sh | bashAnd the install of torchforge itself is a single command:
pixi run installThe honest note in the README is that the team is actively working on enabling pure uv installation, that conda is the recommended approach at the moment, and that uv support is not fully working but is tracked in a GitHub issue. The install script also has a system packages variant, since by default the packages installation uses conda and you can pass `--use-sudo` to install system packages on the target machine instead, for example `./scripts/install.sh --use-sudo`.
Your first run is a GRPO job on two GPUs
After installation the README gives a concrete check. Running the GRPO application with a YAML config should print output confirming that GRPO training is running, and the config is for a Qwen3 model at 1.7B:
python -m apps.grpo.main --config apps/grpo/qwen3_1_7b.yamlThe caveat is a hardware minimum, because you need at least two GPU devices. Supervised fine tuning has its own entry point in the same apps layout, this one for a Llama3 8B model:
python -m apps.sft.main --config apps/sft/llama3_8b.yamlBoth are module invocations with a config file rather than a long argument list, which is consistent with the omegaconf dependency in the project metadata. The `apps/` directory at the top level of the repository is where these live, and the same directory carries the config YAMLs, so the intended workflow is that you copy or edit a config and run the module against it.
Why the abstractions, and what the repo layout implies
The value of the abstraction layer is best read against what a research team otherwise writes itself. A typical RL training loop needs a policy under training, a rollout engine to generate experience, a way to place those rollouts across accelerators, an environment or simulator, and a training step that consumes the results. When the environment is remote or the rollout engine sits on a different cluster, the loop also needs fault handling, the ability to redirect training loads mid-run, and explicit communication patterns. The README says those primitives exist and that all parts of the RL loop can be modified without interacting with infrastructure. The `experimental/` directory is the visible consequence of that hackability claim, and the `benchmarks/` directory is the visible consequence of the scalability claim. The architecture here is a set of seams rather than a single pipeline, which is the right shape for research code and a poor shape for a product someone else has to maintain.
The development pause is the first fact to weigh
The README opens with a notice that development in Forge has paused, and that LLM training at PyTorch is being consolidated in torchtitan. That single line changes how you should read everything else. The pinned dependency set already references torchtitan, the repository publishes no GitHub releases, and the version is carried in a version.txt file at the top level rather than in release tags. For an existing user this means dependency versions will not move as they otherwise would, and the roadmap for new features is elsewhere. For someone starting a new project, the sensible read is that the functionality is moving to torchtitan rather than that it is being extended here. The library is BSD 3 licensed, though the README points out that other content linked from the repository, such as third-party data and models, carries its own licence and terms of service, so the code licence is not a blanket clearance for everything the project references.
Editorial conclusion
torchforge suits researchers who want to write a reinforcement learning algorithm and have placement, rollout and communication handled for them, and who value being able to replace any part of the loop. It is the wrong starting point for new work, because the README states that development in Forge has paused and that LLM training at PyTorch is being consolidated in torchtitan. Before you adopt it, check the pinned dependency set in pyproject.toml, in particular torch==2.9.0, torchtitan==0.2.0, torchmonarch==0.2.0 and vllm>=0.13.0,<0.14.0, and confirm the two GPU minimum for the GRPO example applies to your hardware. The last push was on 2026-09-09 and the repository publishes no GitHub releases, so versioning lives in version.txt.
Frequently asked questions
How do I install torchforge?
The documented path is conda: create a Python 3.12 environment, activate it and run `./scripts/install.sh`. ROCm users run `./scripts/install_rocm.sh` instead, and there is also a Pixi path where `pixi run install` performs the combined install.
What does the torchforge GRPO example need to run?
The README says that running `python -m apps.grpo.main --config apps/grpo/qwen3_1_7b.yaml` should print output confirming GRPO training is running, and that you need a minimum of two GPU devices.
Is torchforge still being developed?
No. The README states that development in Forge has paused and that LLM training at PyTorch is being consolidated in torchtitan. The last push was on 2026-09-09 and the repository publishes no GitHub releases.
What are the main dependencies of torchforge?
The project metadata pins torch==2.9.0, torchtitan==0.2.0, torchmonarch==0.2.0 and torchdata>=0.8.0, and requires vllm>=0.13.0,<0.14.0, along with torchstore, datasets, tokenizers, omegaconf, wandb and hf_transfer.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/meta-pytorch-torchforge)Was this useful?