Philipp Moritz, Tyler Griggs, and the SkyRL Team
🗓️ Posted: January 1, 2026
<aside>
We are happy to announce SkyRL tx v0.2.1!
SkyRL tx is a unified training and inference engine that implements the Tinker API and allows people to set up a Tinker-like service running on their own hardware.
In this release, we add FSDP support and multi-node support, custom loss functions, Llama 3 support and a lot of other new features and enhancements.
</aside>
<aside> 📢
We gave a talk on SkyRL tx: A unified training and inference engine at this year’s Ray Summit, check out the recording and slides.
</aside>
There are a number of new features that together enable multi-node support:
create_model, forward/backward, sample, optim_step, checkpointing) and the Jax implementation was moved to JaxBackend. Thanks Ohad for proposing and implementing this abstraction! Ohad also drafted a backend for maxtext in #788 that is not merged yet but shows the usefulness of such an abstraction. NOTE: This change also comes with a change to the CLI arguments, the backend arguments to uv run -m tx.tinker.api and uv run -m tx.tinker.engine are now moved to a new --backend-config argument. See the bottom of the blog post for a few examples.See the end of the blog post how you can run models on multiple nodes.
We added support for Llama 3 models (#657). Thanks Atem for the contribution! This is exciting not only because it closes a feature gap with Tinker but also because it is the second model architecture we support besides Qwen 3 so it can be a blueprint of how to implement more model architectures (we welcome contributions for more model architectures, and if you are interested in porting pytorch models, we also welcome an example of a model implemented with torchax).
We implemented string stop sequences (#778), mainly to make sure the tinker-cookbook examples work out of the box with the Llama 3 model.
We added support for custom loss functions (#698). This allows implementing a pretty general class of loss functions, see the Tinker docs on how to use it. Thanks Benji for the contribution!
We merged a number of performance improvements — speeding up the polling of future completion (#593), optimizing the batching of sampling requests (#769), switching off the compression of checkpoints since it slows down checkpoint creation and doesn’t contribute meaningfully to the file size (#759 and #775), thanks Adit for the fix!
We fixed properly passing through the weight_decay parameter in optim_step (#813) to improve compatibility with the Tinker API. Thanks John for the contribution!
We implemented top_k sampling (#680), thanks Ago for the contribution!
We implemented API support for listing training runs (/api/v1/training_runs) (#720), thanks Thejas for the contribution!
We implemented initial support for migrations for the database (#580). Going forward we are planning to provide migrations out of the box using this framework so people who run SkyRL tx as a service can upgrade the database without losing data. Thanks Atem for the contribution!
As always, we welcome more contributions!
We warmly welcome contributions that implement more functionality of the Tinker API, adding support for more models, performance optimizations, and any of the currently open tasks here, anything on the roadmap below or really anything you would like to see implemented. Also if you are interested in contributing to the SkyRL Tinkerification effort let us know!
Since we haven’t published a roadmap for a little while, it is time to outline some higher level directions we are planning to work on: