ChatGPT原理详解+实操

这篇具有很好参考价值的文章主要介绍了ChatGPT原理详解+实操。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ChatGPT已近火了快大半年了,从去年刚出来的时候小编就关注了一下,也具体的使用过,然后就惊为天人,再然后就没有然后了,因为小编那段时间沉迷于AIGC了。ChatGPT今年开年后更是火的一塌糊涂,无论是行业内还是行业外的人,都在对这个东西进行炒作。那么,玩也玩过了,是不是可以了解一下其内部原理呢?小编就在这班门弄斧试着用通俗的话术来解释一下ChatGPT背后的原理,虽然小编不做生成任务,但也试着了解了一下,望各位大佬勿喷!!!

InstructGPT模型结构

谈到ChatGPT肯定是绕不开instructGPT的,或者说ChatGPT的内核就是instructGPT。那么,想要了解ChatGPT,就是直接了解instructGPT,instructGPT分为如下三大步:

  • SFT:生成模型GPT的有监督精调 (supervised fine-tuning)
  • RM:奖励模型的训练(reward model training)
  • PPO:近端策略优化模型( reinforcement learning via proximal policy optimization)

下面根据这三大步分为三个Step进行讲解以及实操。

SFT(supervised fine-tuning)原理

其实这一步没啥好说的,主要的东西还是大量的Prompt数据,GPT模型通过有监督的Prompt数据进行精调,其实就是做next token prediction任务。然后用精调后的模型对每个输入的[文本+prompt]进行generate,生成4~9个输出,并且进行解码
操作。具体的模型流程如下图所示:

ChatGPT原理详解+实操



SFT流程图
 

这一步的原理比较简单,难的是数据问题,需要大量的有监督Prompt文本,这里使用一个文本进行展示。

SFT代码实操

  • 数据准备

这里以一条数据为例,数据如下所示:

Raw Data Prompt Label
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。 大熊猫是 一种有黑白斑纹的动物。
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。 大熊猫是 中国特有种,主要栖息地是中国四川、陕西和甘肃的山区。
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。 大熊猫是 已在地球上生存了至少800万年,被誉为“活化石”和“中国国宝”即国兽,世界自然基金会的形象大使,是世界生物多样性保护的旗舰物种。
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。 大熊猫是 属于熊科、大熊猫属的哺乳动物。仅有二个亚种。雄性个体稍大于雌性。体型肥硕似熊、丰腴富态,头圆尾短,头躯长1.2-1.8米,尾长10-12厘米。

首先将以上数据形成一个输入列表,如下所示:

raw_data = "我们去成都旅游,必须要去的地方是大熊猫繁殖基地。"
prompt = "大熊猫是"
labels = ["一种有黑白斑纹的动物。","中国特有种,主要栖息地是中国四川、陕西和甘肃的山区。",
"已在地球上生存了至少800万年,被誉为“活化石”和“中国国宝”即国兽,世界自然基金会的形象大使,是世界生物多样性保护的旗舰物种。",
"属于熊科、大熊猫属的哺乳动物。仅有二个亚种。雄性个体稍大于雌性。体型肥硕似熊、丰腴富态,头圆尾短,头躯长1.2-1.8米,尾长10-12厘米。"]
combine_data = [raw_data+prompt+label for label in labels]2.

  • 初始化模型,对输入数据进行编码,这里采用的是GPT2模型,如下所示:

from torch.utils.data import Dataset
from transformers import Trainer, TrainingArguments
from transformers import AutoTokenizer, AutoModelForCausalLM
# 模型加载
tokenizer = BloomTokenizerFast.from_pretrained('pre_train_model/gpt2')
model = BloomForCausalLM.from_pretrained('pre_train_model/gpt2')
# 自定义DataSet类
class Datasets(Dataset):
def __init__(self, sample):
super(Datasets, self).__init__()
self.sample = sample

def __getitem__(self, item):
res = {k: v[item] for k, v in self.sample.items()}
return res

def __len__(self):
return len(self.sample['labels'])
# 数据转换
combine_data_token = tokenizer.batch_encode_plus(
initial_data_,
max_length=256,
padding='max_length',
truncation=True,
return_tensors='pt'
)
# 将标签标签加入
combine_data_token['labels'] = combine_data_token['input_ids']
combine_data_token['labels'] = torch.where(
combine_data_token['labels']==0,
-100,
combine_data_token['labels']
)
# 模型训练保存
trainer_args = TrainingArguments("./model/", learning_rate=2e-5, weight_decay=0.01, num_train_epochs=10, auto_find_batch_size=True)
trainer = Trainer(model=initial_model, args=trainer_args, train_dataset=Datasets(initial_token_info))
trainer.train()
trainer.save_model()

  • 模型加载/生成

