
You Fine-Tuned It — Now Who Hosts It? Together.ai Serves Your Custom Model and 200+ Open Models via One API
Chris Harper
2 min read
Aug 3, 2026 · 20:07 UTC
Together.ai is one API key for 200+ open-source models and your own LoRA fine-tunes — training and serving on one platform, no GPU infrastructure to manage.
What you'll be able to do after this:
- Call Llama, Qwen, Mistral, and DeepSeek via an OpenAI-compatible endpoint in three lines of Python
- Upload training data, run a fine-tuning job, and serve the output — all in one platform, no GPU provisioning
- Switch from a base model to your fine-tuned checkpoint with a one-line model-name change
After the fine-tuning tutorials (QLoRA with Unsloth, MLX-LM on Mac), the next question is: where does the resulting checkpoint actually run in production? Together.ai answers it cleanly: one platform for inference, fine-tuning, and serving your own checkpoints.
Base model inference (3 lines)
pip install together
from together import Together
client = Together() # reads TOGETHER_API_KEY from env
response = client.chat.completions.create(
model="Qwen/Qwen3-72B-Instruct", # 200+ options at docs.together.ai/docs/serverless/models
messages=[{"role": "user", "content": "Explain LoRA in one paragraph."}]
)
print(response.choices[0].message.content)
The Together client is OpenAI-compatible. If you already use the OpenAI SDK, swap the import and base URL — your streaming, tool-calling, and structured output code works without changes.
Fine-tune and serve your own checkpoint
import time
from together import Together
client = Together()
# 1. Upload training data (JSONL, one example per line)
upload = client.files.upload(file=("training.jsonl", open("training.jsonl", "rb")))
# 2. Start fine-tuning
ft = client.fine_tuning.create(
training_file=upload.id,
model="meta-llama/Llama-3.2-8B-Instruct",
n_epochs=3,
suffix="my-domain"
)
# 3. Wait for completion
while (job := client.fine_tuning.retrieve(ft.id)).status != "completed":
time.sleep(30)
# 4. Serve via the same API — one-line model name change
response = client.chat.completions.create(
model=job.output_name,
messages=[{"role": "user", "content": "..."}]
)
Why Together.ai over self-hosting with vLLM: serverless endpoints mean no GPU reservations, no Docker, no capacity planning. You pay per token, and your fine-tuned model is available immediately after the training job completes. For high-volume workloads, client.endpoints.create() provisions a reserved instance.
Sources: Fine-Tune Any LLM from HuggingFace Hub with Together AI · Together.ai Finetuning Cookbook · Deploying a fine-tuned model — Together.ai Docs