训练自己的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

注意,我第一次运行失败了,说是访问不到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://www.rhkb.cn/news/1181.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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 训练 midjourney

Midjourney加上ChatGPT玩法 (notion.site) 语音 转文字 文字转语音、语音转文字! 这几种方法你最好要知道 - 零度解说 (freedidi.com)

chatgpt训练自己的数据python版

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

NLP:《ChatGPT: Optimizing Language Models for Dialogue一种优化的对话语言模型》翻译与解读

NLP:《ChatGPT: Optimizing Language Models for Dialogue一种优化的对话语言模型》翻译与解读 目录 《ChatGPT: Optimizing Language Models for Dialogue》翻译与解读 Abstract Samples 回答修改代码 回答道德问题 回答数学问题 回答如何写信 Methods 三…

【ChatGPT进阶】3.如何使用ChatGPT翻译文章?

以前翻译是一定要专业的人来做这项工作,但人不可能会所有的语言,但ChatGPT是可以实现的,如果你去研究过NLP,应该就清楚,翻译是它的强项。 你可以通过chatgpt把任何语言翻译成任意一个语言,而且水准不低于一…

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

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

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

一、主要解决有账号无法登录问题,共包含两种情况。 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…

2023最新!QQ接入ChatGpt!!!保姆级教程

直接先上gitee!!! 基于go-cqhttp的qqbot: java实现基于cqhttp,ws连接 由于当前chatgpt热度不断,网上众多的基于chatgpt提供的api做到chat网站层出不穷,但这些网址每次都得找,有些麻烦&#xff0…

ida接入chatgpt——WPeChatGPT

ida接入chatgpt——WPeChatGPT ida接入chatgpt——WPeChatGPT 0x00 来源 https://www.52pojie.cn/thread-1752088-1-1.html 感谢Hcho 0x01 安装 一开始git clone 不太管用,选择直接这样下载 安装所需包 按照README文档,首先在解压后的文件夹内运行…

PHP - ChatGpt 学习 仅供参考

由于最近ChatGpt 大火,但是门槛来说是对于大家最头疼的环节, 由此ChatGpt 有一个API 可以仅供大伙对接 让我来说下资质: 1:首先要搞得到一个 ChatGpt 的账户, 会获得一个KEY,该key为访问API核心&#xff0…

Python如何接入ChatGPT

文章目录 前言一、什么是ChatGPT?二、下载安装步骤1.安装Pycharm2.安装ChatGPT 总结 前言 ChatGPT现在越来越火,许多小伙伴都不知道如何去使用,或者没有梯子/国外手机号注册,Pycharm中可以安装nexchatgpt来使用,给有需…

OpenAI最新官方ChatGPT聊天插件接口《接入插件快速开始》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(二)(附源码)

Getting started 快速开始 前言Introduction 导言Plugin manifest 插件清单OpenAPI definition OpenAPI定义Running a plugin 运行插件Setup a local proxy of your public API 设置公共API的本地代理 Writing descriptions 书写描述Best practices Debugging 排除故障其它资料…

十分钟教你搭建ChatGPT 图片生成的安卓应用

十分钟教你搭建ChatGPT 图片生成的安卓应用 大家好,我是易安! 今天,我们将集成 OpenAI API (ChatGPT)来构建一个简单的类似 ChatGPT 的 android 应用程序,让它返回我们想要的图片,本文是上一篇的姊妹篇。 详细步骤 第…

ChatGpt学习辅助挑战网络工程师001

ChatGpt学习辅助挑战网络工程师001 书接上回,询问ChatGpt后,来点亮第一个技能树 成为一个网络工程师ChatGpt提出的的第一步,需要熟悉网络架构. Network Architecture: You should have a good understanding of network architectures and how different components of a net…

VisualChatGPT: 微软发布可发送和接收图片的 ChatGPT

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ​ Visual ChatGPT 连接了 ChatGPT 和一系列的 Visual Foundation 模型,以便在聊天过程中发送和接收图像。 下图为演示效果: 对该应用实现感兴趣的可以查看其…

调用chatgpt官方api实现聊天和绘图

首先要学会科学上网 1官方api文档 https://platform.openai.com/docs/api-reference/chat/create 2 获取key https://platform.openai.com/ 登录账号 之后点击右上角的头像,再点击View API keys 3 http调用聊天接口 调用地址https://api.openai.com/v1/chat/com…