37DATA

ChatGPT模型微调总结

微调基础模型对比

当前openAi官方只开放GPT3系列的Ada、Babbage、Curie、Davinci四个模型进行微调训练。

下面展开聊聊四个模型优劣点和用途,大家可以根据自己的数据量级和人物场景做具体选择。

Davinci

Davinci 是功能最强大的模型,可以执行其他模型能够执行的任何任务,并且所用的指令通常更少。

对于需要深入理解内容的应用程序(例如面向特定受众的摘要和创意内容的生成),Davinci 将产生最佳结果。

Davinci 提供的这些增加的功能需要更多计算资源,因此 Davinci 的成本更高,并且 Davinci 不如其他模型快。

Davinci 擅长的另一个领域是理解文本的意图。Davinci 擅长解决多种逻辑问题并解释字符动机。Davinci 已经能够解决一些涉及因果关系的最具挑战性的 AI 问题。

用途:复杂的意图、因果关系、受众摘要

Curie

Curie 功能强大,但速度很快。虽然 Davinci 在分析复杂文本方面更强大,但 Curie 可以执行许多精细化的任务,例如情绪分类和摘要。

Curie 也善于回答问题和执行问答,适合用作常规服务聊天机器人。

用途:语言翻译、复杂分类、文本情绪、摘要

Babbage

Babbage 可以执行简单的分类等简单任务。在语义搜索方面,它的功能也很强大,可对文档与搜索查询的匹配程度进行排名。

用途:中等分类、语义搜索分类

Ada

Ada 通常是最快的模型,可以执行的任务有分析文本、地址更正和不需要太多细微差别的某些分类任务等等。Ada 的性能通常可以通过提供更多上下文来改进。

用途:分析文本、简单分类、地址更正、关键字

微调训练参数

训练超参数的选择会影响微调后模型的最终成效,可以根据下面的一些经验总结进行初步调试,后续再做一些组合实验找到属于自己数据的更优超参组合。

1. training_file: str 训练JSONL文件ID(['prompt':'completion'])
2. validation_file: str 分类任务:验证JSONL文件ID
3. model: str 基础模型( "ada", "babbage", "curie", "davinci"或者是训练的微调模型)
4. n_epochs:int 训练模型的周期数。一个周期指的是完整地遍历训练数据集一次。针对翻译任务,建议使用小epochs往往效果更好
5. batch_size:int 批量大小是用于训练单个前向和后向传递的训练示例数量。默认为训练集中示例数的约 0.2%,上限为 256。一般来说,对于较大的数据集,较大的批量大小通常效果更好。
6. learning_rate_multiplier:float 微调学习率是用于预训练的原始学习率乘以此参数。建议尝试范围在 0.02 到 0.2 之间的值。
7. prompt_loss_weight:float 对prompt输入的学习权重。如果相比completion,prompt很长,则减少此权重以避免过度优先学习提示。
8. compute_classification_metrics:bool 分类任务:在每个周期结束时计算验证集上的分类特定指标(准确率、F1 得分等)
9. classification_n_classes:int 分类任务:类别数
10. classification_positive_class:str 分类任务:指定正样本标签
11. classification_betas:array 2分类任务:array,影响F-1分数的计算。值为1时,精准率和召回率权重一样,值越大,召回权重更大。
12. suffix:str 微调模型名的前缀,最多40个字符

模型训练指标

在发布训练任务时,可以把训练数据拆分成训练集和验证集,发布微调任务后,openai会用trianing_file训练微调模型,用validation_file验证模型的效果。

在任务进行中和结束后,均可通过任务ID(ft-XXXX)查询监督训练过程中epoch的模型loss。

调用参数

  1. Parameters 参数Temperature –Randomness / Creativity slider(控制模型创造力)

  2. Max tokens –After Max Tokens are reached, stop the completion(限制返回响应文本长度)

  3. Top P -An alternative to sampling with temperature(决定模型返回的随机性)

  4. Freq penalty –Don’t repeat words in your completions (调整返回词的新颖程度)

  5. Presence penalty –Don’t use language that has already appeared in the prompt(促使模型讨论更多的话题)

  6. Best of -Generates best_ofcompletions server-side and returns the “best“ (选择生成多个响应,并返回最佳的响应)

Azure Open AI 与 Open AI 对比

目前提供微调服务的除了openai,微软azure代理了openai的国内服务,无需vpn即可调用。

不过由于资源限制,微软当前是只开放A、B、C模型的训练,D模型需要关注微软官方发布。

Image

Image

注意:

1,”/“表示未知,官方未有明确说明,需实践后才可得知;

2,以Davinci 微调模型为例,当每天的调用的Token数大于720,000($14.4+$72),则Azure Open AI价格更低(不考虑训练产生的费用)

3,托管费无论是否模型是否调用都会产生

4,以上费用币种:美元