# 加载模型
model = AutoModelForCausalLM.from_pretrained('./model')
# 处理输入数据
input_data = raw_input + prompt
input_datas = tokenizer.encode_plus(
input_data,
return_tensors='pt'
)
input_ids = input_datas['input_ids']
# 模型生成
result = model.generate(
input_ids=input_ids,
max_length=256,
do_sample=True, # 增加随机性
num_beams=5,
num_return_sequences=5, # 每个样本生成5个结果
no_repeat_ngram_size=3, # 防止重复的token
early_stopping=True # 提前停止
)

decode_tokens = tokenizer.batch_decode(
result,
skip_special_tokens=True
)

results = [i.replace(' ', '') for i in decode_tokens]

print("results",results)

结果如下所示:

我们去成都旅游,必须要去的地方是大熊猫繁殖基地。大熊猫是今世界上保存最完好的哺乳动物之一,也是世界自然保护联盟濒危物种红色名录的保护对象之一。在这里,你可以看到全世界最大的熊猫栖息地成都。成都是中国国家林业局直属的国家重点风景名胜区,是国家森林公园、国家湿地公园和国家地质公园的重要组成部分,是全国重点文物保护单位、全国生态文明建设示范区、中国红色旅游名城、国际生态旅游目的地和国际旅游岛建设先进区。地址:四川省成都市绵阳市成华区成都高新技术产业开发区成华大道1号乘车路线:成都绵阳都江堰雅
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。大熊猫是我国唯一的国家二级保护动物,是世界上保存最完整的动物种群之一,也是我国第一个国家级自然保护区。我们是四川省的首批国家重点保护野生动物和珍稀动物基金会的成员,被誉为中国动物保护的摇篮和世界生物多样性保护基地,被中国科学院、中华人民共和国国家林业局授予全国生态文明建设示范区称号,被国务院批准为国家森林城市、国际生态旅游目的地。熊猫基地位于成都市双流区东南部,是国家aaaa级旅游景区,国家地理标志保护单位。熊猫栖息地为亚热带或热带的高山
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。大熊猫是我国唯一的国家级自然保护区,也是世界上保存最完好的熊猫种群之一。它们栖息在亚热带或热带的高海拔草原上,生活
环境十分优越,是中国四大自然奇观之一,被誉为世界自然遗产和中国国家森林公园。熊猫栖息地主要分布在中国大陆的西藏、青海、甘肃、宁夏、新疆、内蒙古、山西、辽宁、吉林、黑龙江、江苏、河南、安徽、湖北、湖南、江西、广东、海南、四川、云南、贵州、陕西等地。中国熊猫研究中心主任、中国科学院院士、国家自然科学基金委员会委员、中华全国工商业联合会副主席
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。大熊猫是我国唯一的国家级自然保护区,也是世界上保存最完整、规模最大的野生动物种类繁多的地区之一,是中国国家重点保护的珍稀濒危动物及其栖息地和世界自然遗产的重要组成部分,被誉为中国最美丽的城市和世界生物多样性保护基地,被国际旅游组织评为全球生态旅游目的地。成都熊猫国家公园位于四川省甘孜藏族自治州,是国家aaaa级旅游景区,被《世界遗产名录》列为全国重点文物保护单位。目前,我国已建成国家森林公园、国家湿地公园和国家地质公园,国家林业局、国务院扶贫
我们去成都旅游,必须要去的地方是大熊猫繁殖基地。大熊猫是现存最大、保存最完整的动物,属于国家二级保护动物。熊猫种类繁多,分布广泛,主要分布在四川、云南、陕西、甘肃、宁夏、内蒙古、新疆、青海、吉林、辽宁、黑龙江、山西、江苏、江西、河南、湖北、湖南、广东、广西、海南、重庆、贵州、西藏、四川等省区市。它们的栖息地主要为亚热带或热带的(低地)湿润低地林、亚高山草原、高山湖泊、高原湿润山区和高原沼泽地等,常栖息在高海拔地区。在中国大陆,熊猫分布于四川省甘孜藏族自治州和青海省西宁市等地。雄性熊猫体长约1.5米

总结

至此,就完成了GPT2模型的有监督精调训练。可能有的读者会说,你这和instructGPT的SFT过程不一样,是有点不一样,但思路原理是一样的,而且笔者自己没有好的硬件设备,只能在小模型上试试水,而且笔者也没有大规模的高质量有监督数据文章来源地址https://www.toymoban.com/news/detail-422670.html

