Skip to main content
Once a fine-tuning job completes, your model is available for inference in two ways: hosted on a dedicated endpoint at Together AI, or downloaded as a standalone checkpoint.

Prerequisites

  • A completed fine-tuning job. See the quickstart for the full lifecycle.
  • The job’s Model Object ID (model_object_id, an ml_... value) — the model-registry ID of the trained weights and the identifier you deploy. It’s available once the job status is completed, from the tg fine-tuning retrieve output.

Deploy on a dedicated endpoint

Together AI serves fine-tuned models through dedicated model inference (DMI). A completed fine-tuning job is already a private model in your project, so you deploy it by its Model Object ID with no separate upload step. Deployment and lifecycle operations use the tg beta CLI.
Dedicated model inference bills per minute per running replica, even when idle. Scale the deployment to zero or delete the endpoint when you’re done to stop charges.
The dedicated model inference commands require Together CLI version 2.24.0 or later. Install or upgrade with uv tool install "together[cli]" (or uv tool upgrade "together[cli]"), and check your version with tg --version.
The CLI’s deploy command creates the endpoint, attaches a deployment, and routes all traffic to it in one step. Pass the fine-tune’s Model Object ID (ml_...) — not the x_model_output_name, which isn’t a deployable identifier in dedicated model inference:
CLI
The SDK has no single-call equivalent, so it runs the same steps individually: create the endpoint, bind the model and a config to a deployment, then route traffic to it. Reference the fine-tune by its Model Object ID (ml_..., the job’s model_object_id):
Poll until the deployment reaches DEPLOYMENT_STATE_READY:
CLI
From the SDK, retrieve the deployment and read status.state:
Once the deployment is READY, the endpoint serves at its endpoint string (your-project-slug/my-finetuned-endpoint, returned as endpoint.name). Pass it as the model parameter and point the base URL at https://api-inference.together.ai/v1:
When you’re done, delete the endpoint and its deployment to stop billing. The CLI’s rm --force removes both in one step:
CLI
The SDK has no smart-delete, so stop billing by scaling the deployment to zero, then delete the resources once it reaches DEPLOYMENT_STATE_STOPPED:
To pause billing without deleting anything (for example, if you plan to use the endpoint again later), scale the deployment to zero and stop there. See Delete resources for the full teardown order.
If deploy reports that the model has more than one deployment profile, re-run it with --config <cr_...>. List a model’s profiles with tg beta models configs "<MODEL_OBJECT_ID>". See Choose a deployment profile.

Run locally

To run your model outside Together, download the checkpoint by job ID:

Choose a checkpoint type

The checkpoint parameter selects what to download. It’s required for the v2 SDK’s content() method and the GET /v1/finetune/download endpoint, unless you pass checkpoint_step, which downloads a specific intermediate step and overrides checkpoint. Valid values depend on how the job was trained. model_output_path returns the raw training output directory before any merging. It works for both job types but is mainly useful for advanced workflows that need the unmodified artifacts: for LoRA jobs, prefer merged or adapter; for full fine-tunes, it’s the only option. The v1 SDK’s client.fine_tuning.download() selects the checkpoint automatically (merged for LoRA jobs, model_output_path for full fine-tunes), so you don’t pass a checkpoint argument there. The output is a .tar.zst archive that uses ZStandard compression. On macOS, install zstd with Homebrew and decompress:
You should see:
Load the model with Hugging Face Transformers:
Python
To download a specific checkpoint instead of the final one, pass --checkpoint-step <STEP_NUMBER> to tg fine-tuning download (or checkpoint_step=<STEP_NUMBER> to client.fine_tuning.content()). List checkpoints with tg fine-tuning list-checkpoints <JOB_ID>.

Model registry object IDs

When a job uploads its output artifacts to the Together model registry alongside the primary storage write, the job and checkpoint responses include the registry object and revision IDs, plus qualified object names in <project_slug>/<model_name> form. Use the IDs to reference the uploaded weights in downstream workflows (for example, when binding a fine-tuned adapter to a dedicated endpoint). On a completed job in the fine-tuning jobs dashboard, the Output model field shows model_object_name and links to that model in the registry by model_object_id. The fields are omitted when the registry upload did not run or did not succeed. Object names are resolved on the fly on GET /fine-tunes/{id} and GET /fine-tunes/{id}/checkpoints only (not on list jobs). If the project slug cannot be resolved, the name fields fall back to the corresponding object ID.

On the job

GET /fine-tunes/{id} includes the final artifact IDs once the job reaches completed:

On checkpoints

GET /fine-tunes/{id}/checkpoints returns the same ID pair on each checkpoint entry: Intermediate checkpoints carry the IDs from the upload at that step. Final model and adapter checkpoints in the list reuse the job-level IDs from the table above.

Troubleshooting

  • No Model Object ID yet: The job hasn’t reached completed, so model_object_id isn’t populated. Poll status with client.fine_tuning.retrieve(id=...) until it’s done. See Monitor a fine-tuning job for the polling pattern.
  • endpoints_v1_create_access_disabled (HTTP 403): You’re calling the retired v1 endpoints API (client.endpoints.create(...) or tg endpoints create). Deploy on dedicated model inference with tg beta endpoints deploy instead. See Migrate from v1.
  • deploy reports multiple deployment profiles: Re-run with --config <cr_...>. List a model’s profiles with tg beta models configs "<MODEL_OBJECT_ID>".
  • Deploy fails because the base isn’t supported: Not every base model can be hosted for dedicated inference. Confirm the base appears in the supported models list before training (-Reference models often can’t be deployed).
  • 404 on inference: Point the base URL at https://api-inference.together.ai/v1 and pass the endpoint string (your-project-slug/<endpoint_name>, printed by the deploy output) as the model parameter, not the Model Object ID.

Next steps

Upload a custom model

Upload your own model weights from outside the Together catalog.

Manage endpoints

Inspect, start, stop, update, and delete dedicated endpoints.

Configure autoscaling

Tune replica bounds and autoscale a deployment on the metric that fits your workload.