微调
管理微调作业以将模型量身定制到您的特定训练数据。
相关指南:微调模型
创建微调作业
POST https://api.openai.com/v1/fine_tuning/jobs
创建一个微调作业,开始从给定数据集创建新模型的过程。
响应包括排队作业的详细信息,包括作业状态和一旦完成就会显示的微调模型的名称。
请求体
model(必需)
string
要微调的模型的名称。您可以选择一个支持微调的模型。
training_file(必需)
string
包含训练数据的上传文件的ID。
查看上传文件了解如何上传文件。
您的数据集必须格式化为JSONL文件。此外,您必须将文件上传目的设置为 fine-tune。
有关详细信息,请查看微调指南。
hyperparameters(可选)
object
用于微调作业的超参数。
suffix(可选)
string or null 默认为null
将添加到您微调模型名称的最多18个字符的字符串。
例如,suffix 为 "custom-model-name" 会生成类似 ft:gpt-3.5-turbo:openai:custom-model-name:7p4lURel 的模型名称。
validation_file(可选)
string or null
包含验证数据的上传文件的ID。
如果提供此文件,数据将用于在微调期间定期生成验证指标。这些指标可以在微调结果文件中查看。
训练和验证文件中不应存在相同的
数据。
您的数据集必须格式化为JSONL文件。您必须将文件上传目的设置为 fine-tune。
有关详细信息,请查看微调指南。
integrations(可选)
array or null
为您的微调作业启用的集成列表。
seed(可选)
integer or null
种子控制作业的可重现性。传入相同的种子和作业参数应产生相同的结果,但在罕见的情况下可能会有所不同。
如果未指定种子,将为您生成一个。
返回
返回一个fine_tuning.job 对象。
示例请求
默认
curl https://api.openai.com/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "training_file": "file-BK7bzQj3FfZFXr7DbL6xJwfo",
    "model": "gpt-3.5-turbo"
  }'
响应
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "gpt-3.5-turbo-0125",
  "created_at": 1614807352,
  "fine_tuned_model": null,
  "organization_id": "org-123",
  "result_files": [],
  "status": "queued",
  "validation_file": null,
  "training_file": "file-abc123"
}
示例请求(Epochs标签页)
curl https://api.openai.com/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "training_file": "file-abc123",
    "model": "gpt-3.5-turbo",
    "hyperparameters": {
      "n_epochs": 2
    }
  }'
响应
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "gpt-3.5-turbo-0125",
  "created_at": 1614807352,
  "fine_tuned_model": null,
  "organization_id": "org-123",
  "result_files": [],
  "status": "queued",
  "validation_file": null,
  "training_file": "file-abc123",
  "hyperparameters": {
    "n_epochs": 2
  }
}
示例请求(验证文件标签页)
curl https://api.openai.com/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "training_file": "file-abc123",
    "validation_file": "file-abc123",
    "model": "gpt-3.5-turbo"
  }'
响应
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "gpt-3.5-turbo-0125",
  "created_at": 1614807352,
  "fine_tuned_model": null,
  "organization_id": "org-123",
  "result_files": [],
  "status": "queued",
  "validation_file": "file-abc123",
  "training_file": "file-abc123"
}
示例请求(W&B集成标签页)
curl https://api.openai.com/v1/fine_tuning/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "training_file": "file-abc123",
    "validation_file": "file-abc123",
    "model": "gpt-3.5-turbo",
    "integrations": [
      {
        "type": "wandb",
        "wandb": {
          "project": "my-wandb-project",
          "name": "ft-run-display-name",
          "tags": [
            "first-experiment", "v2"
          ]
        }
      }
    ]
  }'