到了这里,关于ChatGPT原理详解+实操的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【对比】文心一言对飚ChatGPT实操对比体验

    百度【文心一言】体验申请通过 本狗中午干饭时,天降短信,告知可以 体验文心一言 ,苦等一个月的实操终于到来。心中这好奇的对比心理油然而生,到底是老美的【ChatGPT】厉害,还是咱度娘的【文心一言】更牛。特来分享【文心一言】与【ChatGPT】 快问快答 ,看看到底谁

    2023年04月25日
    浏览(42)
  • 计算机视觉之姿态识别(原理+代码实操)

    •人体分割使用的方法可以大体分为人体骨骼关键点检测、语义分割等方式实现。这里主要分析与姿态相关的人体骨骼关键点检测。人体骨骼关键点检测输出是人体的骨架信息,一般主要作为人体姿态识别的基础部分,主要用于分割、对齐等。一般实现流程为: •主要检测人

    2023年04月16日
    浏览(39)
  • 异地局域网对接:异地组网原理与实操

    无论是在工作还是学习过程中,我们经常会有异地访问局域网的需求。所谓异地组网,就是要打通两地的局域网络环境,在任何一地的局域网络环境下,能够通过输入异地局域网地址的方式,实现类似于本地局域网访问的效果。本文将详解异地局域网对接的原理,并予以实操

    2024年02月02日
    浏览(46)
  • 巧用ChatGPT编写万字长文的论文,纯干货实操

    文 / 韩彬(微信公众号:量子论) 用ChatGPT写文章属于它的基本操作了,现在我们看看如何使用ChatGPT编写论文级的文章。 论文的编写步骤通常有这四步: 1、定主题 2、写提纲 3、填内容 4、改标题(可选项) 这几点其实可以运用于我们对ChatGPT的操作。 这里面有个小技巧,建

    2024年02月01日
    浏览(47)
  • 万字知识长文:ChatGPT 从零完全上手实操指南

    ChatGPT 的横空出世,让很多人焦虑不已,不过,你完全不需要为此焦虑,因为 比 AI 更强大永远是驾驭 AI 为自己所用的人类 。 而且  GPT   远没有各大商家炒作的那么玄乎   ,它应用逻辑也非常简单,你完全没必要为此去花钱报各种班学习。 今天我就用一篇文章带你掌握 G

    2024年02月02日
    浏览(52)
  • 外包做了1个月,技术退步一大半了。。。

    先说一下自己的情况,本科生,20年通过校招进入深圳某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试,已经让我变得不思进取,谈了2年的女朋友也因为我

    2024年02月03日
    浏览(39)
  • 【C++ OpenCV】LUT查找表原理、实操、使用时机

    存在的意义: 在OpenCV中,LUT代表查找表(Lookup Table),它是一种用于像素值映射的技术。查找表是一个数组,其中每个元素对应于输入像素值的一个映射值。使用LUT可以有效地对图像进行像素值的转换,常用于颜色空间转换或者对特定像素值进行操作。 LUT通常在需要将图像

    2024年02月06日
    浏览(55)
  • 因果推断--Uplift model的原理和python实操(三)

    目录 一、Uplift Model的应用场景 二、Uplift Model原理及建模方法 2.1 建模目标 2.2 建模方法 1. 双模型--差分响应模型 2. 标签转化--Class Transformation Method 2.3 模型评估 1. uplift 柱状图 2. gini曲线 三、python中如何实现 3.1 数据读入与简单描述性分析 3.2 建模--双模型 3.3 uplift 柱状图 3.

    2024年02月08日
    浏览(40)
  • 最全最小系统板原理图设计实操(涉及电容、电阻选型)

    cw32小蓝板 前言 本文主要介绍cw32的最小系统板。主要包含供电、晶振、复位、下载、主控及其配件组成。主要学习开源工程开源cw32无刷电机训练营 还是有点高估自己了,并没有完成pcb的涉及,主要是一些基础性的东西并不知道,导致后期布线困难。 1.1 type-c电源供电 首先先

    2024年02月08日
    浏览(41)
  • 花30分钟,我用ChatGPT写了一篇2000字文章(内附实操过程)

    有了ChatGPT之后,于我来说,有两个十分明显的变化: 1. 人变的更懒 因为生活、工作中遇到大大小小的事情,都可以直接找ChatGPT来寻求答案。 2. 工作产出量更大 之前花一天,甚至更久才能写一篇原创内容,现在有了主题、框架之后,ChatGPT 30分钟就能给我一篇「水准之上」

    2024年02月07日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包