菜单

聊天模型微调

相关源文件

本文档涵盖了微调 OpenAI 聊天模型的完整工作流程,特别侧重于使用 ChatCompletion 格式对 GPT-4o mini 进行微调。它提供了数据准备、模型训练和使用实际案例进行推理的实用指导。

有关问答任务微调的信息,请参阅问答任务微调。有关数据准备的最佳实践,请参阅微调数据准备。有关函数调用微调的信息,请参阅函数调用微调

概述

微调聊天模型允许您通过训练比提示中能容纳的更多示例,为特定的对话任务和领域自定义 OpenAI 模型。这种方法尤其适用于

  • 领域特定实体提取
  • 专业对话风格
  • 一致的输出格式
  • 任务特定推理模式

该过程包括以 ChatCompletion 格式准备训练数据、通过 Files API 上传、创建微调任务以及部署生成的模型。

微调工作流程

完整的微调过程遵循从数据准备到模型部署的结构化流程

来源:examples/How_to_finetune_chat_models.ipynb14-24

数据准备

ChatCompletion 格式结构

微调数据必须遵循 ChatCompletion 格式,其中每个训练示例都包含一个messages 数组,包含 system、user 和 assistant 角色

来源:examples/How_to_finetune_chat_models.ipynb208-224

数据处理函数

该 Notebook 实现了将原始数据转换为微调格式的关键函数

功能目的输入输出
create_user_message(row)将食谱数据格式化为用户提示DataFrame 行格式化字符串
prepare_example_conversation(row)创建完整的 ChatCompletion 示例DataFrame 行消息字典
write_jsonl(data_list, filename)将训练数据保存为 JSONL 格式示例列表JSONL 文件

prepare_example_conversation 函数使用一致的系统消息来构建每个训练示例,并以食谱标题和配料格式化用户输入,期望助手提取通用配料。

来源:examples/How_to_finetune_chat_models.ipynb256-274 examples/How_to_finetune_chat_models.ipynb349-354

训练集和验证集拆分

该实现为训练和验证创建了单独的数据集

  • 训练数据:行 0-100 (training_df = recipe_df.loc[0:100])
  • 验证数据:行 101-200 (validation_df = recipe_df.loc[101:200])
  • 测试数据:行 201-300 (test_df = recipe_df.loc[201:300])

这种拆分有助于正确的模型评估并防止训练期间过拟合。

来源:examples/How_to_finetune_chat_models.ipynb304-332 examples/How_to_finetune_chat_models.ipynb646-647

微调 API 工作流程

文件上传过程

训练数据必须上传到 OpenAI 的 Files 端点才能创建微调任务

来源:examples/How_to_finetune_chat_models.ipynb427-438

作业管理

微调过程涉及通过 API 创建和监控任务

主要任务属性包括

  • job_id: 用于跟踪的唯一标识符
  • status: 当前状态 (validating_files, running, succeeded)
  • trained_tokens: 已处理的 token 数量
  • fine_tuned_model: 最终模型标识符

来源:examples/How_to_finetune_chat_models.ipynb467-481 examples/How_to_finetune_chat_models.ipynb512-517

训练进度监控

list_events API 提供详细的训练进度,包括损失指标和检查点

训练事件显示了训练损失、验证损失和检查点创建的逐步进度。

来源:examples/How_to_finetune_chat_models.ipynb561-568

模型推理

使用微调模型

训练完成后,微调模型可以通过 Chat Completions API 完全像基础模型一样使用

微调模型保持相同的 API 接口,但根据训练数据提供专门的行为。

来源:examples/How_to_finetune_chat_models.ipynb671-675

性能验证

该 Notebook 展示了在保留数据上进行测试以验证模型性能。

这种方法确保了微调模型在训练数据之外的泛化能力。

来源:examples/How_to_finetune_chat_models.ipynb646-654

最佳实践

数据质量要求

  • 领域焦点:微调在专注于特定领域时效果最佳。该示例使用来自单一来源 (cookbooks.com) 的食谱,而不是混合多个领域的数据。
  • Token 限制:每个训练示例限制为 4096 个 token。更长的示例会被截断。
  • 示例数量:从 30-50 个经过良好修剪的示例开始,然后线性扩展以获得更好的性能。

模型选择

  • 层级要求:GPT-4o mini 微调适用于使用层级为 Tier 4 和 Tier 5 的开发者。
  • 基础模型:使用gpt-4o-mini-2024-07-18 作为微调的基础模型。

对话结构

在训练期间,对话被拆分,其中最后一条作为完成目标,其余作为提示。这种结构对于多轮对话训练至关重要。

来源:examples/How_to_finetune_chat_models.ipynbexamples/How_to_finetune_chat_models.ipynb221-224 examples/How_to_finetune_chat_models.ipynb282-283 examples/How_to_finetune_chat_models.ipynb468-469