OpenAI, GPT-3.5 Turbo, 微调训练, 数据准备, 对话生成

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

准备数据

在进行微调训练之前,首先需要准备好你的数据。数据的格式应该如下所示:

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already."}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?"}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters."}]}

数据中包含了对话消息,每个消息都有一个"role"表示角色(可以是system、user或assistant),以及"content"表示消息内容。

格式化并验证数据

在载入数据之后,我们需要对数据进行格式化和验证,确保其符合Chat completions消息的结构。下面是一个Python脚本示例,用于格式化和验证数据:

import json
from collections import defaultdict

# Next, we specify the data path and open the JSONL file

data_path = "<YOUR_JSON_FILE_HERE>"

# Load dataset
with open(data_path) as f:
    dataset = [json.loads(line) for line in f]

# We can inspect the data quickly by checking the number of examples and the first item

# Initial dataset stats
print("Num examples:", len(dataset))
print("First example:")
for message in dataset[0]["messages"]:
    print(message)

# 省略了数据格式化和验证的代码,这部分代码用于确保数据的正确性和合法性

if format_errors:
    print("Found errors:")
    for k, v in format_errors.items():
        print(f"{k}: {v}")
else:
    print("No errors found")

以上代码会帮助你检查数据是否符合要求,并输出任何格式错误。

数据长度检查

在进行微调训练之前,还需要检查数据的长度是否超过了4096个token的限制。下面是一个示例代码,用于计算数据中各个对话的token数量并进行检查:

import tiktoken
import numpy as np

# Token counting functions
encoding = tiktoken.get_encoding("cl100k_base")

# ...

# Last, we can look at the results of the different formatting operations before proceeding with creating a fine-tuning job:

# Warnings and tokens counts
n_missing_system = 0
n_missing_user = 0
n_messages = []
convo_lens = []
assistant_message_lens = []

for ex in dataset:
    messages = ex["messages"]
    if not any(message["role"] == "system" for message in messages):
        n_missing_system += 1
    if not any(message["role"] == "user" for message in messages):
        n_missing_user += 1
    n_messages.append(len(messages))
    convo_lens.append(num_tokens_from_messages(messages))
    assistant_message_lens.append(num_assistant_tokens_from_messages(messages))

print("Num examples missing system message:", n_missing_system)
print("Num examples missing user message:", n_missing_user)
print_distribution(n_messages, "num_messages_per_example")
print_distribution(convo_lens, "num_total_tokens_per_example")
print_distribution(assistant_message_lens, "num_assistant_tokens_per_example")
n_too_long = sum(l > 4096 for l in convo_lens)
print(f"\n{n_too_long} examples may be over the 4096 token limit, they will be truncated during fine-tuning")

以上代码将帮助你确保数据的长度不会超过4096个token的限制,否则需要在微调训练中进行截断处理。

上传数据文件

在验证数据后,你需要将数据文件上传到OpenAI平台,以便进行微调训练。可以使用OpenAI SDK的以下代码来上传文件:

openai.File.create(
  file=open("mydata.jsonl", "rb"),
  purpose='fine-tune'
)

创建微调作业

接下来,你可以使用OpenAI SDK来创建微调作业。以下是示例代码:

openai.FineTuningJob.create(training_file="file-abc123", model="gpt-3.5-turbo")

使用微调模型

微调完成后,你可以使用微调后的模型来进行对话生成。以下是一个示例代码:

completion = openai.ChatCompletion.create(
  model="ft:gpt-3.5-turbo:my-org:custom_suffix:id",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)

通过上述代码,你可以与微调后的模型进行互动,并生成自定义的对话内容。

微调模型的价格

微调模型的成本包括初始训练成本和使用成本:

  • 培训:0.008美元/1K tokens
  • 使用输入:0.012美元/1K tokens
  • 使用输出:0.016美元/1K tokens

根据你的微调作业的规模和使用量,你可以估算微调模型的成本。请参考OpenAI的定价页面来了解更多细节。

通过本文的教程,你可以开始使用OpenAI GPT-3.5 Turbo进行微调训练,以适应你的特定需求和任务。祝你成功!

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

