API文档(api-reference)
微调(Fine-Tunes)

微调 Fine-tunes

管理微调(Fine-tuning)作业,以适应您的特定训练数据。

相关指南:Fine-tune models

创建Fine-tuneCreate fine-tune

post https://api.openai.com/v1/fine-tunes (opens in a new tab)

创建微调Fine-tune作业,以对给定数据集微调特定模型。

响应包括已入队作业的详细信息,包括作业状态和完成后的Fine-tuned模型的名称。

了解更多关于微调

请求正文

training_file 是字符串类型的必填项,表示上传训练数据的文件ID。请参阅上传文件以了解如何上传文件。您的数据集必须格式化为一个 JSONL 文件,其中每个训练示例都是一个带有 "prompt" 和 "completion" 键的 JSON 对象。此外,您必须使用目的为 fine-tune 的文件上传。

有关更多详细信息,请参阅微调指南

validation_file 是字符串类型的可选项,表示上传包含验证数据的文件的ID。

如果您提供此文件,数据将被用于在微调过程中定期生成验证指标。这些指标可以在微调结果文件中查看。您的训练和验证数据应该互不重叠。

您的数据集必须格式化为一个 JSONL 文件,其中每个验证示例都是一个带有 "prompt" 和 "completion" 键的 JSON 对象。此外,您必须使用目的为 fine-tune 的文件上传。有关更多详细信息,请参阅微调指南

model 是字符串类型的可选项,默认为 Curie。表示要微调的基础模型的名称。您可以选择其中一个“ada”、“babbage”、“curie”、“davinci”或2022-04-21之后创建的微调模型。有关这些模型的更多信息,请参阅模型 (opens in a new tab)文档。

n_epochs 是整数类型的可选项,默认为 4。表示训练模型的周期数。一个周期是指对训练数据集进行完整的一次循环。

batch_size 是整数类型的可选项,默认为 null。表示用于训练时的批次大小。批次大小是用于训练单个前向和后向传递的训练示例数量。默认情况下,批次大小将动态配置为训练集中示例数量的约0.2%,上限为256-通常情况下,我们发现较大的批次大小 tend to work better for larger datasets.

learning_rate_multiplier 是数字类型的可选项,默认为 null。用于训练的学习率系数。微调学习率是用于预训练的原始学习率乘以该值。默认情况下,学习率乘数为 0.05、0.1 或 0.2,具体取决于最终的 batch_size(对于较大的批次大小,较大的学习率 tend to perform better)。我们建议尝试在 0.02 到 0.2 的范围内尝试不同的值,以查看哪个产生最好的结果。

prompt_loss_weight 是数字类型的可选项,默认为 0.01。用于提示标记的损失权重。这控制模型试图学习生成提示(与始终具有1.0权重的完成进行比较),并且可以在完成长度较短时给训练添加稳定效果。

如果提示非常长(相对于完成),则减小此权重可能是有意义的,以避免过度优先考虑学习提示。 compute_classification_metrics 是布尔类型的可选项,默认为 false。如果设置为 true,我们将在每个时代结束时使用验证集计算特定于分类的度量标准,例如准确度和F-1分数。这些度量标准可以在结果文件中查看。

要计算分类指标,必须提供 validation_file。此外,对于多类别分类,您必须指定 classification_n_classes,对于二分类,您必须指定 classification_positive_class

classification_n_classes是整数类型的可选项,默认为 null。表示分类任务中的类数。对于多类别分类任务,必须设置此参数。

classification_positive_class 是字符串类型的可选项,默认为null。表示二元分类中的正类。在二元分类中需要此参数以生成精确度、召回率和F1测量。

classification_betas 是数组类型的可选项,默认为null。表示在指定的beta值上计算F-beta分数。F-beta分数是F-1分数的一般化。该参数仅用于二元分类。当beta为1时(即F-1得分时),精确率和召回率被赋予相同的权重。更高的beta值会更注重召回率而不是精确率。更低的beta值会更注重精确率而不是召回率。

suffix 是字符串类型的可选项,默认为 null。表示长度最多为40个字符的字符串,将被添加到您的微调模型名称中。例如,如果 suffix 为 "custom-model-name",将会生成类似于 ada:ft-your-org:custom-model-name-2022-02-15-04-21-04 的模型名称。

请求示例(Python方式)

curl https://api.openai.com/v1/fine-tunes 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer $OPENAI_API_KEY" 
  -d '{
    "training_file": "file-XGinujblHPwGLSztz8cPS8XY"
  }'

响应体 (Response)

{
 "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F",
 "object": "fine-tune",
 "model": "curie",
 "created_at": 1614807352,
 "events": [
    {
 "object": "fine-tune-event",
 "created_at": 1614807352,
 "level": "info",
 "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."
    }
  ],
 "fine_tuned_model": null,
 "hyperparams": {
 "batch_size": 4,
 "learning_rate_multiplier": 0.1,
 "n_epochs": 4,
 "prompt_loss_weight": 0.1,
  },
 "organization_id": "org-...",
 "result_files": [],
 "status": "pending",
 "validation_files": [],
 "training_files": [
    {
 "id": "file-XGinujblHPwGLSztz8cPS8XY",
 "object": "file",
 "bytes": 1547276,
 "created_at": 1610062281,
 "filename": "my-data-train.jsonl",
 "purpose": "fine-tune-train"
    }
  ],
 "updated_at": 1614807352,
}

列出您组织的微调作业List fine-tunes

get https://api.openai.com/v1/fine-tunes (opens in a new tab)

列出您组织的微调作业。

请求示例(Python方式)

curl https://api.openai.com/v1/fine-tunes 
  -H "Authorization: Bearer $OPENAI_API_KEY"

