finetuneGPT3模型
过程其实挺简单的,首先得注册一个账号获取token(我是叫在美国的朋友注册了一个)。注册好账号后,有18美金的试用额度,基本可以完成好几次模型训练了。除了模型训练需要收费之外,大概1000个token的费用是0.02美金。
设置好OPENAI_API_KEY这个环境变量。
export OPENAI_API_KEY="<OPENAI_API_KEY>"
接下来就进入正题了,
1. 准备数据,格式如下,每一行都是一个json,换行用\n表示,我finetune的task只需要1000条左右的数据,模型结果还不错,根据训练时的提示,至少需要100条,越多越好
-
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
-
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
-
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
-
...
openai提供了现成的命令可以转csv成json: openai tools fine_tunes.prepare_data -f ./train_data.csv
2. 训练,我finetune的是davinci模型,还有三四个选择,输错命令行会提示。我的task只finetune了一个周期,整个过程大概花费1美金,持续约5~10分钟
openai api fine_tunes.create -t ./train_data_prepared.jsonl -m davinci --n_epochs 1
不需要的模型还可以删除
openai api models.delete -i "davinci:ft-personal-2022-11-20-03-40-02"
用如下命令可以列出曾经训练的模型列表
openai api fine_tunes.list
3. api调用,有好几种方法,比如直接
openai api completions.create -m davinci:ft-personal-2022-11-20-04-05-47 -p "Beautiful sunset beach landscape with a boat"
我的task还需要设置更多的两个参数temperature和frequency_penalty,所以我写了个简单的脚本完成这个任务,并且openai限制1秒调用超过60次,我加了个简单的sleep。其中有个坑是,推理的时候seperator里的\n,无需过采用"\\"多转义。
-
import os
-
import sys
-
import openai
-
import json
-
import time
-
-
if not os.path.exists(sys.argv[2]):
-
res = openai.Completion.create(
-
max_tokens=32,
-
model=sys.argv[1],
-
prompt=sys.argv[2] "\n##\n",
-
temperature=0.7,
-
frequency_penalty=0.1)
-
text = res["choices"][0]["text"]
-
items = text.split('\n')
-
print(sys.argv[2] "|" items[0] "|" items[2])
-
else:
-
f = open(sys.argv[2])
-
lines = [line.strip()[:-2] for line in f.readlines()]
-
f.close()
-
-
f = open("./result.txt", "a ")
-
-
for i,line in enumerate(lines):
-
print(i, line)
-
-
try:
-
res = openai.Completion.create(
-
max_tokens=32,
-
model=sys.argv[1],
-
prompt=line "\n##\n",
-
temperature=0.7,
-
frequency_penalty=0.1)
-
text = res["choices"][0]["text"]
-
items = text.split('\n')
-
print(line "|" items[0] "|" items[2], file=f)
-
if i%30 == 0:
-
f.flush()
-
time.sleep(1.5)
-
except Exception as e:
-
print(e)
-
time.sleep(15)
-
f.close()
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhihgccj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
微信人名旁边有个图标有什么用
PHP中文网 03-11