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。
调用参数
Parameters 参数Temperature –Randomness / Creativity slider(控制模型创造力)
Max tokens –After Max Tokens are reached, stop the completion(限制返回响应文本长度)
Top P -An alternative to sampling with temperature(决定模型返回的随机性)
Freq penalty –Don’t repeat words in your completions (调整返回词的新颖程度)
Presence penalty –Don’t use language that has already appeared in the prompt(促使模型讨论更多的话题)
Best of -Generates best_ofcompletions server-side and returns the “best“ (选择生成多个响应,并返回最佳的响应)
Azure Open AI 与 Open AI 对比
目前提供微调服务的除了openai,微软azure代理了openai的国内服务,无需vpn即可调用。
不过由于资源限制,微软当前是只开放A、B、C模型的训练,D模型需要关注微软官方发布。
注意:
1,”/“表示未知,官方未有明确说明,需实践后才可得知;
2,以Davinci 微调模型为例,当每天的调用的Token数大于720,000($14.4+$72),则Azure Open AI价格更低(不考虑训练产生的费用)
3,托管费无论是否模型是否调用都会产生
4,以上费用币种:美元