响应
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "gpt-3.5-turbo-0125",
  "created_at": 1614807352,
  "fine_tuned_model": null,
  "organization_id": "org-123",
  "result_files": [],
  "status": "queued",
  "validation_file": "file-abc123",
  "training_file": "file-abc123",
  "integrations": [
    {
      "type": "wandb",
      "wandb": {
        "project": "my-wandb-project",
        "name": "ft-run-display-name",
        "tags": [
          "first-experiment", "v2"
        ]
      }
    }
  ]
}
列出微调作业
GET https://api.openai.com/v1/fine_tuning/jobs
列出您组织的微调作业。
查询参数
after
string
上一次分页请求中的最后一个作业的标识符。
limit
integer
要检索的微调作业数量。
返回
一些分页的微调作业对象的列表。
示例请求
curl https://api.openai.com/v1/fine_tuning/jobs?limit=2 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
响应
{
  "object": "list",
  "data": [
    {
      "object": "fine_tuning.job.event",
      "id": "ft-event-TjX0lMfOniCZX64t9PUQT5hn",
      "created_at": 1689813489,
      "level": "warn",
      "message": "Fine tuning process stopping due to job cancellation",
      "data": null,
      "type": "message"
    },
    { ... },
    { ... }
  ],
  "has_more": true
}
列举微调事件
get https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/events获取 微调作业的状态更新。
路径参数
| 名称 | 类型 | 必须 | 描述 | 
|---|---|---|---|
| fine_tuning_job_id | string | 是 | 要获取事件的微调 作业的 ID。 | 
查询参数
| 名称 | 类型 | 必须 | 默认值 | 描述 | 
|---|---|---|---|---|
| after | string | 否 | 用于分页的上一个事件的 ID。 | |
| limit | integer | 否 | 20 | 要检索的事件数量。 | 
返回值
Fine-tuning 事件对象的列表。
示例请求
curl https://api.openai.com/v1/fine_tuning/jobs/ftjob-abc123/events \
  -H "Authorization: Bearer $OPENAI_API_KEY"
响应
{
  "object": "list",
  "data": [
    {
      "object": "fine_tuning.job.event",
      "id": "ft-event-ddTJfwuMVpfLXseO0Am0Gqjm",
      "created_at": 1692407401,
      "level": "info",
      "message": "Fine tuning job successfully completed",
      "data": null,
      "type": "message"
    },
    {
      "object": "fine_tuning.job.event",
      "id": "ft-event-tyiGuB72evQncpH87xe505Sv",
      "created_at": 1692407400,
      "level": "info",
      "message": "New fine-tuned model created: ft:gpt-3.5-turbo:openai::7p4lURel",
      "data": null,
      "type": "message"
    }
  ],
  "has_more": true
}
列出微调的检查点
get https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints列出某个微调任务的检查点。
路径参数
| 名称 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| fine_tuning_job_id | string | 是 | 要获取检查点的微调任务的 ID。 | 
查询参数
| 名称 | 类型 | 是否必须 | 描述 | 
|---|---|---|---|
| after | string | 否 | 上一个分页请求中的最后一个检查点 ID 的标识符。 | 
| limit | integer | 否 | 要检索的检查点数量。默认为 10。 | 
返回值
一个包含微调任务的一系列检查点对象的列表。每个对象都包含以下字段:
- id: 字符串格式的检查点 ID。
- object: 字符串格式的对象类型。对于检查点,始终为- fine_tuning.job.checkpoint。
- created_at: 整数格式的 UNIX 时间戳,表示检查点的创建时间。
- fine_tuned_model_checkpoint: 字符串格式的微调模型检查点的 ID。
- metrics: 一个包含以下字段的对象:- full_valid_loss: 浮点数格式的在整个验证集上计算的损失。
- full_valid_mean_token_accuracy: 浮点数格式的在整个验证集上计算的平均 token 准确率。
 
- fine_tuning_job_id: 字符串格式的微调任务的 ID。
- step_number: 整数格式的表示检查点所在训练步骤的步骤号。
示例请求
使用 curl 列出微调任务 ftjob-abc123 的检查点:
curl https://api.openai.com/v1/fine_tuning/jobs/ftjob-abc123/checkpoints \
  -H "Authorization: Bearer $OPENAI_API_KEY"