响应体 (Response)

{
 "object": "list",
 "data": [
    {
 "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F",
 "object": "fine-tune",
 "model": "curie",
 "created_at": 1614807352,
 "fine_tuned_model": null,
 "hyperparams": { ... },
 "organization_id": "org-...",
 "result_files": [],
 "status": "pending",
 "validation_files": [],
 "training_files": [ { ... } ],
 "updated_at": 1614807352,
    },
    { ... },
    { ... }
  ]
}

微调作业 Retrieve fine-tune

get https://api.openai.com/v1/fine-tunes/{fine_tune_id} (opens in a new tab)

获取关于微调作业的信息。

了解更多有关微调的信息

路径参数

fine_tune_id字符串类型,必填项。微调作业的ID

请求示例(Python方式)

curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F 
  -H "Authorization: Bearer $OPENAI_API_KEY"

响应体 (Response)

{
 "id": "ft-AF1WoRqd3aJAHsqc9NY7iL8F",
 "object": "fine-tune",
 "model": "curie",
 "created_at": 1614807352,
 "events": [
    {
 "object": "fine-tune-event",
 "created_at": 1614807352,
 "level": "info",
 "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807356,
 "level": "info",
 "message": "Job started."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807861,
 "level": "info",
 "message": "Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807864,
 "level": "info",
 "message": "Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807864,
 "level": "info",
 "message": "Job succeeded."
    }
  ],
 "fine_tuned_model": "curie:ft-acmeco-2021-03-03-21-44-20",
 "hyperparams": {
 "batch_size": 4,
 "learning_rate_multiplier": 0.1,
 "n_epochs": 4,
 "prompt_loss_weight": 0.1,
  },
 "organization_id": "org-...",
 "result_files": [
    {
 "id": "file-QQm6ZpqdNwAaVC3aSz5sWwLT",
 "object": "file",
 "bytes": 81509,
 "created_at": 1614807863,
 "filename": "compiled_results.csv",
 "purpose": "fine-tune-results"
    }
  ],
 "status": "succeeded",
 "validation_files": [],
 "training_files": [
    {
 "id": "file-XGinujblHPwGLSztz8cPS8XY",
 "object": "file",
 "bytes": 1547276,
 "created_at": 1610062281,
 "filename": "my-data-train.jsonl",
 "purpose": "fine-tune-train"
    }
  ],
 "updated_at": 1614807865,
}

取消微调Cancel fine-tune

post https://api.openai.com/v1/fine-tunes/{fine_tune_id}/cancel (opens in a new tab)

立即取消微调作业。

路径参数

fine_tune_id字符串类型,必填项。要取消的微调作业的ID

请求示例(Python方式)

curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/cancel 
  -H "Authorization: Bearer $OPENAI_API_KEY"

响应体 (Response)

{
 "id": "ft-xhrpBbvVUzYGo8oUO1FY4nI7",
 "object": "fine-tune",
 "model": "curie",
 "created_at": 1614807770,
 "events": [ { ... } ],
 "fine_tuned_model": null,
 "hyperparams": { ... },
 "organization_id": "org-...",
 "result_files": [],
 "status": "cancelled",
 "validation_files": [],
 "training_files": [
    {
 "id": "file-XGinujblHPwGLSztz8cPS8XY",
 "object": "file",
 "bytes": 1547276,
 "created_at": 1610062281,
 "filename": "my-data-train.jsonl",
 "purpose": "fine-tune-train"
    }
  ],
 "updated_at": 1614807789,
}

微调作业的详细状态List fine-tune events

get https://api.openai.com/v1/fine-tunes/{fine_tune_id}/events (opens in a new tab)

获取微调作业的详细状态更新。

路径参数

fine_tune_id 字符串类型,必填项。要获取事件的微调作业的 ID。

查询参数

stream 布尔类型,可选。默认是 false。是否为微调作业流式传输事件。如果设置为 true,则事件将作为仅数据的服务器推送事件 (opens in a new tab)在可用时发送。当作业完成(成功、取消或失败)时,流将以 data: [DONE] 消息终止。

如果设置为 false,则仅返回到目前位置生成的事件。

请求示例(Python方式)

curl https://api.openai.com/v1/fine-tunes/ft-AF1WoRqd3aJAHsqc9NY7iL8F/events 
  -H "Authorization: Bearer $OPENAI_API_KEY"

响应体 (Response)

{
 "object": "list",
 "data": [
    {
 "object": "fine-tune-event",
 "created_at": 1614807352,
 "level": "info",
 "message": "Job enqueued. Waiting for jobs ahead to complete. Queue number: 0."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807356,
 "level": "info",
 "message": "Job started."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807861,
 "level": "info",
 "message": "Uploaded snapshot: curie:ft-acmeco-2021-03-03-21-44-20."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807864,
 "level": "info",
 "message": "Uploaded result files: file-QQm6ZpqdNwAaVC3aSz5sWwLT."
    },
    {
 "object": "fine-tune-event",
 "created_at": 1614807864,
 "level": "info",
 "message": "Job succeeded."
    }
  ]
}

删除已经训练好的模型 Delete fine-tune model

删除 https://api.openai.com/v1/models/{model} (opens in a new tab)

删除已经训练好的模型,您必须在组织中拥有所有者角色。

路径参数

model字符串类型,必填项。需要删除的模型

请求示例(Python方式)

curl https://api.openai.com/v1/models/curie:ft-acmeco-2021-03-03-21-44-20 
  -X DELETE 
  -H "Authorization: Bearer $OPENAI_API_KEY"

响应体 (Response)

 {
 "id": "curie:ft-acmeco-2021-03-03-21-44-20",
 "object": "model",
 "deleted": true
}