> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnia-voice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fine-tuning

> Train a model on your own data and deploy the result.

Fine-tuning adapts a base model to your data: your tone, formats, tasks, or
domain. Omnia runs the training and lets you deploy the result to a dedicated
endpoint, callable through the same API as any other model. The management API
lives at `https://gateway.omnia-voice.com/v1` and uses your workspace API key.

## The workflow

<Steps>
  <Step title="Prepare a dataset">
    Format your training data as JSONL, or use a managed dataset with column
    mapping. See [Datasets & formats](/fine-tuning/datasets).
  </Step>

  <Step title="Create a fine-tuning job">
    Choose a base model and training data, pick a method and hyperparameters, and
    start the job. See [Creating a job](/fine-tuning/create-job).
  </Step>

  <Step title="Track progress">
    Jobs move through `queued → running → succeeded` (or `failed` / `cancelled`).
    Events and checkpoints are available while the job runs.
  </Step>

  <Step title="Deploy the model">
    A completed job produces a model artifact. Deploy it to a dedicated endpoint
    and call it by its routing key. See
    [Deploying a fine-tuned model](/fine-tuning/deploy-model).
  </Step>
</Steps>

## Methods

Omnia supports two training methods, selected with the `method` field on a job:

<CardGroup cols={2}>
  <Card title="Supervised" icon="graduation-cap">
    Standard supervised fine-tuning, either **LoRA** (efficient adapter training)
    or **full** fine-tuning, with the usual hyperparameters: epochs, learning
    rate, batch size, context length, and LoRA rank/alpha.
  </Card>

  <Card title="Spec-draft" icon="bolt">
    Train a speculative-draft model, configured via its own
    `specDraftHyperparameters`.
  </Card>
</CardGroup>

## Billing

Fine-tuning is billed **per trained token**, charged **once** when the job
completes. Failed or cancelled jobs aren't billed.

<Note>
  The exact `trained_tokens` isn't known until a run finishes, so the create-time
  gate uses an **estimated-token budget**: a workspace can't launch a training run
  it can't pay for. The final charge is settled from the actual trained-token count
  on completion.
</Note>

## Datasets

You can upload training files directly (JSONL), bring data from S3-compatible
Object Storage, or use Omnia's managed datasets with column-mapping into the
training format. Data is validated before a job starts, and real validation
errors are surfaced with the exact reason so you can fix them before spending on a
job. See [Datasets & formats](/fine-tuning/datasets).

## Using a trained model

A completed job produces a **model artifact**. Fine-tuned models are served on
**dedicated capacity** (not the shared per-token fleet): create a dedicated
endpoint with `customWeightsId` (the artifact id) or `fineTuningJobId`, then call
it via `model = dedicated/<routing-key>`. See
[Deploying a fine-tuned model](/fine-tuning/deploy-model).

<CardGroup cols={2}>
  <Card title="Prepare data" icon="table" href="/fine-tuning/datasets">
    Formats, uploads, and validation.
  </Card>

  <Card title="Start a job" icon="play" href="/fine-tuning/create-job">
    Create your first fine-tuning job.
  </Card>
</CardGroup>
