Skip to main content
Loops is in early access. Fill out the signup form to request access for your workspace.
Loops is a training SDK for fine-tuning and post-training large language models at long sequence lengths. It runs a dedicated trainer and sampler for any supported base model, and you drive them from a Python training loop you write: every forward pass, optimizer step, and sampling call is an API call from your script.

How Loops works

A Loops session pairs a trainer with a sampler. The trainer runs forward, backward, and optimizer steps; the sampler generates from the latest weights the trainer publishes. They scale independently, so reinforcement learning (RL) rollouts don’t compete with training for compute, and you can await weight transfers synchronously or asynchronously to stay on-policy or run bounded off-policy algorithms. Checkpoints are yours: download them as presigned URLs or deploy them to the Baseten Inference Stack through the UI, CLI, or API.

Where to go next

The Loops quickstart runs the full session lifecycle: train a step, sample from the tuned weights, list the checkpoint, and shut the trainer and sampler down. The Loops concepts page covers sessions, trainers, samplers, and checkpoints, and how weight sync keeps the trainer and sampler in step. If you’d rather bring your own container and run any training code on managed GPUs, use Jobs. Training on Baseten compares Loops and Jobs side by side. If you’re coming from Tinker, most of your code runs on Loops with one install change; see Migrate from Tinker.