Skip to main content
You create the model on the platform, run the training loop from Python, then come back to the model page to see what changed.

Create a trainable model

Open Models, select New model, and choose a trainable base. HUD creates a private model for your team with its own API name and checkpoint history. The same operation is available from the CLI:

Train from Python

Run a taskset in groups and pass the graded rollouts to TrainingClient. Each trainer.step(...) applies the update, saves a checkpoint, and promotes it for the next rollout. The model API name stays the same. Training changes the weights behind it, not the environment or taskset.

Inspect the model

Return to the model page after a training step: To inspect checkpoints from the terminal:
The training agents guide contains the complete Python loop. See the TrainingClient reference for losses and checkpoint operations.

Download checkpoint weights

Any checkpoint can be exported. The training service copies the weights into HUD storage and hands back a presigned link, so a fine-tune can be deployed outside HUD. Export lives on the training service (https://rl.hud.ai) rather than the platform API, and takes the same HUD_API_KEY:
Both ids come from the REST API: list the tree with GET /v2/models/{model_id}/checkpoints and take the id of the node you want, where is_active marks the head. The body is optional and defaults to {"kind": "sampler"}.
The first export of a checkpoint copies the archive out of the training backend and can take several minutes for a large model. Later calls for the same checkpoint and kind reuse the stored copy and return a new link immediately.

What is in the export archive

A sampler export is a .tar holding a PEFT adapter: HUD trains with LoRA, so this is an adapter rather than a full set of merged weights. Serve it on top of the base model the trainable model was forked from, which the model page shows under Forked from:
Serving runtimes that load adapters directly, such as vLLM and SGLang, take the extracted directory as-is. To get one standalone checkpoint instead, fold the adapter into the base weights and save the result: