训练自己的ChatGPT-OpenAI 微调模型

这篇具有很好参考价值的文章主要介绍了训练自己的ChatGPT-OpenAI 微调模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenAI终于下定决心——正式开放ChatGPT API!

ChatGPT API地址:https://platform.openai.com/docs/guides/chat

gpt-3.5-turbo的新模型
OpenAI正式打开了官方的ChatGPT API,为广大开发者打开了新的大门。

微调(Fine-tuning)

官方文档地址:OpenAI API

对于ChatGPT的表现,大家都已经感受到他的惊艳了,在试用之余,我们想该如何个性化为你使用或者为企业使用,那就不得不提到他的微调功能。

fine-tune 是指在一个已经训练好的模型上,再利用新的数据进行微调,以达到更好的适应性。在自然语言处理领域中,fine-tune 主要应用于语言模型,通常是在预训练模型的基础上,利用一定规模的新数据集对模型进行微调,以适应特定任务的要求。

举个例子,假设有一个预训练好的文本生成模型,可以根据给定的前缀生成一段连贯的文本。但是这个模型可能并不适用于特定的业务场景,例如医疗问答。此时,我们可以利用一定规模的医疗问答数据集对这个模型进行 fine-tune,以使其更好地适应医疗问答场景,生成更贴合实际需求的文本。

fine-tune 的好处在于,不需要从头训练一个模型,因为预训练模型已经具有较好的语言建模能力,并且已经包含了大量的语言知识。我们只要把业务数据集导进去,再进行训练即可。

微调的步骤

  1. 准备和上传训练数据
  2. 训练新的微调模型
  3. 使用微调模型

哪些模型可以微调?

微调目前仅适用于以下基本型号:davinci  curie  babbage  ada   text-davinci-003。

还没去尝试最新开放的ChatGPT同款模型gpt-3.5-turbo的新模型是否支持微调。

开始实操

1.python3环境准备

对OpenAI的模型进行微调,需要具备python3环境。(以Mac电脑全新安装为例)

1.1先对brew更新

brew update

训练自己的ChatGPT-OpenAI 微调模型

注意,我第一次运行失败了,说是访问不到github的仓库,所以又操作了一次就可以了。

1.2安装python3-注意安装过程比较长,我安装了十几分钟

brew install python3

训练自己的ChatGPT-OpenAI 微调模型

训练自己的ChatGPT-OpenAI 微调模型

训练自己的ChatGPT-OpenAI 微调模型

 -注意安装过程比较长,我安装了十几分钟。要有耐心

1.3继续安装pip

此时执行官方的命令会报错如下:

zsh: command not found: pip

先下载:

curl https://bootstrap.pypa.io/pip/get-pip.py -o get-pip.py

训练自己的ChatGPT-OpenAI 微调模型

用python3来安装

sudo python3 get-pip.py

训练自己的ChatGPT-OpenAI 微调模型 安装完后验证

pip -V

训练自己的ChatGPT-OpenAI 微调模型

1.4安装pandas

这步也是必须的,不然后面会报错,提示缺少pandas。

训练自己的ChatGPT-OpenAI 微调模型

安装命令:

pip install pandas

训练自己的ChatGPT-OpenAI 微调模型 这样准备工作就做完了,可以安装OpenAI的官方文档进行操作啦。

2.OpenAI环境准备

2.1安装工具

pip install --upgrade openai

训练自己的ChatGPT-OpenAI 微调模型

 2.2准备一个自己的语料库

我在硬盘上新建了一个1.json的文件,内容如下:

{"prompt": "你是谁", "completion": "我是唯一客服小助手"}
{"prompt": "你会做什么", "completion": "我能帮你解答使用唯一客服时的问题"}

2.3设置环境变量-需要把OpenAI的api的key设置进去

export OPENAI_API_KEY="自己的key"

2.4由OpenAI的工具对这个文件进行格式化

openai tools fine_tunes.prepare_data -f 本地的json文件路径

我的示例: 

openai tools fine_tunes.prepare_data -f /Users/szz/app/1.json

训练自己的ChatGPT-OpenAI 微调模型

翻译一下:

正在分析。。。
 
-根据您的文件扩展名,您提供了一个文本文件
-您的文件包含3个提示完成对。一般来说,我们建议至少有几百个例子。我们发现,示例数量每增加一倍,性能就会线性增加
-“completion”列/键不应包含空字符串。这些是行:[2]
-所有完成都以前缀“{”prompt“:”开头你`. 大多数情况下,您应该只将输出数据添加到完成中,而不添加任何前缀
-完成应该以空白字符(``)开头。由于我们使用的标记化,这往往会产生更好的结果。看见https://beta.openai.com/docs/guides/fine-tuning/preparing-your-dataset有关详细信息
 
根据分析,我们将采取以下措施:
-[必要]您的格式“TXT”将转换为“JSONL”`
-[必要]删除1行空白完成符
-[推荐]删除前缀“{”prompt“:”你` 来自所有完成[Y/n]:
-[推荐]在完成开头添加空白字符[Y/n]:
 
您的数据将写入新的JSONL文件。继续[Y/n]:
 
将修改后的文件写入`/tmp/json_prepared.jsonl`
随便看一看!
现在在微调时使用该文件:
>openai api fine_tunes.create-t“/tmp/jsonprepared.jsonl”
确保包含`stop=[“”}“]`,以便生成的文本在预期位置结束。
一旦你的模型开始训练,训练一个“curie”模型大约需要2.47分钟,而“ada”和“babbage”则需要更少的时间。在您之前,每个作业排队大约需要半小时。 

这个工具会把你提供的json文件进行格式化,格式化后的文件后缀名为jsonl,文件跟你提供的json文件放在同一个目录下面。

训练自己的ChatGPT-OpenAI 微调模型

 内容为:

{"prompt":"你是谁 ->","completion":" 我是唯一客服小助手\n"}
{"prompt":"你会做什么 ->","completion":" 我能帮你解答使用唯一客服时的问题\n"}

可以看到跟你提供的原始文件略有差别。

3.OpenAI开始训练

3.1创建一个微调模型

基于达芬奇模型,创建一个自己的模型,只有几种模型可以训练:

adababbagecurie, davinci

openai api fine_tunes.create -t 数据文件路径 -m 基础模型

我的示例: 

openai api fine_tunes.create -t /Users/szz/app/1_prepared.jsonl -m davinci

这时候有可能报错,说没有找到你的OpenAI的key,那你就再执行一次export命令

报错:

训练自己的ChatGPT-OpenAI 微调模型

成功:训练自己的ChatGPT-OpenAI 微调模型

这个时候请耐心等待几分钟或者几个小时,根据你的文本大小不同而定,官方说最大可以1GB的文件。

3.2列出所有微调任务的列表

openai api fine_tunes.list

训练自己的ChatGPT-OpenAI 微调模型

 可以看到状态是pending~训练中。。。

 3.3查看微调任务的状态

ID就是上面列表的ID,可以看到正在运行中

openai api fine_tunes.get -i 任务ID
openai api fine_tunes.get -i ft-K2iPDoch4D3Aj2fkGATUKXeM

训练自己的ChatGPT-OpenAI 微调模型

 3.4训练完成

当任务完成以后,fine_tuned_model 字敦会有模型名称,状态显示为绿色的successed。

训练自己的ChatGPT-OpenAI 微调模型

 后面就可以使用这个模型了,可以看到模型名称。

3.5使用模型

openai api completions.create -m  模型名称  -p 提示

注意: 由于训练集过小,而已使用的是达芬奇的模型,所以训练完的数据集没那么好用。我问了ChatGPT的,他给的答复如下:

ChatGPT:
你的数据集非常小,这可能是你不太好用的原因之一。一个合适大小的数据集对于fine-tuning是非常重要的,因为在fine-tuning过程中,模型需要学习如何将原始语言数据映射到特定任务的语言表示。当你的数据集很小的时候,模型可能会在数据中找到一些不相关的模式,这可能导致不合适的输出。

此外,OpenAI的达芬奇模型可以生成各种各样的内容,包括一些不适当的内容。为了减少不适当内容的生成,你需要更多的控制生成的过程。你可以使用一些技巧,例如给生成器提供更具体的上下文或者采用一些生成策略来控制生成结果。

最后,你可以尝试使用更大的模型来进行fine-tuning,这样模型就可以更好地处理复杂的任务和语言数据,从而提高生成结果的质量。

 Q:如何给生成器提供更具体的上下文或者采用一些生成策略来控制生成结果?

提供更具体的上下文可以通过为生成器提供更多的输入文本来实现,这些文本可以是与要生成的内容相关的信息。例如,如果要生成一个关于烹饪的段落,可以提供一些有关食材、烹饪工具、做法等方面的信息,以便生成器可以更好地理解要生成的内容。

采用生成策略来控制生成结果可以有多种方法,其中一些包括:

  1. 预设模板:提前准备好一些生成模板,通过将生成内容嵌入这些模板中来实现控制生成结果的目的。

  2. 调整生成器参数:调整生成器的参数,如温度、抽样方法等,以控制生成结果的多样性和准确性。

  3. 过滤生成结果:使用一些自然语言处理技术,如关键词提取、命名实体识别等,对生成的结果进行过滤,保留符合要求的内容。

4.拾遗

4.1在PlayGroud查看并测试你自己创建的模型

OpenAI API

训练自己的ChatGPT-OpenAI 微调模型

你自己训练好的模型会出现在这个位置。

4.2训练费用问题

训练模型是要收费的,会从给你的18美元配额中扣除,但只要你的数据集不是很大,扣的钱都很少,我昨天扣了0.12美元。但需要注意的是,扣完钱或者在三个月到期后,你的配额会被清空,你可以设置你的付款账号,然后就会送你120美元的配额了。

训练自己的ChatGPT-OpenAI 微调模型

训练自己的ChatGPT-OpenAI 微调模型


————————————————
参考链接:

开发自己私有chatGPT(五)训练微调openai模型_小红帽2.0的博客-CSDN博客微调了解如何为应用程序自定义模型。介绍通过微调,您可以通过提供以下内容从通过 API 提供的模型中获得更多收益:比提示设计更高质量的结果能够训练比提示所能容纳的更多示例由于提示时间较短,可以节省token更低的延迟请求GPT-3 已经对来自开放互联网的大量文本进行了预训练。当给出一个只有几个例子的提示时,它通常可以直观地判断你正在尝试执行什么任务并生成一个合理的完成。...https://blog.csdn.net/taoshihan/article/details/129036452

开发自己私有chatGPT(六)训练自己的chatGPT openai模型,微调模型,列出微调任务,使用自定义模型教程..._小红帽2.0的博客-CSDN博客在开发私有chatGPT的时候,如果我们使用官方的基础模型,那么回答的问题可能不符合我们自己的预设答案现在就是通过官方的训练方法,提供一部分数据进去,训练出自己的私有模型按照工具pip install --upgrade openai设置环境变量export OPENAI_API_KEY="自己的key"准备本地数据{"prompt": "你是谁", "complet...https://blog.csdn.net/taoshihan/article/details/129053834文章来源地址https://www.toymoban.com/news/detail-456727.html

到了这里,关于训练自己的ChatGPT-OpenAI 微调模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenAI全球招外包大军,手把手训练ChatGPT取代码农 ; 码农:我自己「杀」自己

    目录 前言 OpenAI招了一千多名外包人员,训练AI学会像人类一样一步步思考。如果ChatGPT「学成归来」,码农恐怕真的危了? 码农真的危了! 当时OpenAI也说,ChatGPT最合适的定位,应该是编码辅助工具。 用ChatGPT来debug,效果拔群 ChatGPT有一个强大的优势:我们可以在对话中与系

    2024年02月12日
    浏览(38)
  • GPT实战系列-如何用自己数据微调ChatGLM2模型训练

    广告文案生成模型 输入文字 :类型#裙 颜色#蓝色 风格#清新*图案#蝴蝶结 输出文案 :裙身处采用立体蝴蝶结装饰辅以蓝色条带点缀,令衣身造型饱满富有层次的同时为其注入一丝甜美气息。将女孩清新娇俏的一面衬托而出。 训练和测试数据组织: 数据可以从 下载链接,t

    2024年02月06日
    浏览(50)
  • 快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

    前言: 系统:ubuntu 18.04 显卡:A100-80G(蹭的,嘿嘿~) (本次主要记录如何快速进行大模型的指令微调) 地址:https://github.com/Lightning-AI/lit-llama 切换到工程目录 使用pip安装依赖库 (当然,这里可能会遇到网络问题,安装不了lightning) 可使用以下方式安装: 下载lightning工程

    2024年02月11日
    浏览(57)
  • 基于chatGLM-6B模型预训练,添加自己的数据集微调(linux版)(ptuning & lora)

    目录 准备工作 安装7z ptuning预训练 ChatGLM-6B-Ptuning.7z 懒人包下载 上传文件并解压缩 拉取依赖 进行训练 启动服务 注意事项(揽睿星舟云算力平台) lora预训练 chatGLM-All-In-One.7z 懒人包下载 上传文件并解压缩 拉取依赖 进行训练 启动服务 注意事项(揽睿星舟云算力平台) 展示

    2024年02月07日
    浏览(76)
  • ChatGPT如何训练自己的模型

    ChatGPT是一种自然语言处理模型,它的任务是生成自然流畅的对话。如果想要训练自己的ChatGPT模型,需要进行大量的数据收集、预处理、配置训练环境、模型训练、模型评估等过程。本文将详细介绍这些过程,帮助读者了解如何训练一个高品质的ChatGPT模型。 1. 收集数据 Chat

    2024年02月06日
    浏览(56)
  • 训练自己的ChatGPT 语言模型(一).md

    为什么研究这个? ChatGPT在国内外都受到了广泛关注,很多高校、研究机构和企业都计划推出类似的模型。然而,ChatGPT并没有开源,且复现难度非常大,即使到现在,没有任何单位或企业能够完全复现GPT3的能力。最近,OpenAI发布了GPT4模型,它支持图文多模态,相较于ChatGPT,

    2024年02月11日
    浏览(44)
  • OpenAI-ChatGPT最新官方接口《微调ChatGPT模型》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(四)(附源码)

    Fine-tuning 微调模型 Learn how to customize a model for your application. 了解如何为应用程序自定义模型。 ChatGPT可以帮助用户使用自己的语料集来训练出一个更加适用于用户使用场景的准确、可靠的自然语言模型。 ChatGPT的微调模型技术主要通过将先前预训练过的语言模型(如GPT-3.5)作

    2024年02月04日
    浏览(73)
  • 开箱即用的ChatGPT替代模型,还可训练自己数据

    OpenAI 是第一个在该领域取得重大进展的公司,并且使围绕其服务构建抽象变得更加容易。 然而,便利性带来了集中化、通过中介的成本、数据隐私和版权问题。 而数据主权和治理是这些新的LLM服务提供商如何处理商业秘密或敏感信息的首要问题,用户数据已被用于预训练以

    2023年04月23日
    浏览(57)
  • 【ChatGPT】预训练模型微调及其应用(ChatGLM-6B、duckduckgo_search、GPT在科研的应用等)

    instructGPT(基于提示学习的系列模型)——GPT3.5(大规模预训练语言模型)——ChatGPT模型(高质量数据标注+反馈学习)。chatGPT三大技术:情景学习、思维链、自然指令学习。 GPT4飞跃式提升:多模态、输入字符数量、推理能力、文本创造,如poem、解释图片含义、图表计算等

    2023年04月16日
    浏览(75)
  • ChatGPT进阶:利用Fine-tuning训练自己的模型

    ChatGPT是“大力出奇迹”的经典表现,大模型给ChatGPT带来了惊人的智能,但是要训练这样的大模型,可是十分烧钱的,根据OpenAI给出的数据,1700亿参数的Davinci模型从头训练一遍,大概需要耗时3个月,耗资150万美元。那我们普通人或者小公司面对这个高门槛,对自定义模型是

    2024年02月17日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包