源代码级OpenAI的GPT-3.5微调,手把手保姆级教程,chatgpt的接口

微调(fine-tune)是什么?
网上内容多的是,不过多解释,只讲核心的
微调的基本思想是,先在大规模文本数据上预训练一个大型的语言模型,例如 GPT-3.5(这部分是大模型),然后使用特定任务的数据集(如法律、医疗),进一步对模型进行训练,以适应特定的任务(这部分是微调)。在这个过程中,模型的参数会进行微小的调整,使其在特定业务场景上的性能更好。
直接上代码:
1、首先需要拿到openai的key和url,这个github的项目比较火,有国内的接口,方便多了:
https://github.com/xing61/xiaoyi-robot/
拿到key和url。


2、开始撸python代码:(其它语言类似)

- **准备训练数据**

API_SECRET_KEY = "你的智增增获取的api_key";
BASE_URL = "http://flag.smarttrot.com/index.php/api/v1"; #智增增的base_url

# files
def files():
    openai.api_key = API_SECRET_KEY
    openai.api_base = BASE_URL
    resp = openai.File.create(
        file=open("mydata.jsonl", "rb"),
        purpose='fine-tune'
    )
    json_str = json.dumps(resp, ensure_ascii=False)
    print(json_str)


- **上传训练数据**

API_SECRET_KEY = "你的智增增获取的api_key";
BASE_URL = "http://flag.smarttrot.com/index.php/api/v1"; #智增增的base_url

# jobs
def jobs(file_id):
    openai.api_key = API_SECRET_KEY
    openai.api_base = BASE_URL
    resp = openai.FineTuningJob.create(training_file=file_id, model="gpt-3.5-turbo")   #训练文件的id要从上一步获取得到
    json_str = json.dumps(resp, ensure_ascii=False)
    print(json_str)


- **检查是否训练完成**

要注意的是:
上一步提交完训练任务之后,模型是需要一段时间来训练的,训练的时长取决于你的数据量大小、当下训练的任务数、openai的算力是否充足等等。
也就是说模型是否训练好,是需要有一个判断的
这里通过返回数据的:status=succeeded来进行判断

API_SECRET_KEY = "你的智增增获取的api_key";
BASE_URL = "http://flag.smarttrot.com/index.php/api/v1"; #智增增的base_url

# retrieve
def retrieve(ftid):
    openai.api_key = API_SECRET_KEY
    openai.api_base = BASE_URL
    resp = openai.FineTuningJob.retrieve(ftid)    #微调任务id要从上一步获取得到
    json_str = json.dumps(resp, ensure_ascii=False)
    print(json_str)

- **使用微调模型**

要注意的是:
像使用基础模型gpt-3.5,gpt-4一样,但这个模型名字是你自己训练的,所以名字是比较特殊的,需要从上一步的接口中获取得到

API_SECRET_KEY = "你的智增增获取的api_key";
BASE_URL = "http://flag.smarttrot.com/index.php/api/v1"; #智增增的base_url

# chat
def chat_completions(query):
    openai.api_key = API_SECRET_KEY
    openai.api_base = BASE_URL
    resp = openai.ChatCompletion.create(
        model="ft:gpt-3.5-turbo-0613xxxxxxxxxxxxxxxxxxx",   # 模型名字要从上一步获取得到
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": query}
        ]
    )
    json_str = json.dumps(resp, ensure_ascii=False)
    print(json_str)

恭喜,大功告成!!
你就在gpt-3.5基础上训练了一个自己的模型了 

源代码级OpenAI的GPT-3.5微调,手把手保姆级教程,chatgpt的接口_第1张图片

你可能感兴趣的:(gpt-3,chatgpt,AIGC,gpt,AI编程,gpu算力)