如何使用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日

相关推荐

  • 探索ChatGPT替代品:寻找更多AI助手的选择

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

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

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

    2023年10月6日
    00
  • 开发者日新发布的GPT-4 Turbo和GPT-3.5 Turbo

    作为一个对技术和创新充满热情的自由职业者,我一直密切关注着人工智能领域的最新动态。最近,OpenAI宣布了GPT-4 Turbo和更新的GPT-3.5 Turbo的预览发布,这些新模型引发了广泛的兴趣和讨论。在本文中,我将为大家…

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

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

    2023年10月6日
    00
  • A.I. 谈谈人工智能(智障)写作的原理。From:PENG Bo大神。

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

    2022年6月25日
    00
  • OpenAI DevDay:AI领域的重大突破和更新

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

    2023年11月7日
    00
  • ChatGPT新功能解析:语音和图片输入

    你是否曾经想象过与AI助手进行语音交流,或者通过图片与它互动?这些看似科幻的功能如今已经成为现实。最近,有一些幸运的ChatGPT用户分享了他们在使用这些新功能时的体验,让我们一起来探索ChatGPT的语音和图片输…

    2023年10月6日
    00
  • 如何使用Chat模型进行微调:一个食谱命名实体识别教程

    在数字时代,人工智能技术正不断演进,为我们的生活和工作带来了革命性的变化。开放AI(OpenAI)的GPT-3.5-turbo模型是一项重要的技术,它可以用于各种自然语言处理任务,包括聊天和命名实体识别(NER)。本教程将…

    2023年9月14日
    00
  • 如何充分利用GPT-4提高工作学习效率

    随着AI技术的不断发展,我们进入了一个数字化的时代,AI助手已经成为了我们工作学习中的得力帮手。其中,GPT-4(ChatGPT Plus会员版)作为一款强大的自然语言处理模型,提供了许多令人惊叹的功能,包括文本和语音对…

    2023年10月18日
    00
  • 如何塑造未来工作环境?Microsoft 365 Copilot 助力企业升级

    Microsoft 365 Copilot 自2023年首次推出以来已经成为数字助理领域的翘楚。最近,微软宣布将支持额外16种语言,进一步扩大了其市场影响力。本文将探讨Copilot如何改变现代工作环境,以及微软在AI技术方面的未来规划…

    2024年4月30日
    00