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

article/2024/12/22 20:08:23

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

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

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

brew install python3

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

1.3继续安装pip

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

zsh: command not found: pip

先下载:

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

用python3来安装

sudo python3 get-pip.py

 安装完后验证

pip -V

1.4安装pandas

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

安装命令:

pip install pandas

 这样准备工作就做完了,可以安装OpenAI的官方文档进行操作啦。

2.OpenAI环境准备

2.1安装工具

pip install --upgrade 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

翻译一下:

正在分析。。。
 
-根据您的文件扩展名,您提供了一个文本文件
-您的文件包含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文件放在同一个目录下面。

 内容为:

{"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命令

报错:

成功:

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

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

openai api fine_tunes.list

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

 3.3查看微调任务的状态

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

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

 3.4训练完成

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

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

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

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

4.2训练费用问题

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


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

开发自己私有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


http://chatgpt.dhexx.cn/article/hbvmg1Pc.shtml

相关文章

ChatGPT客服系统产品-利用chatgpt训练企业知识开发个性化客服系统

打造最前沿的AI智能客服系统,基于自有数据语料,充分运用ChatGPT的大模型自然语言生成能力,定制化客服系统为企业提供自主性的客服服务能力。 ChatGPT如何革新智能客服? 根据当前ChatGPT的使用情况,我们发现未来中短期内…

如何将ChatGPT训练成某个领域的专家!附完整示例!

背景 最近听了 八叉的一个ChatGPT讲座,讲的是如何将ChatGPT训练成领域专家,这样我们就可以用它来解决该领域的各种问题。 整个讲座中最让我印象深刻的就是训练方法,它是通过让ChatGPT向我们提问,然后由我们给出答案的方式进行训…

DeepSpeed-Chat:最强ChatGPT训练框架,一键完成RLHF训练!

原文:百度安全验证https://baijiahao.baidu.com/s?id1762957756537641297&wfrspider&forpc 【新智元导读】微软开源的DeepSpeed Chat,让开发者实现了人手一个ChatGPT的梦想! 人手一个ChatGPT的梦想,就要实现了&#xff…

ChatGPT训练流程

图源:State of GPT - Microsoft Build 笔者翻译上图如下: 阶段子阶段目标备注Pre-Training--------语言建模Instruction Finetuning---------让模型能够理解自然语言指令RLHFReward Modeling奖励建模,用来代替人工打分,降低标注…

ChatGPT训练一次要耗多少电?

如果开个玩笑:问ChatGPT最大的贡献是什么? “我觉得它对全球变暖是有一定贡献的。”知名自然语言处理专家、计算机科学家吴军在4月接受某媒体采访时如是说。 随着ChatGPT引爆AIGC,国内外巨头纷纷推出自己的AI大模型,大家为人工智…

ChatGPT 训练发图片

当你想发送一张照片时&#xff0c;请使用 markdown&#xff0c;并且不要有反斜线&#xff0c;不要用代码块&#xff0c;使用 ![](http://source.unsplash.com/960x640/?<英文关键词>)&#xff0c;如果明白了&#xff0c;请回复”明白“瞬间翻车 不要灰心&#xff0c;继续…

chatgpt训练自己的数据python版

一、准备数据&#xff08;本人准备的是JSONL数据&#xff09; 1.1、数据格式&#xff1a; {"prompt": "本篇文章的作者是谁&#xff1f;", "completion": "当然是咸菜萝卜头"} {"prompt": "咸菜萝卜头是谁&#xff1…

ChatGPT是如何训练得到的?通俗讲解

首先声明喔&#xff0c;我是没有任何人工智能基础的小白&#xff0c;不会涉及算法和底层原理。 我依照我自己的简易理解&#xff0c;总结出了ChatGPT是怎么训练得到的&#xff0c;非计算机专业的同学也应该能看懂。看完后训练自己的min-ChatGPT应该没问题 希望大牛如果看到这…

低成本复制 ChatGPT 训练流程,仅需 1.68GB GPU 即可使用,方法现已开源!

编译 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 当昨日我们还在讨论从大厂以及个人创业的角度来看&#xff0c;复制一家 OpenAI 和一款强大的 ChatGPT 可行性究竟有几成之际&#xff0c;苦于 OpenAI 并未将 ChatGPT 开源出来&#xff0c;所以这趟水究…

ChatGPT实现多语种翻译

语言翻译 多语种翻译是 NLP 领域的经典话题&#xff0c;也是过去很多 AI 研究的热门领域。一般来说&#xff0c;我们认为主流语种的互译一定程度上属于传统 AI 已经能较好完成的任务。比如谷歌翻译所采用的的神经机器翻译(NMT, Neural Machine Translation)技术就一度让世人惊…

突发!ChatGPT 开始大面积封号,注册功能关闭!亚洲成重灾区,网友自救喊话:不要登录,不要登录...

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; ​ “不要登录ChatGPT&#xff01;” “暂时远离人工智能和ChatGPT概念板块高位股&#xff01;” 就在这两天&#xff0c;一些关于ChatGPT的疾呼突然在各种社交平台和群聊刷屏了。 …

chatgpt赋能python:Python模拟登录-实现自动化登录的方法

Python模拟登录 - 实现自动化登录的方法 在日常生活中&#xff0c;我们使用的许多网站需要我们进行登录才能够访问其功能和服务。而在进行人工操作时&#xff0c;频繁登录已经成为了一件烦琐的任务。因此&#xff0c;自动化登录功能的实现也成为了一个极为重要的需求&#xff…

chatgpt 无法登录报错Access denied、OpenAl‘s services are not available in yourcountry. (error=unsupported )

一、主要解决有账号无法登录问题&#xff0c;共包含两种情况。 1、Oops! OpenAls services are not available in yourcountry.(errorunsupported country) 2、Access denied You do not have access to chat.openai.com. The site owner may have set restrictions that p…

ChatGPT在英文论文润色编辑领域有哪些应用?

ChatGPT&#xff08;全名Chat Generative Pre-trained Transformer&#xff09;是美国人工智能研究实验室OpenAI研发的聊天机器人程序产品&#xff0c;于2022年11月发布。 ChatGPT基于人工智能神经网络技术&#xff0c;能够根据与人类聊天的内容进行互动交谈&#xff0c;根据丰…

完整攻略,如何利用ChatGPT搞科研!

Datawhale分享 最新&#xff1a;ChatGPT应用&#xff0c;来源&#xff1a;量子位 这位研究僧&#xff0c;GPT-4都发布了&#xff0c;你还在纯人工搞科研吗&#xff1f; 已经有人实测&#xff1a; ChatGPT科研全流程都能用&#xff0c;尤其是对于英语非母语的科研人员&#xff…

ChatGPT | 分享论文 Rebuttal、Review 时可能会用到的 Prompt

ChatGPT 可以帮助润色学术论文&#xff0c;助力搞科研&#xff01; 论文 Rebuttal, Review 过程中可能使用的一个 Prompt&#xff1a; Prompt&#xff1a;I want you to act as an English translator, spelling corrector and improver. I will speak to you in any language…

【ChatGPT】开源学术科研专用 ChatGPT 来了——GitHub斩获 14k+ 星(需要API_SECRET_KEY)

科研工作专用ChatGPT拓展,特别优化学术Paper润色体验,支持自定义快捷按钮,支持markdown表格显示,Tex公式双显示,代码显示功能完善,新增本地Python工程剖析功能/自我剖析功能。 目录 ChatGPT 学术优化 1. 下载项目 2. 配置API_KEY和代理设置

【chatgpt-01】部署学术神器chatgpt_academic

目录 1 chatgpt_academic简介2 前置准备3 项目下载/配置4 安装依赖5 项目配置6 运行7 测试实验性功能 1 chatgpt_academic简介 chatgpt_academic是一个科研工作专用ChatGPT拓展&#xff0c;特别优化学术Paper润色体验&#xff0c;支持自定义快捷按钮&#xff0c;支持markdown表…

chatgpt插件+AI英语论文润色

谷歌商店安装插件 https://chrome.google.com/webstore/detail/dochero-chatgpt-powered-a/dpindoafffjhbnhbdgjibhdoklelcfdn输入你要修改的句子&#xff1a;

玩转ChatGPT:中科院ChatGPT Academic项目部署与测评

一、ChatGPT Academic简介 最近&#xff0c;以ChatGPT为代表的超大规模语言模型火出了圈&#xff0c;各种二次开发项目也是层出不穷。 比如说今天我们玩弄的这个“ChatGPT Academic”&#xff0c;在GitHub上已经13.7K的点赞了。 项目地址&#xff1a;https://github.com/bina…