Requirements
- A completed fine-tuning job.
- One of the job’s two registry identifiers for the trained weights. Look for them in the
tg fine-tuning retrieveoutput on a completed job:model_object_id(anml_...value): The model-registry ID. The CLI takes it directly, and the SDK and API take it inside aprojects/{project_id}/models/{model_id}path.model_object_name(a<project_slug>/<model_name>value): The qualified registry name. The CLI accepts it in place of the ID. The SDK and API don’t.
- Together CLI version
3.0.0or later. Check your version withtg --version. To install or upgrade, runuv tool install "together[cli]" --upgrade.
Deploy on a dedicated endpoint
Together AI serves fine-tuned models through dedicated model inference. A completed fine-tuning job is already a private model in your project, so you deploy it directly, with no upload step.- CLI
- SDK
- UI
Deploy the fine-tune by its To deploy by name, pass it in full, including the project slug (Once the deployment is To stop billing when you’re done, delete the endpoint with If you plan to use the endpoint again, scale the deployment to zero instead. This stops billing without deleting anything. For the full teardown order, see Delete resources.
model_object_name or its model_object_id. The deploy command creates the endpoint, attaches a deployment, and routes all traffic to it in one step:CLI
acme-corp/my-model-abc123). The bare model name doesn’t resolve, and neither does model_output_name. The CLI resolves a name only when exactly one model in your project matches it.If the model has more than one deployment profile, pass --config <cr_...> to choose one. List a model’s profiles with tg models configs "<MODEL_OBJECT_ID>".Poll until the deployment reaches DEPLOYMENT_STATE_READY:CLI
READY, pass the endpoint string (your-project-slug/my-finetuned-endpoint, printed by the deploy output) as the model parameter and send the request to https://api-inference.together.ai:cURL
rm --force, which also deletes its deployment:CLI
Run locally
To run your model outside Together, download the checkpoint by job ID:Choose a checkpoint type
Thecheckpoint parameter selects what to download. If you omit it, the API picks a default automatically: merged for low-rank adapter (LoRA) jobs and model_output_path for full fine-tunes. You can also 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 output is a .tar.zst archive that uses ZStandard compression. On macOS, install zstd with Homebrew and decompress:
Python
--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, such as binding a fine-tuned adapter to a dedicated endpoint. The CLI’s deploy command also accepts the qualified name.
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 object ID fields are omitted when the registry upload did not run or did not succeed. A name can still be present for a job whose upload never ran, but the CLI can’t resolve it, so treat the matching *_object_id as the signal that the artifact reached the registry. 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
- The job has no
model_object_idyet: The job hasn’t reachedcompleted. Poll its status withclient.fine_tuning.retrieve(id=...)until it’s done. endpoints_v1_create_access_disabled(HTTP 403): You’re calling the retired v1 endpoints API, for example withclient.endpoints.create(...)in SDK 2.x ortg endpoints createin CLI 2.x. Upgradetogetherto3.0.0or later, then deploy withtg endpoints deploy.Multiple configs found for modelwhen deploying: The model has more than one deployment profile. List its profiles withtg models configs "<MODEL_OBJECT_ID>", then re-run with--config <cr_...>.Model <MODEL_OBJECT_NAME> not foundwhen deploying by name: Passmodel_object_namein full, including the project slug, and check that the job reports amodel_object_id. Without one, the weights never reached the registry, so neither identifier resolves. If the name still fails, deploy bymodel_object_id.Multiple models found for "<MODEL_OBJECT_NAME>": More than one model visible in your project has the same final name segment. Deploy bymodel_object_id, which is unambiguous.- Either identifier fails with a key from another project: The model belongs to the project the job ran in, and both identifiers resolve only within your key’s project. Use a key scoped to the project that owns the model.
- Deploy fails because the base model isn’t supported: Not every base model can be hosted on dedicated model inference. Before training, confirm the base model appears in the supported models list.
-Referencemodels often can’t be deployed. - 404 on inference: Point the SDK’s base URL at
https://api-inference.together.ai, or athttps://api-inference.together.ai/v1for OpenAI-compatible clients. Pass the endpoint string (your-project-slug/<endpoint_name>, printed by the deploy output) as themodelparameter, 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.