预备 Preliminary:
接下来的操作我默认以下条件已满足:
1.已安装openai pakage, 具体可以看我的上两篇文章。
2.做的是生成任务,如果是其他任务诸如抽取和问答,可以参考,对照官方文档调整对应操作。
Step 0.5 : 设置密钥
官网指令(Linux):
export OPENAI_API_KEY="<OPENAI_API_KEY>"
如果你是Windows,请这样操作:
setx OPENAI_API_KEY "<OPENAI_API_KEY>"
Step 1 :准备数据
我是简单的生成,所以只有输入"prompt"和输出"completion"这两个东西,
官方给了很多数据格式与载体格式,我这里用的是csv,
很简单,两个列,列名对应好就可以。
这里演示,我们假设我们的微调训练数据文件名为 pac.csv
openai tools fine_tunes.prepare_data -f pac.csv
此时完成了文件处理,他会帮你加好一些预处理操作,一直选Y(yes)就行。
Step 2: 创建并训练微调模型
参数 -t 是你生成的jsonLine文件
参数 -m是你的基础模型,这里我选择的是达芬奇
openai api fine_tunes.create -t "pac_prepared.jsonl" -m davinci
当这句话开始执行, 先会把文件传到云端,然后微调训练就开始了,你可以用给出的命令 follow查看进度。
openai api fine_tunes.follow -i "<model_id>"
或者你也考虑list指令看当前全部模型状态
openai api fine_tunes.list
在输出中找到你的训练id, status属性会显示"pending"
当训练结束,可以使用的时候,status会变成 “processed”
Step 3: 使用微调模型结果进行预测:
在命令行:
openai api completions.create -m "<model_name>" -p " 帮我生成肯德基吮指原味鸡的广告语 ->"
如果你想像在官网playground上面那样调一些模型参数,可以考虑python调用方式:
import openairesponse = openai.Completion.create( # 模型名称 model= "<model_name>", # 用户提供的输入文本,用于指导GPT输出 prompt=" 生成文案关于必胜客的牛肉披萨 ->", # 控制输出的多样性,0-1,其中0表示最保守的输出,1表示最多样化的输出。 temperature=0.2, # 输出的最大长度(输入+输出的token不能大于模型的最大token),可以动态调整 max_tokens=1000, # [控制字符的重复度] -2.0 ~ 2.0 之间的数字,正值会根据新 tokens 在文本中的现有频率对其进行惩罚,从而降低模型逐字重复同一行的可能性 frequency_penalty=0.5, # [控制主题的重复度] -2.0 ~ 2.0 之间的数字,正值会根据到目前为止是否出现在文本中来惩罚新 tokens,从而增加模型谈论新主题的可能性 presence_penalty=0.5,)print(response['choices'][0]['text'])
response有很多输出属性,可以自行做其他拆解。
此处python调用API的代码参考 @感谢地吸引力 原文链接:
https://blog.csdn.net/weixin_43764974/article/details/129218852