响应
成功的响应将返回一个包含微调任务的一系列检查点对象的列表。例如:
{
  "object": "list",
  "data": [
    {
      "object": "fine_tuning.job.checkpoint",
      "id": "ftckpt_zc4Q7MP6XxulcVzj4MZdwsAB",
      "created_at": 1519129973,
      "fine_tuned_model_checkpoint": "ft:gpt-3.5-turbo-0125:my-org:custom-suffix:96olL566:ckpt-step-2000",
      "metrics": {
        "full_valid_loss": 0.134,
        "full_valid_mean_token_accuracy": 0.874
      },
      "fine_tuning_job_id": "ftjob-abc123",
      "step_number": 2000
    },
    {
      "object": "fine_tuning.job.checkpoint",
      "id": "ftckpt_enQCFmOTGj3syEpYVhBRLTSy",
      "created_at": 1519129833,
      "fine_tuned_model_checkpoint": "ft:gpt-3.5-turbo-0125:my-org:custom-suffix:7q8mpxmy:ckpt-step-1000",
      "metrics": {
        "full_valid_loss": 0.167,
        "full_valid_mean_token_accuracy": 0.781
      },
      "fine_tuning_job_id": "ftjob-abc123",
      "step_number": 1000
    },
  ],
  "first_id": "ftckpt_zc4Q7MP6XxulcVzj4MZdwsAB",
  "last_id": "ftckpt_enQCFmOTGj3syEpYVhBRLTSy",
  "has_more": true
}
检索微调任务
get https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}获取有关微调任务的信息。
了解有关微调的更多信息。
路径参数
| 名称 | 类型 | 必须 | 描述 | 
|---|---|---|---|
| fine_tuning_job_id | string | 是 | 微调任务的 ID。 | 
返回值
具有给定 ID 的微调对象。
示例请求
使用 curl 检索 ID 为 ft-AF1WoRqd3aJAHsqc9NY7iL8F 的微调任务:
curl https://api.openai.com/v1/fine_tuning/jobs/ft-AF1WoRqd3aJAHsqc9NY7iL8F \
  -H "Authorization: Bearer $OPENAI_API_KEY"
响应
成功的响应将返回一个 JSON 对象,其中包含有关微调任务的信息:
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "davinci-002",
  "created_at": 1692661014,
  "finished_at": 1692661190,
  "fine_tuned_model": "ft:davinci-002:my-org:custom_suffix:7q8mpxmy",
  "organization_id": "org-123",
  "result_files": [
      "file-abc123"
  ],
  "status": "succeeded",
  "validation_file": null,
  "training_file": "file-abc123",
  "hyperparameters": {
      "n_epochs": 4,
      "batch_size": 1,
      "learning_rate_multiplier": 1.0
  },
  "trained_tokens": 5768,
  "integrations": [],
  "seed": 0,
  "estimated_finish": 0
}
取消微调
POST https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel
立即取消微调作业。
路径参数
| 名称 | 类型 | 必需 | 描述 | 
|---|---|---|---|
| fine_tuning_job_id | string | 必需 | 要取消的微调作业的ID。 | 
返回
已取消的微调对象。
示例请求
curl -X POST https://api.openai.com/v1/fine_tuning/jobs/ftjob-abc123/cancel \
  -H "Authorization: Bearer $OPENAI_API_KEY"
