博主最近一直在玩GPT,对于openai开放了,玩腻了ChatGPT后,想着如何给GPT灌输一些它现阶段无法回答的问题,发现openai 官宣支持 微调后,打开官方API文档准备摩拳擦掌小试牛刀一番了!
首先要开始微调,我们需要再OpenAI中创建一个账户。
相关接口文档可以官网顶部 Documentation中 点进去,然后在右边菜单栏找到 FineTuing。
官方给的微调方法非常简单,总结下来就3个步骤:
-
- 准备和上传训练数据 openai tools fine_tunes.prepare_data -f < LOCAL_FILE >
使用这个工具预处理数据,会报错只需要 pip install pandas即可。
这个LOCAL_FILE是本地文件路径。文件格式为 jsonl,这是官方给的示例:
运行上述命令是系统所有的提示都选Y即可,纬度是否切分训练集好测试集是可以选n。
总体就是对你的jsonl进行预处理,例如prompt添加分隔符,completion添加空格开头和 结束符
-
- 训练新的微调模型
export OPENAI_API_KEY="<OPENAI_API_KEY>" 设置环境变量,在你自己的API_KEY中进行微调 openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m ada --n_epochs=可以根据自己的数据集设置 默认是4
-
- 使用微调模型
openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>
上面是官方的使用,我自己使用python SDK直接调用,stop参数取决于之前文件预处理时,completion的结束符号是什么,默认加的应该都是 [" END"]
response = openai.Completion.create(
# model='text-davinci-003',
# model='ada:ft-personal-2023-03-27-06-49-01',
model='davinci:ft-personal-2023-03-30-07-33-45',
prompt=data["msg"],
temperature=0,
max_tokens=300,
top_p=1.0,
frequency_penalty=0.0,
presence_penalty=0.0,
timeout= 100,
# stop=["->"]
)
print("响应")
或者使用官网的playground测试。
好了以上就是openai FineTune的全部过程了,最后希望大家微调顺利!!!
彩蛋: 数据集不会写,可以找chatGPT给你写一份,100行的训练数据,由于是微调,100行就足够训练了哦。。博主亲测好用。。。