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

# Quickstart

> Fine-tune a model in 10 minutes

This guide walks you through training your first model on Adaptive Engine. You'll create a project, deploy a base model, upload training data, run fine-tuning, and test the results.

Train a customer service agent to respond like a poet.

<Tabs>
  <Tab title="UI" icon="mouse-pointer">
    <Steps>
      <Step title="Create a project">
        Projects organize your models, data, and training runs.

        <iframe src="https://adaptive-ml.github.io/docs-walkthroughs/?walkthrough=create-project&version=v0.13&descriptions=%7B%220%22%3A%22Click%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fprojects%5C%22%3ENew%20project%3C%2Fa%3E%22%2C%223%22%3A%22Your%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fprojects%5C%22%3Eproject%3C%2Fa%3E%20is%20ready%22%7D" className="walkthrough-iframe" />
      </Step>

      <Step title="Deploy a model">
        Attach a model to deploy it for inference.

        <iframe src="https://adaptive-ml.github.io/docs-walkthroughs/?walkthrough=add-model&version=v0.13&descriptions=%7B%220%22%3A%22Click%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fmodels%5C%22%3EModels%3C%2Fa%3E%22%2C%2213%22%3A%22The%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fmodels%5C%22%3Emodel%3C%2Fa%3E%20responds%22%7D" className="walkthrough-iframe" />
      </Step>

      <Step title="Upload a dataset">
        Datasets contain examples that teach your model how to respond.

        Download: [fun-poet-completions.jsonl](https://huggingface.co/datasets/dylanebert/fun-poet-completions/resolve/main/fun-poet-completions.jsonl)

        <iframe src="https://adaptive-ml.github.io/docs-walkthroughs/?walkthrough=upload-dataset&version=v0.13&descriptions=%7B%220%22%3A%22Open%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fdatasets%5C%22%3EDatasets%3C%2Fa%3E%22%2C%224%22%3A%22%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fdatasets%5C%22%3EDataset%3C%2Fa%3E%20uploaded%22%7D" className="walkthrough-iframe" />
      </Step>

      <Step title="Run fine-tuning">
        SFT (supervised fine-tuning) trains your model on labeled examples.

        <iframe src="https://adaptive-ml.github.io/docs-walkthroughs/?walkthrough=recipe-sft&version=v0.13&descriptions=%7B%220%22%3A%22In%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Frecipes%5C%22%3ERecipes%3C%2Fa%3E%2C%20click%20Supervised%20Fine-Tuning%22%7D" className="walkthrough-iframe" />
      </Step>

      <Step title="Test your model">
        Deploy and chat with your fine-tuned model.

        <iframe src="https://adaptive-ml.github.io/docs-walkthroughs/?walkthrough=chat-with-model&version=v0.13&descriptions=%7B%220%22%3A%22%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fmodels%5C%22%3EDeploy%3C%2Fa%3E%20the%20trained%20model%22%2C%226%22%3A%22The%20%3Ca%20href%3D%5C%22%2Fv0.13%2Fcore%2Fmodels%5C%22%3Emodel%3C%2Fa%3E%20responds%20like%20a%20poet%22%7D" className="walkthrough-iframe" />
      </Step>
    </Steps>
  </Tab>

  <Tab title="SDK" icon="code">
    <Note>
      Set `ADAPTIVE_URL` and `ADAPTIVE_API_KEY` environment variables before starting. See [Authentication](/v0.14/advanced/authentication) for details.
    </Note>

    <Steps>
      <Step title="Create a project">
        Projects organize your models, data, and training runs.

        ```bash theme={null}
        pip install adaptive_sdk
        ```

        ```python theme={null}
        import os
        from adaptive_sdk import Adaptive

        adaptive = Adaptive(
            base_url=os.environ["ADAPTIVE_URL"],
            api_key=os.environ["ADAPTIVE_API_KEY"],
        )

        adaptive.projects.create(key="quickstart-fun-poet")
        adaptive.set_default_project("quickstart-fun-poet")
        ```
      </Step>

      <Step title="Deploy a model">
        Attach a model to deploy it for inference.

        ```python theme={null}
        adaptive.models.attach(
            model="qwen-3-4b-instruct-2507",
            wait=True,
        )
        ```

        The model becomes available within a few minutes.
      </Step>

      <Step title="Upload a dataset">
        Datasets contain examples that teach your model how to respond.

        Download: [fun-poet-completions.jsonl](https://huggingface.co/datasets/dylanebert/fun-poet-completions/resolve/main/fun-poet-completions.jsonl)

        ```python theme={null}
        adaptive.datasets.upload(
            file_path="fun-poet-completions.jsonl",
            dataset_key="fun-poet-completions",
        )
        ```
      </Step>

      <Step title="Run fine-tuning">
        SFT (supervised fine-tuning) trains your model on labeled examples.

        ```python theme={null}
        job = adaptive.jobs.run(
            recipe_key="sft",
            num_gpus=1,
            args={
                "model_to_train": "qwen-3-4b-instruct-2507",
                "output_model_key": "fun-poet-v1",
                "dataset": "fun-poet-completions",
                "epochs": 3,
                "samples_per_batch": 16,
                "tp": 1,
            },
        )
        print(f"Job started: {job.id}")
        ```

        Training takes 15-30 minutes. Check progress in the UI under Runs.
      </Step>

      <Step title="Test your model">
        Deploy and chat with your fine-tuned model.

        ```python theme={null}
        adaptive.models.attach(
            model="fun-poet-v1",
            wait=True,
        )

        response = adaptive.chat.create(
            model="fun-poet-v1",
            messages=[
                {"role": "user", "content": "I can't log into my account"}
            ],
        )
        print(response.choices[0].message.content)
        ```

        The response should rhyme.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Next steps

<CardGroup cols={2}>
  <Card title="Track metrics" icon="thumbs-up" href="/v0.14/core/metrics">
    Rate responses to build training data
  </Card>

  <Card title="Training recipes" icon="sparkles" href="/v0.14/core/recipes">
    SFT, RLHF, DPO, and other methods
  </Card>
</CardGroup>