转载请注明作者:王大神

原文出处:OpenAI, GPT-3.5 Turbo, 微调训练, 数据准备, 对话生成

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

相关推荐

  • 聊天机器人与我——新手如何更好地与ChatGPT交流?

    在一个寒冷的夜晚,我坐在书桌前,面对屏幕,不断地试图和我的新助理——ChatGPT进行交流。每当我认为我掌握了和它聊天的技巧,结果往往让我失望。这就好像我突然进入了鲁迅笔下的小杂货铺,和店主尝试用我不太熟悉的…

    2023年10月5日
    00
  • 使用Chat Completions API的JSON模式:创建可解析的智能助手

    在现代科技的时代,人工智能正日益成为我们生活中的重要一部分。OpenAI的Chat Completions API是一个强大的工具,可以用于创建智能助手,以执行各种任务,从回答问题到生成文本。本教程将向您介绍如何使用JSON模式…

    2023年11月25日
    00
  • OpenAI的大手笔:ChatGPT免注册使用,开创AI普及新篇章

    摘要:OpenAI最近的一项创新动作——ChatGPT免注册使用,标志着人工智能应用门槛的进一步降低。本文将从我个人的视角出发,深入探讨这一变革对AI普及和用户体验的潜在影响,以及OpenAI如何通过用户数据来不断优化AI模…

    2024年4月4日
    00
  • GPT嗨翻了:AI定制梦想成真

    AI领域的巨大突破在今天变得更加令人兴奋,GPT(Generative Pre-trained Transformers)技术的新发展让人们热血沸腾。OpenAI在首届开发者日上揭开了一系列惊人的新功能,为AI的未来描绘了更加令人期待的画面。 定制…

    2023年11月7日
    00
  • ChatGPT字数限制的深入分析

    人工智能技术的迅猛发展将聊天机器人带入了我们的生活和工作中,其中ChatGPT凭借其强大的文本生成能力备受欢迎。然而,ChatGPT在字数输出上存在一定的限制,本文将深入分析这一现象的原因以及解决方案。 ChatGPT的…

    2023年8月19日
    00
  • OpenAI ChatGPT发布“GPT构建器”:自定义聊天机器人即将来临

    近日,有令人激动的消息传来,OpenAI即将为其备受欢迎的聊天机器人ChatGPT推出一项重要更新,这将允许用户自定义创建和管理聊天机器人。这一新功能被称为“GPT构建器”,旨在让用户通过输入提示来设定机器人的默认语…

    2023年11月7日
    00
  • 微软与OPENAI合作引发美英监管关注

    不久前,英国竞争和市场管理局正式启动了对微软与OPENAI合作关系的调查。这一消息引发了广泛关注,因为微软是全球领先的科技巨头,而OPENAI则在人工智能领域有着举足轻重的地位。这次调查究竟涉及什么问题,以及对…

    2023年12月13日
    00
  • 开发者大会揭秘:OpenAI带来全新ChatGPT原型Gizmo

    两天后,OpenAI的首届开发者大会将在全球瞩目的目光下拉开帷幕。关于这场盛会将带来什么新的技术突破,曾经一度风起云涌。一位名为CHOI的消息灵通人士泄露了一些重要信息,引发了广泛热议。据CHOI透露,OpenAI将发…

    2023年11月7日
    00
  • OpenAI首席执行官Sam Altman揭示用户热切期待的ChatGPT未来功能

    数字时代的浪潮中,人工智能技术日益成为改变世界的力量,而OpenAI一直处于这一浪潮的前沿。在2024年,OpenAI的首席执行官Sam Altman揭示了用户对ChatGPT未来功能的热切期待。这一消息引发了广泛关注,因为它涉及到…

    2023年12月26日
    00
  • OpenAI领导层换届:新风向与挑战

    近日,OpenAI宣布了其领导层的重大变动,引发了业界和媒体的广泛关注。作为人工智能领域的领军企业,OpenAI的这一决策不仅标志着公司的新发展阶段,也可能预示着整个人工智能行业的未来走向。 OpenAI领导层的变更 …

    2023年11月18日
    00