如何使用GPT-3.5 Turbo进行自定义Fine-tuning

嗨,大家好,我是王大神。作为一名AI技术博主,我一直关注着最新的人工智能技术,尤其是OpenAI的GPT系列模型。今天,我将与大家分享如何使用GPT-3.5 Turbo进行自定义Fine-tuning,以便训练出符合特定需求的AI模型。

Fine-tuning是一种强大的技术,它可以让我们根据自己的数据和任务来定制GPT-3.5 Turbo模型,使其能够更好地适应特定应用领域。在本教程中,我将以实际案例为例,演示如何使用食谱数据集进行Fine-tuning,以创建一个食谱信息提取模型。

步骤一:准备工作

在开始Fine-tuning之前,我们需要完成一些准备工作。首先,确保你的Python包安装最新版本的OpenAI。你可以使用以下命令来安装:

!pip install --upgrade openai

接下来,我们需要导入所需的库和设置OpenAI API密钥:

import json
import openai
import os
import pandas as pd
from pprint import pprint

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")

步骤二:数据准备

Fine-tuning的成功与否很大程度上取决于数据的质量和准备工作。在本例中,我们将使用食谱数据集进行Fine-tuning,这个数据集包含了各种食谱以及每个食谱中提取出的通用食材列表,适用于命名实体识别(NER)任务。

2.1 数据集加载

首先,我们需要加载我们要使用的数据集,并确保它足够专注于模型学习,同时也足够通用,以便不会错过未见过的示例。在这个例子中,我们从RecipesNLG数据集中提取了一个子集,只包含来自www.cookbooks.com的文档。

# 读取我们要使用的数据集,这将是RecipesNLG数据集,我们已经清理过,只包含来自www.cookbooks.com的文档
recipe_df = pd.read_csv("data/cookbook_recipes_nlg_10k.csv")

recipe_df.head()

这个数据集的前几行看起来像这样:

title ingredients directions link source NER
No-Bake Nut Cookies ["1 c. firmly packed brown sugar", ... ["In a heavy 2-quart saucepan, mix brown sugar...", ... www.cookbooks.com/Recipe-Details.aspx?id=44874 www.cookbooks.com ["brown sugar", "milk", "vanilla", "nuts", ...
Jewell Ball'S Chicken ["1 small jar chipped beef, cut up", ... ["Place chipped beef on bottom of baking dish....", ... www.cookbooks.com/Recipe-Details.aspx?id=699419 www.cookbooks.com ["beef", "chicken breasts", "cream of mushroom...
Creamy Corn ["2 (16 oz.) pkg. frozen corn", ... ["In a slow cooker, combine all ingredients. C...", ... www.cookbooks.com/Recipe-Details.aspx?id=10570 www.cookbooks.com ["frozen corn", "cream cheese", "butter", ...
Chicken Funny ["1 large whole chicken", ... ["Boil and debone chicken.", "Put bite size pi...", ... www.cookbooks.com/Recipe-Details.aspx?id=897570 www.cookbooks.com ["chicken", "chicken gravy", "cream of mushroo...
Reeses Cups(Candy) ["1 c. peanut butter", ... ["Combine first four ingredients and press in ...", ... www.cookbooks.com/Recipe-Details.aspx?id=659239 www.cookbooks.com ["peanut butter", "graham cracker crumbs", "bu...

2.2 数据准备

在Fine-tuning过程中,我们需要将数据准备成适合模型的格式。对于ChatCompletion格式的Fine-tuning,每个训练示例都是一个简单的消息列表。示例中包含以下角色的消息:系统消息、用户消息和助手消息。在我们的例子中,用户消息包括食谱的标题和食材信息,而助手消息包括提取出的通用食材列表。

以下是一个示例训练示例的格式:

[
    {
        "role": "system",
        "content": "You are a helpful recipe assistant. You are to extract the generic ingredients from each of the recipes provided."
    },
    {
        "role": "user",
        "content": "Title: No-Bake Nut Cookies\n\nIngredients: [\"1 c. firmly packed brown sugar\", \"1/2 c. evaporated milk\", \"1/2 tsp. vanilla\", ...]\n\nGeneric ingredients: "
    },
    {
        "role": "assistant",
        "content": "[\"brown sugar\", \"milk\", \"vanilla\", ...]"
    }
]

我们可以使用以下代码来准备训练数据:

training_data = []

system_message = "You are a helpful recipe assistant. You are to extract the generic ingredients from each of the recipes provided."

def create_user_message(row):
    return f"""Title: {row['title']}\n\nIngredients: {row['ingredients']}\n\nGeneric ingredients: """

def prepare_example_conversation(row):
    messages = []
    messages.append({"role": "system", "content": system_message})

    user_message = create_user_message(row)
    messages.append({"role": "user", "content": user_message})

    messages.append({"role": "assistant", "content": row["NER"]})

    return {"messages": messages}

for _, row in recipe_df.iterrows():
    training_data.append(prepare_example_conversation(row))

# 将数据保存到文件中
with open("fine_tuning_data.jsonl", "w") as outfile:
    for example in training_data:
        outfile.write(json.dumps(example) + "\n")

现在,我们已经准备好了Fine-tuning所需的训练数据。

步骤三:Fine-tuning

接下来,我们将使用准备好的数据集对GPT-3.5 Turbo进行Fine-tuning。在进行Fine-tuning之前,请确保你有足够的计算资源和时间,因为Fine-tuning可能需要一些时间。

import openai

# 定义Fine-tuning的训练参数
fine_tuning_params = {
    "model": "text-davinci-003",
    "checkpoint": "latest",  # 或者选择一个特定的checkpoint
    "dataset": {
        "path": "fine_tuning_data.jsonl",
        "split": 0.8,  # 数据集分割为训练和验证集
    },
    "max_steps": 10000,  # 训练的最大步数
    "save_checkpoint_every": 1000,  # 每隔多少步保存一个checkpoint
    "overwrite": True,  # 如果已经存在同名的模型,是否覆盖
}

# 开始Fine-tuning
response = openai.ChatCompletion.create(**fine_tuning_params)
pprint(response)

Fine-tuning的时间长度取决于所选参数和模型的大小,但一旦完成,你就会获得一个定制的模型,可以用于特定任务

步骤四:使用Fine-tuned模型

一旦Fine-tuning完成,你就可以使用新的Fine-tuned模型来执行特定任务。在我们的示例中,我们可以使用模型来提取食谱中的通用食材列表。

def extract_generic_ingredients(title, ingredients):
    prompt = f"Title: {title}\n\nIngredients: {ingredients}\n\nGeneric ingredients: "
    response = openai.ChatCompletion.create(
        model="your-fine-tuned-model-name",  # 使用你的Fine-tuned模型名字
        messages=[
            {"role": "system", "content": "You are a helpful recipe assistant. You are to extract the generic ingredients from this recipe."},
            {"role": "user", "content": prompt},
        ],
    )

    assistant_response = response['choices'][0]['message']['content']
    return assistant_response

# 示例:提取通用食材列表
recipe_title = "No-Bake Nut Cookies"
recipe_ingredients = ["1 c. firmly packed brown sugar", "1/2 c. evaporated milk", "1/2 tsp. vanilla", ...]

generic_ingredients = extract_generic_ingredients(recipe_title, recipe_ingredients)
print("Generic ingredients:", generic_ingredients)

这样,你就可以使用Fine-tuned模型执行特定的任务了。

结论

在本文中,我向大家介绍了如何使用GPT-3.5 Turbo进行自定义Fine-tuning,以便训练出符合特定需求的AI模型。通过准备数据、进行Fine-tuning和使用Fine-tuned模型,你可以为各种任务创建定制的AI助手。希望这个教程对你有所帮助,祝你在Fine-tuning旅程中取得成功!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何使用GPT-3.5 Turbo进行自定义Fine-tuning

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年10月14日
下一篇 2023年10月14日

相关推荐

  • A.I. 谈谈人工智能(智障)写作的原理。From:PENG Bo大神。

    在互联网时代,营销文章的需求与日俱增。为了应对这一挑战,越来越多的人开始尝试使用机器学习来生成营销内容。本文将介绍如何借助机器学习,特别是基于字级别的生成模型,来生成大量优质的营销文章,以满足不断增…

    2022年6月25日
    00
  • Chatbox:你的桌面上的终极AI合作伙伴

    在我们进入今天的话题之前,让我与你分享一个故事。不久前,我发现自己在调试一些提示和API时,迫切需要一个简单易用的工具。我感觉或许还有其他人也需要这样的工具,于是我将其开源了。起初,我并没有想到它会如此…

    2023年10月21日
    00
  • 秒出PPT:让PPT制作秒变神器的AI工具

    在现代职场和教育领域,制作精美的演示文稿(PPT)是一项常见而重要的任务。然而,对于许多人来说,PPT制作可能是一项繁琐和耗时的工作。随着人工智能技术的不断发展,出现了秒出PPT这一基于AI技术的在线PPT编辑神…

    2023年10月6日
    00
  • OpenAI, GPT-3.5 Turbo, 微调训练, 数据准备, 对话生成

    在最近的更新中,OpenAI推出了Fine-tune(微调)功能,允许我们基于自己的数据对GPT-3.5 Turbo进行微调训练。微调训练是一个强大的工具,可以使GPT模型适应特定领域或任务。本文将为你介绍如何使用OpenAI官方文档中…

    2023年10月6日
    00
  • 【详细教程】如何训练自己的GPT2模型(中文)-踩坑与经验

    你是否曾经梦想过拥有自己的中文GPT-2模型,能够生成高质量的中文文本?现在,你可以实现这个梦想!本教程将带你一步步了解如何创建自己的GPT-2模型,以及如何应对在这个过程中可能遇到的各种挑战和问题。 准备工作…

    2023年4月16日
    00
  • GPT-3.5 Turbo精细调整:定制化模型为您的业务增添智能 | OpenAI新功能解析

    在人工智能领域,GPT-3.5 Turbo是一款非常强大的模型,但如果你想要更好地适应自己的用例,提高性能,并在规模上运行定制模型,精细调整是一个非常有用的工具。本教程将详细介绍如何进行GPT-3.5 Turbo的精细调整,…

    2023年8月23日
    00
  • 将AlphaMix框架应用于虚拟货币交易?

    有一天,在一个炎热的夏日午后,坐在电脑前的我感到有点不耐烦。突然,一个朋友打来电话,说:“你听说过虚拟货币交易吗?这个领域可是潜力无限!”我的好奇心被点燃了,我开始深入研究虚拟货币交易,最终,我发现了…

    2023年10月6日
    00
  • 探索ChatGPT替代品:寻找更多AI助手的选择

    故事从一个普通的工作日开始。王大神坐在办公室里,思考着如何更好地利用人工智能来提高工作效率。他一直是技术和创新的热情支持者,因此对于使用AI助手来辅助工作和生活充满兴趣。 突然,他在网络上发现了一些替代…

    2023年10月11日
    00
  • Open-Assistant:公众的AI助手

    在一个寒冷的冬夜,你可能会坐在电脑前,试图寻找一个智能助手,一个可以帮助你完成日常工作,甚至拓展知识领域的工具。而在这个数字化的世界中,有一个开源项目决定站出来,帮助每一个人实现这个梦想。这个项目,…

    2023年10月8日
    00
  • OpenAI DevDay:AI领域的重大突破和更新

    在AI领域,每一次的突破和更新都备受期待,而在OpenAI DevDay上,我们迎来了一系列重大新功能和更新的宣布。这些变化将如何影响AI应用和开发者社区?本文将深入探讨这些重要信息。 GPT-4 Turbo的全新突破 OpenAI宣…

    2023年11月7日
    00