预备 Preliminary:
接下来的操作我默认以下条件已满足:
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 openai
response = 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://my.lmcjl.com/post/2469.html
展开阅读全文
4 评论