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

# Fine-tune

> Fine-tune your models with Bedrock

### Upload a file

Please follow to the fireworks file upload [guide](https://docs.portkey.ai/docs/aigw/integrations/llms/fireworks/files.md) for more details.

### Create a fine-tuning job

**REST API**

```sh theme={"system"}
curl \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <api_key>' \
--header 'x-portkey-fireworks-account-id: <fireworks_account_id>' \
--data '{
  "model": "@provider/<model_id>",
  "suffix": "<finetune_model_name>",
  "training_file": "<s3_path.jsonl>",
  "hyperparameters": {
    "n_epochs": 1
  }
}' \
'https://aigw.portkey.ai/v1/fine_tuning/jobs'
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID"}
)

fine_tune_job = openai.fine_tuning.jobs.create(
    training_file="file_id",
    model="@PROVIDER/model_id",
    hyperparameters={
      "n_epochs": 1
    },
    validation_file="file_id",
    suffix="finetuned_model_name",
  )

print(fine_tune_job)
```

**OpenAI NodeJS**

```typescript theme={"system"}
import OpenAI from 'openai'; // We're using the v4 SDK

const openai = new OpenAI({
  apiKey: "PORTKEY_API_KEY", // defaults to process.env["OPENAI_API_KEY"],
  baseURL: "https://aigw.portkey.ai/v1",
  defaultHeaders: {
      // defaults to process.env["PORTKEY_API_KEY"]
      "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID",
  }
});

(async () => {
    const fine_tune_job = await openai.fineTuning.jobs.create({
      training_file: "file_id",
      model: "@PROVIDER/model_id",
      hyperparameters: {
        "n_epochs": 1
      },
      validation_file: "file_id",
      suffix: "finetuned_model_name",
    });

  console.log(fine_tune_job)
})();
```

## List Fine-tuning Jobs

**REST API**

```sh theme={"system"}
curl \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <api_key>' \
--header 'x-portkey-provider: @provider' \
--header 'x-portkey-fireworks-account-id: <fireworks_account_id>' \
'https://aigw.portkey.ai/v1/fine_tuning/jobs?limit=10'
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@PROVIDER", "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID"}
)

# List all fine-tuning jobs
jobs = openai.fine_tuning.jobs.list(
    limit=10  # Optional: Number of jobs to retrieve (default: 20)
)

print(jobs)
```

**OpenAI NodeJS**

```typescript theme={"system"}
import OpenAI from 'openai';

const openai = new OpenAI({
    apiKey: "PORTKEY_API_KEY",
    baseURL: "https://aigw.portkey.ai/v1",
    defaultHeaders: { "x-portkey-provider": "@PROVIDER", "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID" }
});

(async () => {
    // List all fine-tuning jobs
    const jobs = await openai.fineTuning.jobs.list({
        limit: 10  // Optional: Number of jobs to retrieve (default: 20)
    });

    console.log(jobs);
})();
```

## Retrieve Fine-tuning Job

**REST API**

```sh theme={"system"}
curl \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <api_key>' \
--header 'x-portkey-provider: @provider' \
--header 'x-portkey-fireworks-account-id: <fireworks_account_id>' \
'https://aigw.portkey.ai/v1/fine_tuning/jobs/<job_id>'
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@PROVIDER", "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID"}
)

# Retrieve a specific fine-tuning job
job = openai.fine_tuning.jobs.retrieve(
    fine_tuning_job_id="job_id"  # The ID of the fine-tuning job to retrieve
)

print(job)
```

**OpenAI NodeJS**

```typescript theme={"system"}
import OpenAI from 'openai';

const openai = new OpenAI({
    apiKey: "PORTKEY_API_KEY",
    baseURL: "https://aigw.portkey.ai/v1",
    defaultHeaders: { "x-portkey-provider": "@PROVIDER", "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID" }
});

(async () => {
    // Retrieve a specific fine-tuning job
    const job = await openai.fineTuning.jobs.retrieve(
        "job_id"  // The ID of the fine-tuning job to retrieve
    );

    console.log(job);
})();
```

## Cancel Fine-tuning Job

**REST API**

```sh theme={"system"}
curl \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <api_key>' \
--header 'x-portkey-provider: @provider' \
--header 'x-portkey-fireworks-account-id: <fireworks_account_id>' \
'https://aigw.portkey.ai/v1/fine_tuning/jobs/<job_id>/cancel'
```

**OpenAI Python**

```python theme={"system"}
from openai import OpenAI

openai = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1",
    default_headers={"x-portkey-provider": "@PROVIDER", "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID"}
)

# Cancel a fine-tuning job
cancelled_job = openai.fine_tuning.jobs.cancel(
    fine_tuning_job_id="job_id"  # The ID of the fine-tuning job to cancel
)

print(cancelled_job)
```

**OpenAI NodeJS**

```typescript theme={"system"}
import OpenAI from 'openai';

const openai = new OpenAI({
    apiKey: "PORTKEY_API_KEY",
    baseURL: "https://aigw.portkey.ai/v1",
    defaultHeaders: { "x-portkey-provider": "@PROVIDER", "x-portkey-fireworks-account-id": "FIREWORKS_ACCOUNT_ID" }
});

(async () => {
    // Cancel a fine-tuning job
    const cancelledJob = await openai.fineTuning.jobs.cancel(
        "job_id"  // The ID of the fine-tuning job to cancel
    );

    console.log(cancelledJob);
})();
```

## References

* [Fireworks Fine-tuning](https://docs.fireworks.ai/fine-tuning/fine-tuning-models)
* [Fireworks Fine-tuning API](https://docs.fireworks.ai/api-reference/list-supervised-fine-tuning-jobs)


## Related topics

- [Fine-tune](https://docs.portkey.ai/docs/aigw/integrations/llms/bedrock/fine-tuning.md)
- [Data Service](https://docs.portkey.ai/docs/changelog/data-service.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.