OpenAI Fine-tunes ( 微调 )

OpenAI Fine-tunes ( 微调 ) 概述

Fine-tunes ( 微调 ) 的核心目标是解决 :“按照给定例子的格式和口吻来回答问题”。并不能解决 GPT 不知道的内容。

注意微调更适合调整输出格式,不适合特定行业问答场景。

创建微调

POST 请求

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

请求数据结构

training_file
微调文件 字符串 必需的
包含训练数据的上传文件的 ID。

validation_file
验证文件 字符串 选填
包含验证数据的上传文件的 ID。

model
模型 字符串 选填 默认 curie
要微调的基本模型的名称。您可以选择“ada”、“babbage”、“curie”、“davinci”或 2022-04-21 之后创建的微调模型之一。
n_epochs
整数 选填 默认为4
训练模型的时期数。一个纪元指的是训练数据集的一个完整周期。

batch_size
批量大小 整数 选填 默认为空
用于训练的批量大小。批量大小是用于训练单个前向和后向传递的训练示例数。
默认情况下,批量大小将动态配置为训练集中示例数量的 0.2%,上限为 256 - 通常,我们发现较大的批量大小往往更适合较大的数据集。

learning_rate_multiplier
学习率乘数 数字 选填 默认为空
用于训练的学习率乘数。微调学习率是用于预训练的原始学习率乘以该值。
默认情况下,学习率乘数是 0.05、0.1 或 0.2,具体取决于 final batch_size(较大的学习率往往在较大的批量大小下表现更好)。我们建议使用 0.02 到 0.2 范围内的值进行试验,以查看产生最佳结果的值。

prompt_loss_weight
数字 选填 默认为0.01
用于提示令牌损失的权重。这控制了模型尝试学习生成提示的程度(与权重始终为 1.0 的完成相比),并且可以在完成较短时为训练增加稳定效果。
如果提示非常长(相对于完成),则减少此权重以避免过度优先学习提示可能是有意义的。

compute_classification_metrics
计算分类指标 布尔值 选填 默认为假
如果设置,我们将在每个时期结束时使用验证集计算特定于分类的指标,例如准确性和 F-1 分数。可以在结果文件中查看这些指标。

classification_n_classes
分类任务中的类数 整数 选填 默认为空

classification_positive_class
分类 字符串 选填 默认为空
在进行二元分类时,需要此参数来生成精度、召回率和 F1 指标。.


suffix
后缀 字符串 选填 默认为空
最多 40 个字符的字符串,将添加到您的微调模型名称中。
例如,suffix“custom-model-name”的 a 会生成类似ada:ft-your-org:custom-model-name-2022-02-15-04-21-04.

微调流程

1 准备微调文件 .json

2 上传微调文件获取 文件 id

3 创建微调

4 等待微调完成 padding、 running、successed

5 使用 微调完成后生成的新的模型来实现会话。