7 使用微调模型
当训练成功时,将看到fine_tuned_model字段中填充了检索训练详细信息时的模型名称。现在,可以在Chat Completions(适用于gpt-3.5-turbo)或遗留的Completions API(适用于babbage-002和davincii -002)中指定此模型作为参数,并使用Playground向其发出请求。
当训练完成后,模型就可以用来用作推理。在某些案例中,当使用模型处理请求,可能要花费几分钟。如果请求模型超时或未找到,可能模型还在加载中。可稍等几分钟后在试:
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="ft:gpt-3.5-turbo:my-org:custom_suffix:id",
messages=[
{
"role": "system", "content": "You are a helpful assistant."},
{
"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
8 使用检查点微调模型
除了在每个微调模型训练完成后产生一个最终的模型外,OpenAI还会在每个训练周期结束后创建一个完整模型的检查点。这些检查点本身就是完整的,能被使用到补全和聊天补全的端点中。这些检查点非常有用,因为它本质上可以为你提供一个在过拟合之前的微调版本。
怎样访问这些检查点:
- 在训练成功结束后,你可以通过查询训练状态进行成功与否验证
- 在微调训练结束后,你可以使用微调训练的ID来查询检查点的端来访问模型检查点列表
对于每一个检查点对象,你会看到用模型检查点的名字来填充fine_tuned_model_checkpoint.你可以像使用最终模型一样来使用此模型。
{
"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
}
每个检查点特有的:
- step_number: 检查点被创建的步(其中每个epoch是训练集的步数除以批大小)
- metrics: 一个对象,其中包含在创建检查点时的步骤中用于微调作业的指标
目前,只有作业的最后3个epoch的检查点被保存并可供使用。
9 分析微调模型
在整个训练过程中我们提供以下训练指标:
- 训练的损失
- 训练token的准确率
- 验证的损失
- 验证token的准确率
验证损失和验证token的准确率计算方式不同,前者是在每一步中用小批量的数据计算,后者是在每个epoch结束时的完全验证分割上。完全的验证损失和token的准确率指标是跟踪你的模型表现力最准确的指标。这些统计数据旨在提供一个完整的检查,以确保训练顺利进行(损失下降,token准确率上升)。当一个微调正在训练时,你可以查看事件对象中一些有用的指标:
{
"object": "fine_tuning.job.event",
"id": "ftevent-abc-123",
"created_at": 1693582679,
"level": "info",
"message": "Step 300/300: training loss=0.15, validation loss=0.27, full validation loss=0.40",