微调
管理微调作业以将模型量身定制到您的特定训练数据。
相关指南:微调模型
创建微调作业
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,
}