响应
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "gpt-3.5-turbo-0125",
  "created_at": 1689376978,
  "fine_tuned_model": null,
  "organization_id": "org-123",
  "result_files": [],
  "hyperparameters": {
    "n_epochs": "auto"
  },
  "status": "cancelled",
  "validation_file": "file-abc123",
  "training_file": "file-abc123"
}
微调作业对象
fine_tuning.job 对象表示通过 API 创建的微调作业。
| 属性 | 类型 | 描述 | 
|---|---|---|
| id | string | 对象的标识符,可在API端点中引用。 | 
| created_at | integer | 创建微调作业的Unix时间戳(以秒为单位)。 | 
| error | object or null | 对于已经 失败的微调作业,这将包含有关失败原因的更多信息。 | 
| fine_tuned_model | string or null | 正在创建的微调模型的名称。如果微调作业仍在运行,则值为null。 | 
| finished_at | integer or null | 完成微调作业的Unix时间戳(以秒为单位)。如果微调作业仍在运行,则值为null。 | 
| hyperparameters | object | 用于微调作业的超参数。有关更多详细信息,请参阅微调指南。 | 
| model | string | 正在进行微调的基础模型。 | 
| object | string | 对象类型,始终为“fine_tuning.job”。 | 
| organization_id | string | 拥有微调作业的组织。 | 
| result_files | array | 微调作业的编译结果文件ID。您可以使用文件API检索结果。 | 
| status | string | 微调作业的当前状态,可以是 validating\_files、queued、running、succeeded、failed或cancelled。 | 
| trained_tokens | integer or null | 由此微调作业处理的总计费令牌数。如果微调作业仍在运行,则值为null。 | 
| training_file | string | 用于培训的文件ID。您可以使用文件API检索培训数据。 | 
| validation_file | string or null | 用于验证的文件ID。您可以使用文件API检索验证结果。 | 
| integrations | array or null | 要为此微调作业启用的集成列表。 | 
| seed | integer | 用于微调作业的种子。 | 
| estimated_finish | integer or null | 估计完成微调作业的Unix时间戳(以秒为单位)。如果微调作业未运行,则值为null。 | 
微调作业对象
{
  "object": "fine_tuning.job",
  "id": "ftjob-abc123",
  "model": "davinci-002",
  "created_at": 1692661014,
  "finished_at": 1692661190,
  "fine_tuned_model": "ft:davinci-002:my-org:custom_suffix:7q8mpxmy",
  "organization_id": "org-123",
  "result_files": [
    "file-abc123"
  ],
  "status": "succeeded",
  "validation_file": null,
  "training_file": "file-abc123",
  "hyperparameters": {
    "n_epochs": 4,
    "batch_size": 1,
    "learning_rate_multiplier": 1.0
  },
  "trained_tokens": 5768,
  "integrations": [],
  "seed": 0,
  "estimated_finish": 0
}
微调作业事件对象
微调作业事件对象
| 属性 | 类型 | 
|---|---|
| id | string | 
| created_at | integer | 
| level | string | 
| message | string | 
| object | string | 
微调作业事件对象
{
  "object": "fine_tuning.job.event",
  "id": "ftevent-abc123"
  "created_at": 1677610602,
  "level": "info",
  "message": "Created fine-tuning job"
}
微调作业检查点对象
fine_tuning.job.checkpoint 对象表示一个准备好使用的 fine-tuning 作业模型检查点。
| 参数 | 类型 | 描述 | 
|---|---|---|
| id | string | 检查点标识符,可以在 API 端点中引用。 | 
| created_at | integer | 创建检查点的 Unix 时间戳(以秒为单位)。 | 
| fine_tuned_model_checkpoint | string | 创建的 fine-tuned 检查点模型的名称。 | 
| step_number | integer | 创建检查点的步骤号。 | 
| metrics | object | 在 fine-tuning 作业期间步骤号的度量。 | 
| fine_tuning_job_id | string | 此检查点是从中创建的 fine-tuning 作业的名称。 | 
| object | string | 对象类型,总是“fine_tuning.job.checkpoint”。 | 
{
  "object": "fine_tuning.job.checkpoint",
  "id": "ftckpt_qtZ5Gyk4BLq1SfLFWp3RtO3P",
  "created_at": 1712211699,
  "fine_tuned_model_checkpoint": "ft:gpt-3.5-turbo-0125:my-org:custom_suffix:9ABel2dg:ckpt-step-88",
  "fine_tuning_job_id": "ftjob-fpbNQ3H1GrMehXRf8cO97xTN",
  "metrics": {
    "step": 88,
    "train_loss": 0.478,
    "train_mean_token_accuracy": 0.924,
    "valid_loss": 10.112,
    "valid_mean_token_accuracy": 0.145,
    "full_valid_loss": 0.567,
    "full_valid_mean_token_accuracy": 0.944,
  },
  "step_number": 88,
}