引言
GPT 3.5-4一个模型对接所有业务,难免力不从心,如何定制自己的ChatGPT/GPT-4?
(1)GPT 3.5 微调API发布
8月22日,OpenAI宣布用户可以对ChatGPT(GPT-3.5 Turbo)微调,特定任务上,定制模型可以趋近甚至超过GPT-4。
初版 GPT-3 基础模型(ada、babbage、curie 和 davinci)微调 2024 年 1 月 4 日正式关闭。babbage-002 和 davinci-002 作为替代方案,用户可将其用作基础模型或微调模型。
同时,秋季将开放GPT-4的微调。
用户终于可以用上自己的专属ChatGPT了。
什么是微调?
微调英文名 finetune,属于NLP里术语,对应NLP的第三、四范式时代
NLP四大范式
第一范式:非神经网络时代的完全监督学习()。需要大量任务相关的训练数据,通过特征工程和算法,代表算法是朴素贝叶斯Naïve Bayes、支持向量机SVM、逻辑回归LR等;
第二范式:基于神经网络的完全监督学习()。也需要大量任务相关的训练数据,通过深度学习方法,自动获取特征(表示学习)进行端到端分类学习;
第三范式:预训练,精调范式():当前使用比较多的预训练+微调范式,通过预训练的方式(比如掩码语言模型Masked Language Model)来学习海量的语言学知识,然后下游使用少量的任务相关的数据对预训练模型进行微调即可完成相关任务;
第四范式:预训练,提示,预测范式():当前进入了Prompt Learning提示学习的新范式,使用Few-shot或者Zero-shot即可完成下游任务。
(Fine-tuning)通过训练超出提示范围的更多示例来改进小样本学习,在大量任务上取得更好的结果。模型经过微调后,不再需要在提示中提供示例,进而节省成本并实现更低延迟的请求。
微调可让更好地利用 API 提供的模型:
比设计提示(prompt)质量更高的结果
能够训练更多不适合提示的示例
由于提示较短而节省 token
更低的延迟请求
微调涉基本步骤:
准备并上传训练数据
训练一个新微调模型
使用微调模型
GPT-3.5 微调有什么用
开发者通过监督微调实现个性化定制,适配各自业务场景,显著提高模型性能
更加可控:更好的遵循指令,如 精简回复、以特定语言风格。(不必再在prompt中强调用某种语言)
输出格式更可靠:微调提升了模型回复的一致性,适用于要求特定格式输出的情形(代码补全/组合API调用/json输出)
角色更稳定:微调让模型输出更加贴合某种角色,如 企业品牌代言人
除了性能提升,微调还能缩短 prompt 长度,同时保持效果。
GPT-3.5-Turbo 微调版能处理 4k tokens(之前GPT-3微调模型的两倍). 早期测试发现:通过监督指令微调,prompt长度最多缩减 90%,api调用加速,成本削减。
GPT 的“微调”与 Llama2 之类的微调不同,不会调整网络的所有权重,只是会调整网络小部分。代价是 OpenAI 微调的成本较低,但功能也没有“真正的”微调强大。
(2)微调实践
官方介绍,微调基本流程分4步
Prepare your data 准备语料:用户按要求准备语料格式
Upload files 上传文件:通过api上传语料到OpenAI服务器(需要key),完成后找到对应的文件id
Create a fine-tuning job 启动微调任务:启动微调任务,需要用户指定模型(一般是gpt-3.5-turbo-0613)、文件名(服务端名称,非原始文件名),训练完成后会邮件通知模型名。
Use a fine-tuned model 使用微调模型:切换新模型名,正常调用即可
精简图解如下:
官方提供的shell命令
未来会提供UI交互方式,持续提升用户体验。
对于程序员,当然更习惯代码调用,Python版本如下:
数据处理
将jsonl格式(每行都是json串的文本文件)的数据(question, answer两个字段)转换为OpenAI要求的格式
数据示例:
上传文件
执行完毕后返回文件列表
从中找到本次上传文件位置,如下标0, 或1
启动微调任务
模型选择
终端返回
稍等片刻后,查看个人邮箱,记录新模型名
使用微调模型
看下新模型效果
简单微调过后不用写prompt也能让gpt-3.5-turbo-0613有更加专业的回复
(3)价值分析
上传的数据会被滥用吗?
官方:传入传出微调API的所有数据归客户所有,任何组织(包括OpenAI)都不能用来训练模型
微调花钱多吗
微调成本分为两个部分:初始训练成本与使用成本:
训练:0.008 美元/1K tokens
使用成本
输入:0.012 美元/1K tokens
输出:0.016 美元/1K tokens
比如,gpt-3.5-turbo 微调作业中包含 10 万个 token 的训练文件。经过 3 个 epoch 训练轮次,预计成本为 2.40 美元。
这次微调实践花费
10条数据(289个汉字,5769个字节),花费 0.16 刀; 按照 0.008 单价算,大概训练了3轮
微调一次果然费用陡增。
各模型费用对比总结如下:
注
单位 $/1k tokens
官方收费指南
什么时候用微调?
微调的 GPT 3.5 Turbo 生成成本是基本模型生成成本的8 倍,因此最好处于 OpenAI 提到的“将提示大小减少 90%”的范围内,才能从中获得成本效益。
另外,这只是部分参数微调,非全参数,如果有更多领域数据,更灵活的需求,建议使用开源模型(详见ChatGPT复现: 三步走+大模型进化图谱)
(4)附录
参考:
OpenAI官方资讯:https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates
openai 3.5微调实战:https://github.com/LearnPrompt/LLMs-cookbook/tree/main/gpt3.5
领取专属 10元无门槛券
私享最新 技术干货