Together Post-Training
Together Post-Training is a managed service from Together AI for customizing open-weight large language models with reinforcement learning (RL) and supervised fine-tuning (SFT). The customer writes the training loop in Python, including the data, reward functions, environments and loss, and calls the service at each step; Together AI runs the trainer, the rollout (sampling) engines and the weight synchronization between them on dedicated NVIDIA B200 GPUs.[1][3][4] Together AI opened the service to all customers on 19 October 2026, after a beta that, according to an early customer, began in April.[1][2] The service bills per GPU-minute rather than per token, offers LoRA and (for some models) full-weight training, and includes a client that runs scripts written for Tinker, the training API from Thinking Machines Lab, after a one-line import change.[1][8][11]
Overview
Together AI already sold a job-based fine-tuning service, in which the customer uploads a dataset, submits a job and lets Together run the whole loop. Post-Training is the lower-level alternative. Its documentation describes it as "more powerful but more complex": the customer's code drives the loop and the remote GPUs run the heavy steps (forward and backward passes, optimizer steps and sampling).[3] The table below summarizes the differences as Together's documentation lists them.[3]
| Fine-tuning service | Post-Training | |
|---|---|---|
| Who runs the loop | Together AI runs tokenization, batching, loss, learning-rate schedule and checkpoints | The customer's code drives the loop; remote GPUs run the heavy steps |
| Billing | Per token processed | Per GPU-minute |
| Data | JSONL in fixed formats, or pre-tokenized Parquet | Token sequences and loss masks the customer builds, changeable mid-run |
| Mid-run control | None beyond cancelling or early stopping | Full: inspect per-step metrics, change the learning rate, reshuffle data, stop on custom logic |
| Loss functions | Built-in SFT and DPO objectives | Built-in cross-entropy and policy-gradient losses, plus custom losses computed in the customer's code |
| Reinforcement learning | Not available | GRPO and related policy-gradient methods, single-turn and multi-turn |
The training loop can run on any machine with the Together SDK installed, including a laptop with no GPU.[4] In Together's launch post, the company argued that many organizations are now training specialist models to match frontier-model quality at lower cost, and that RL infrastructure has become complex enough that companies "never start it, or start and stall".[1]
Launch
Together AI published the launch post on its blog and as an X article on 19 October 2026, under the title "Together Post-Training: frontier-grade model shaping, the way that fits you". The blog version credits 26 authors.[1][2] Unite.AI and TokenPost reported the launch the same day, and Data Phoenix followed on 20 October.[19][20][21]
The service existed in earlier form. An archived copy of Together's "Custom Training" page from 5 August 2026 carried the heading "Reinforcement Learning - now in beta", described "RL and SFT, full-weight and LoRA, on frontier open models", and asked visitors to request access.[22] In the launch post, Adit Jain of Collinear AI said his team had worked with Together "since the launch of its Post-Training beta in April".[1] Data Phoenix, by contrast, reported that Together had introduced the underlying custom-training system in a limited closed beta on 23 July.[21]
The launch post quoted three early-access customers:[1]
| Customer | Person quoted | Reported use |
|---|---|---|
| Deel | Anthony Li, Associate Director of Data Science | RL experiments, with "up to five concurrent RL experiments on the same GPU capacity" |
| Jack & Jill | Oliver Normand, Founding Engineer | Post-trained a model that predicts which candidates a hiring manager will want to meet; said it matched a closed-source model's quality in offline evaluations using a cheaper open-source model |
| Collinear AI | Adit Jain, Researcher | Agentic RL runs, using the service since the beta |
Together also offers forward-deployed engineers who work with customers on model selection, data, training environments, evaluation and deployment.[1]
Architecture and concepts
A run is split between the customer's code and a model resource on Together's GPUs. The model resource holds the base model and does the heavy computation; the customer's code loads data, builds batches, scores outputs and decides when to stop.[4]
| Concept | What it is |
|---|---|
| Model resource | A set of GPUs with the frozen base model loaded. The customer chooses base model, training mode (LoRA or full-weight), GPU type, number of generator replicas and optimizer; all are fixed at creation. Billed per minute while ready.[4][14] |
| Training session | One set of trainable weights attached to a resource: a LoRA adapter, or the full weights on a full-weight resource. Holds the weights, optimizer state and step counter.[4] |
| Trainer | One group of GPUs per resource, with the model sharded across them. Runs every forward_backward, optim_step and checkpoint save for every session on the resource.[4] |
| Generator replica | A unit of sampling capacity that serves sample calls. Replicas are independent, so sampling throughput scales with the replica count. SFT and DPO run with zero replicas.[4] |
| Inference checkpoint | A snapshot of the weights for download or deployment, registered in the project's model registry.[4] |
| Training checkpoint | The full training state (weights, optimizer moments, step counter), used to resume or fork a run.[4] |
One RL step in the documentation's description has four service calls around the customer's own scoring: sample_batch generates completions, the customer's code scores them, forward_backward computes the loss and gradients, optim_step updates the weights, and weights_sync publishes the new weights to the generator replicas so the next step samples from the updated policy. SFT and DPO skip sampling and weight sync.[3][4] The trainer and the generators hold separate copies of the weights, and the generators' copy only changes on weights_sync.[4]
Because the base weights are frozen in LoRA mode, several LoRA sessions can share one resource, each with its own data, hyperparameters and checkpoints, at the cost of a single resource. A full-weight resource hosts a single session.[4][6] Sessions are free; only the resource is billed.[8] A resource that goes one hour without an operation stops automatically and its sessions expire.[14]
Optimizer choice is Adam by default. The Muon optimizer is available only for full-weight training.[6][14]
Supported methods and losses
The documentation lists three training methods: SFT on example responses, direct preference optimization (DPO) on preference pairs, and GRPO against a reward function the customer writes. GRPO can also train tool-using agents over multi-turn episodes.[6] For SFT and GRPO the service runs a built-in loss; DPO is implemented as a custom loss in the customer's process.[6]
The built-in losses, as listed in the GRPO documentation, are:[7]
| Loss type | Description in Together's docs |
|---|---|
LOSS_TYPE_CROSS_ENTROPY | Weighted next-token cross-entropy, for SFT |
LOSS_TYPE_GRPO | GRPO; also GSPO with a sequence-level ratio setting. Default clip range [0.8, 1.2] |
LOSS_TYPE_PPO | Clipped surrogate with a token-level ratio and no KL term |
LOSS_TYPE_CISPO | Clipped ratio applied as a detached coefficient, so no token's gradient is zeroed. Default clip range [0, 4] |
LOSS_TYPE_DPPO | Drops tokens whose probability moved past set thresholds in probability space (both default to 0.15) and trains the rest with the plain importance-sampling gradient |
LOSS_TYPE_DRO | Policy gradient plus a quadratic log-ratio penalty |
LOSS_TYPE_IMPORTANCE_SAMPLING | Unclipped importance-weighted policy gradient |
GRPO was introduced in DeepSeek's DeepSeekMath paper as a variant of proximal policy optimization,[18] and CISPO was proposed in the MiniMax-M1 paper, which describes it as clipping importance sampling weights rather than token updates.[17]
For objectives the built-in losses do not cover, the customer can compute a custom loss locally in PyTorch. The service returns per-token log-probabilities from a forward call, the customer's code computes the loss and its gradient with respect to those log-probabilities, and custom_forward_backward sends the gradients back to the trainer, which backpropagates them through the model. Because the forward pass runs twice, a custom-loss step takes longer than a built-in one. A custom loss sees only the log-probability of each target token, so objectives that need the full vocabulary distribution (such as an exact entropy bonus) cannot be expressed this way.[24]
Synchronous and asynchronous RL
The default is lockstep, in which rollouts finish before training, leaving the generators idle while the trainer works and vice versa. Asynchronous mode overlaps rollout collection with optimizer steps. A max_steps_off_policy setting bounds how many optimizer steps old a rollout group may be, and older groups are dropped as stale. Three weight-sync modes exist: synchronous, background publish, and pipeline; pipeline mode requires full-weight training.[7] Together's product page says async samples are "one step behind, and the loss corrects for the gap", and recommends starting with sync.[10]
Supported models
The launch post named Muse Spark Open, GLM 5.3, Kimi K3 and Qwen 3.8-27B as launch models and said more would follow.[1] The documentation catalog, which syncs daily from the service's supported-models endpoint, listed seven B200 configurations as of 30 October 2026:[5]
| Model | Training modes | Max context (LoRA) | Max LoRA rank | LoRA sessions per resource |
|---|---|---|---|---|
| Qwen3.8 27B | LoRA, full (full-weight context 131,072) | 262,144 | 64 | 5 |
| Qwen3.6 35B A3B | LoRA | 262,144 | 64 | 5 |
| Kimi K3 | LoRA | 163,840 | 32 | 3 |
| GLM-5.3 | LoRA | 159,744 | 32 | 3 |
| MiniMax M3 | LoRA | 262,144 | 32 | 3 |
| MiniMax M3.1 Flash | LoRA | 262,144 | 32 | 3 |
| Muse Spark Open 816B A42B | LoRA | 159,744 | 32 | 1 |
The documentation says the service runs only on B200 GPUs for now, with support for B300 and GB300 GPUs to "be added soon", and supports text models only.[5] Together's own materials did not agree on every detail: the product page labels Qwen3.6 35B A3B as supporting full-weight training, while the documentation catalog lists it as LoRA only, a mismatch Data Phoenix also noted.[5][10][21]
Training-inference alignment
In RL for language models, the policy that generates rollouts (an inference engine) and the policy being trained (a training engine) are supposed to be the same model, but differences in numerics between the two stacks can make the same weights produce slightly different probabilities. Together's launch post says such mismatches can make a run "underperform or even collapse", and that the service removes "numerous sources of policy drift" using standard techniques including Rollout Routing Replay as well as its own optimizations.[1]
Rollout Routing Replay (R3) comes from the 2025 paper "Stabilizing MoE Reinforcement Learning by Aligning Training and Inference Routers" by Wenhan Ma and six co-authors, including Luo Fuli. The paper reports that in mixture-of-experts models the router can pick different experts at inference and training time, and even across repeated forward passes. R3 records the routing distributions from the inference engine and replays them during training; the authors report that it reduces the training-inference KL divergence and stabilizes RL training.[16] Together's product page describes the same idea in its own terms: the trainer matches the generator's output precision, replays its expert choices on supported MoE models, and corrects for samples from older model versions in every RL loss.[10]
A related problem appears at deployment. Dedicated inference serves GLM-5.3 and Kimi K3 in 4-bit formats, while training does not run on those weights, so an adapter does not exactly match the deployed model. Together's FP4 preparation job merges the adapter into the BF16 weights first, then calibrates and quantizes the merged model, which the documentation says takes about 6 hours for GLM-5.3 and about 18 hours for Kimi K3.[13] See FP4 for background on the format.
Deployment after training
Each LoRA inference checkpoint is registered as a model in the customer's project. Several adapters can be attached to one multi-LoRA deployment of their base model on Together's dedicated inference, with each request choosing an adapter by name; attaching an adapter to a running deployment "usually takes under a minute", against 20 minutes or more to provision a new deployment, according to the documentation. The winning adapter can then be served on its own deployment, merged into the base model.[12] Trained weights can also be downloaded as a standard Hugging Face model directory and served elsewhere.[4]
Tinker compatibility
The Together Python SDK includes a client compatible with Tinker, which Thinking Machines Lab describes as "a cloud training API" in which users "write training loops locally" while Tinker "handles the GPUs".[23] Replacing import tinker with import together.post_training.tinker as tinker lets an existing Tinker script run on Together, with the base model changed if needed because the two services host different model catalogs.[1][11] The documentation lists behavioural differences, among them that sampling clients are not snapshots of earlier weights, that policy-gradient losses accept only 0 or 1 weights, that loss inputs must be one-dimensional (so top-K distillation is unsupported), that the maximum LoRA rank is 64 on Qwen models and 32 on others, and that the Tinker client works only in LoRA mode.[6][11]
The open-source post-training cookbook on GitHub contains recipes for GRPO on GSM8K, DeepMath and Game of 24, a multi-turn tool-use environment, SFT on No Robots, DPO on HelpSteer3 as a custom-loss demo, and multi-LoRA hyperparameter sweeps.[15]
Availability and pricing
Post-Training bills each model resource per GPU-minute while it is in the ready state; queueing, startup and shutdown are not billed. The rate is the per-GPU-hour price multiplied by the number of GPUs, which depends on the model, the training mode and the number of generator replicas.[8] Together's pricing page listed the HGX B200 at $11.00 per GPU-hour, with a promotional $9.00 rate "valid until 12/14/2026".[9] The blog post describes the promotion as lasting "the first eight weeks"; the X article version of the same post said "six weeks", and Unite.AI repeated the six-week figure.[1][2][19]
The documentation gives a worked example: Qwen3.8-27B with LoRA and one generator replica on B200 uses four trainer GPUs and four generator GPUs, for $88 per hour at $11 per GPU-hour, or half that with no generator replica.[8] Creating a resource requires a credit balance of at least $100. If a ready resource fails, Together refunds the last 3 hours of runtime for a LoRA resource or the last 6 hours for a full-weight resource.[8]
Together states that per-GPU billing becomes cheaper than token-based pricing "as soon as you scale up the experiments".[1] Data Phoenix noted that the official launch materials did not include an independent benchmark for Together's cost and speed claims.[21]
Context
Together Post-Training exposes low-level training primitives (forward-backward, optimizer step, sampling, weight sync) instead of a fixed fine-tuning job. Tinker, from Thinking Machines Lab, uses the same split between a training loop written locally and GPUs run by the provider, and Together ships a Tinker-compatible client alongside its own SDK.[3][11][23] Within Together AI, the service complements the job-based fine-tuning product, and its checkpoints deploy directly to Together's dedicated inference.[3][12] See post-training and fine-tuning for the general techniques.
Continue reading
- LoRA (Low-Rank Adaptation)Low-Rank Adaptation, usually abbreviated LoRA, is a parameter-efficient fine-tuning method for adapting a pre-trained model.Mentioned 24 times above
- Tinker (Thinking Machines Lab)Tinker is a fine-tuning API for open-weight language models, built by Thinking Machines Lab, the artificial intelligence startup founded by former OpenAI chief technology officer Mira Murati.Mentioned 11 times above
- Together AITogether AI is an AI cloud platform for running, fine-tuning, and training open-source foundation models at high performance and low cost.Mentioned 7 times above
- Reinforcement learningReinforcement learning (RL) is a branch of machine learning in which an agent learns to make decisions by taking actions in an environment to maximize a cumulative reward signal, discovering good behavior…Mentioned 4 times above
- Thinking Machines LabThinking Machines Lab is an American artificial intelligence research and product company, headquartered in San Francisco, California, that was founded in February 2025 by Mira Murati, the former chief…Mentioned 3 times above
- Large Language ModelA large language model (LLM) is an artificial intelligence system built on a transformer neural network with billions to trillions of parameters, trained on massive text corpora to predict the next token in a…Linked in the introduction
More to read
Topics:AI InfrastructureDeveloper ToolsReinforcement LearningTraining & Optimization
References
- ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 ^11 ^12 ^13Together AI. "Together Post-Training: frontier-grade model shaping, the way that fits you." Together AI blog, 19 October 2026. together.ai/...together-post-training
- ^1 ^2 ^3Together AI (@togethercompute). X article "Together Post-Training: frontier-grade model shaping, the way that fits you." 19 October 2026. x.com/...2112229246802301248
- ^1 ^2 ^3 ^4 ^5 ^6Together AI. "Overview." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...overview
- ^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 ^11 ^12 ^13Together AI. "Concepts." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...concepts
- ^1 ^2 ^3Together AI. "Supported models." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...supported-models
- ^1 ^2 ^3 ^4 ^5Together AI. "Training methods overview." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...training-methods
- ^1 ^2Together AI. "Reinforcement learning with GRPO." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...grpo
- ^1 ^2 ^3 ^4 ^5Together AI. "Pricing." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...pricing
- ^Together AI. "Pricing." Accessed 30 October 2026. together.ai/pricing
- ^1 ^2 ^3Together AI. "Together Post-Training: RL and SFT for Open Models." Product page. Accessed 30 October 2026. together.ai/post-training
- ^1 ^2 ^3 ^4Together AI. "Migrate from Tinker." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...migrate-from-tinker
- ^1 ^2Together AI. "Multi-LoRA deployment." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...multi-lora-deployment
- ^Together AI. "Prepare for FP4 inference." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...prepare-for-fp4-inference
- ^1 ^2 ^3Together AI. "Manage model resources." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...model-resources
- ^Together AI. "post-training-cookbook." GitHub repository. Accessed 30 October 2026. github.com/...post-training-cookbook
- ^Ma, Wenhan; Zhang, Hailin; Zhao, Liang; Song, Yifan; Wang, Yudong; Sui, Zhifang; Luo, Fuli. "Stabilizing MoE Reinforcement Learning by Aligning Training and Inference Routers." arXiv:2510.11370, 2025. arxiv.org/...2510.11370
- ^MiniMax. "MiniMax-M1: Scaling Test-Time Compute Efficiently with Lightning Attention." arXiv:2506.13585, 2025. arxiv.org/...2506.13585
- ^Shao, Zhihong et al. "DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models." arXiv:2402.03300, 2024. arxiv.org/...2402.03300
- ^1 ^2Unite.AI. "Together AI Launches Together Post-Training Service for Custom Models." October 2026. unite.ai/...ost-training-service-for-custom-models
- ^Yoon, Simon. "Together AI Launches Post-Training Service With Reserved GPU Capacity." TokenPost, 19 October 2026. tokenpost.com/...35231
- ^1 ^2 ^3 ^4Data Phoenix. "Together AI launches managed post-training service for open models." 20 October 2026. dataphoenix.info/...together-ai-post-training-launch
- ^Together AI. "Custom Training" page (archived 5 August 2026). Internet Archive. web.archive.org/...custom-training
- ^1 ^2Thinking Machines Lab. "Tinker Documentation." Accessed 30 October 2026. tinker-docs.thinkingmachines.ai
- ^Together AI. "Write a custom loss function." Post-training documentation. Accessed 30 October 2026. docs.together.ai/...custom-loss-functions
Improve this article
Add missing citations, update stale details, or write a clearer explanation. Anyone can edit: changes go live when you publish, and every edit is checked by an editor.
1 revision · v1 · 2,867 words · full history
Fact-checks are independent of edits: a reviewer re-verifies the article against its sources and stamps the date. How we verify
Research and drafting on this wiki are AI-assisted, under named human editorial standards. How AI is used here
Reviewer note: Launch details, supported models, pricing, training methods and customer quotes checked against Together AI's launch post, documentation and pricing page, plus Unite.AI, TokenPost and Data Phoenix coverage, October 2026.
Cite this page: AI Wiki. "Together Post-Training." aiwiki.ai, updated 29 Oct 2026, fact-checked 29 Oct 2026. CC BY 4.0. https://aiwiki.ai/wiki/together_post_training


