OpenAI微调

2025-03-12 41
OpenAI

类型:人工智能

简介:一家开放人工智能研究和部署公司,推出了ChatGPT。

微调是指在特定的数据集上进一步训练已经预训练好的基础模型,使其在特定任务上表现更优。对于OpenAI的模型,如GPT – 3.5 Turbo等,微调可以让模型更好地适应特定领域的语言风格、术语和任务需求,例如客户服务聊天机器人、特定行业的文本生成等。

一、微调适用场景

1、特定领域语言处理:当处理法律、医学等专业领域的文本时,微调可以让模型熟悉专业术语和特定的语言表达。

2、风格化文本生成:如果需要生成具有特定风格(如幽默、正式)的文本,微调能使模型学习并遵循这种风格。

3、特定任务优化:针对特定任务,如情感分析、文本分类等,微调可以提高模型的准确性。

二、OpenAI微调准备

1、数据准备

格式要求:数据需要以JSONL(JSON Lines)格式存储,每一行是一个JSON对象,包含“messages”字段,该字段是一个消息列表,每个消息有“role”(如“system”、“user”、“assistant”)和“content”字段。

2、安装Installation

建议使用我们的OpenAI命令行界面(CLI)。要安装此软件,请运行

pip install --upgrade openai

(以下说明适用于版本0.9.4及以上。此外,OpenAI CLI 需要 python 3。)

将以下一行代码添加到shell初始化脚本(例如.bashrc、zshrc等)或在微调命令之前在命令行中运行它来设置OPENAI_API_KEY环境变量:

export OPENAI_API_KEY=your_api_key
export OPENAI_API_KEY="<OPENAI_API_KEY>"

预训练数据Prepare training data训练数据是教GPT-3说话的方式。

数据必须是JSONL(opens in a new tab)文档,其中每一行是与训练示例对应的提示完成(completion)对。

可以使用我们的CLI数据准备工具轻松将数据转换为此文件格式。

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...

针对微调设计提示和完成(completion)与基本模型(Davinci、Curie、Babbage、Ada)不同。在基本模型的提示中,通常包含多个示例few-shot(“少量学习”),但是对于微调,每个训练示例通常由一个输入示例及其相关输出组成,无需提供详细说明或在同一提示中包含多个示例。

拥有的训练示例越多,效果越好。我们建议至少有几百个示例。通常发现数据集大小翻倍会导致模型质量线性增加。

3、CLI工具data preparation tool

一个工具,可验证、提供建议并重新格式化数据。这个工具支持不同的格式,唯一的要求是包含提示和完成(completion)列/键。你可以传递CSV、TSV、XLSX、JSON或JSONL文件,并将输出保存到一个准备好进行微调的JSONL文件中,在引导你进行建议更改的过程后。

openai tools fine_tunes.prepare_data -f <LOCAL_FILE>

创建一个微调模型Create a fine-tuned model:

以下假设你已经按照上述说明准备好了训练数据。

使用OpenAI CLI启动微调作业:

openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>

其中BASE_MODEL是要开始微调的基础模型的名称(ada、babbage、curie或davinci)。

可以使用后缀参数自定义微调模型的名称。运行上面的命令会做一些事情:

  • 使用文件API(opens in a new tab)上传文件(或使用已上传的文件);
  • 创建一个微调作业;
  • 流式传输事件,直到作业完成(completion)(这通常需要几分钟,但如果队列中有许多作业或数据集很大,可能需要几小时)。

每个微调任务都从一个基础模型开始,默认为curie。模型的选择影响模型的性能以及运行微调模型的成本。模型可以是ada、babbage、curie或davinci之一。请访问我们的定价页面(opens in a new tab)了解微调价格的详细信息。

启动微调作业后,可能需要一些时间才能完成(completion)。作业可能排在我们系统中的其他作业之后,根据模型和数据集的大小,训练我们的模型可能需要几分钟或几个小时。如果任何原因导致事件流中断,可以通过运行:恢复它

openai api fine_tunes.follow -i <YOUR_FINE_TUNE_JOB_ID>

当作业完成(completion)时,它应该显示经微调的模型的名称。

除了创建微调作业之外,还可以列出现有作业、检索作业的状态或取消作业。

# List all created fine-tunes
openai api fine_tunes.list

# Retrieve the state of a fine-tune. The resulting object includes
# job status (which can be one of pending, running, succeeded, or failed)
# and other information
openai api fine_tunes.get -i <YOUR_FINE_TUNE_JOB_ID>

# Cancel a job
openai api fine_tunes.cancel -i <YOUR_FINE_TUNE_JOB_ID>
  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
OpenAI
上一篇: OpenAI图像生成
OpenAI
下一篇: OpenAI嵌入