• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

finetuneGPT3模型

武飞扬头像
xiexiecn
帮助1

过程其实挺简单的,首先得注册一个账号获取token(我是叫在美国的朋友注册了一个)。注册好账号后,有18美金的试用额度,基本可以完成好几次模型训练了。除了模型训练需要收费之外,大概1000个token的费用是0.02美金。

设置好OPENAI_API_KEY这个环境变量。

    export OPENAI_API_KEY="<OPENAI_API_KEY>"

接下来就进入正题了,

1. 准备数据,格式如下,每一行都是一个json,换行用\n表示,我finetune的task只需要1000条左右的数据,模型结果还不错,根据训练时的提示,至少需要100条,越多越好

  1.  
    {"prompt": "<prompt text>", "completion": "<ideal generated text>"}
  2.  
    {"prompt": "<prompt text>", "completion": "<ideal generated text>"}
  3.  
    {"prompt": "<prompt text>", "completion": "<ideal generated text>"}
  4.  
    ...

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,无需过采用"\\"多转义。

  1.  
    import os
  2.  
    import sys
  3.  
    import openai
  4.  
    import json
  5.  
    import time
  6.  
     
  7.  
    if not os.path.exists(sys.argv[2]):
  8.  
    res = openai.Completion.create(
  9.  
    max_tokens=32,
  10.  
    model=sys.argv[1],
  11.  
    prompt=sys.argv[2] "\n##\n",
  12.  
    temperature=0.7,
  13.  
    frequency_penalty=0.1)
  14.  
    text = res["choices"][0]["text"]
  15.  
    items = text.split('\n')
  16.  
    print(sys.argv[2] "|" items[0] "|" items[2])
  17.  
    else:
  18.  
    f = open(sys.argv[2])
  19.  
    lines = [line.strip()[:-2] for line in f.readlines()]
  20.  
    f.close()
  21.  
     
  22.  
    f = open("./result.txt", "a ")
  23.  
     
  24.  
    for i,line in enumerate(lines):
  25.  
    print(i, line)
  26.  
     
  27.  
    try:
  28.  
    res = openai.Completion.create(
  29.  
    max_tokens=32,
  30.  
    model=sys.argv[1],
  31.  
    prompt=line "\n##\n",
  32.  
    temperature=0.7,
  33.  
    frequency_penalty=0.1)
  34.  
    text = res["choices"][0]["text"]
  35.  
    items = text.split('\n')
  36.  
    print(line "|" items[0] "|" items[2], file=f)
  37.  
    if i%30 == 0:
  38.  
    f.flush()
  39.  
    time.sleep(1.5)
  40.  
    except Exception as e:
  41.  
    print(e)
  42.  
    time.sleep(15)
  43.  
    f.close()
学新通

参考OpenAI API

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhihgccj
系列文章
更多 icon
同类精品
更多 icon
继续加载