大语言模型(LLM)-如何训练得到一个大模型?

今年6月的时候就写了一篇半成品,没有发表,一直拖到现在。现在回看那篇文章,当时对于大模型的理解略显稚嫩,就重新系统的整理一下自己的一些认识。

背景介绍

最近大半年都在做大模型微调方面相关的工作,经过长时间的沉淀,有了部分可以输出的内容,自认为对大模型各部分的理解有一定的深度,希望可以完成一篇质量较高的文章,有错误之处也请指正。

训练流程

1
这是Andrej Karpathy在微软BUILD2023大会上做主题演讲 “State of GPT”中的一页,演讲具体内容可移步B站
从上面我们可以很清晰的了解到openai是怎么训练chatgpt的

  • 首先,在Pretraining阶段,使用大量的无监督数据,可以是低质量的数据,训练一个base model也就是一个基模型
  • 接下来,进行Supervised Finetuning,也就是我们常说的有监督微调(SFT),这一步主要是让模型具备指令跟随的能力
  • 后面两部分我们可以统称为RLHF阶段,使模型的输出更符合人类的标准

具体细节我会在下面几个part给大家详细说明

Pretraining

作为最开始的stage,我们首先要训练一个基模型(base model),这个模型的训练过程就是一个预训练的过程,这一步会使用大量的无监督数据。虽然在Andrej Karpathy的演讲中,这部分数据是low-quality&large quantity,我个人认为对于openai的low-quality,对我们来说可能也是比较高质量了,数据方面一定是做了大量的工作,毕竟什么样的数据就带来什么样的模型。

  • 数据清洗
    • 统计规则
    • 训练小模型做分类器
    • 去除重复数据
    • 去除低安全性数据等
  • 基模型训练
    • 语言模型

经过pretrining训练好的语言模型还不具备对话能力,还是一个语言模型,你说前半段,他接着你说后半段,内容是连续的,并不一定能回答你问的问题,就需要第二步的训练从而实现指令跟随。

Supervised Finetuning

第二步,有监督微调
从现在开始,我们就要想办法让pretrain阶段训练好的语言模型,能够遵从用户的指令,你让他做选择题,他就做选择题,你让他进行对话总结,他就总结对话。
在构造SFT数据时,是不需要引入额外的知识的,主要目的是激发模型的指令追随能力,这点和现在主流的模型微调SFT不同,现在的SFT基本都是想给模型灌新的知识,并且能够保留模型原有的能力,这在我看来是不可能实现的,具体原因在下面会说到,在这里先卖个关子。
这里列举一些数据构造的任务类型:

  • QA对
  • 摘要总结
  • 信息抽取(实体等)
  • 翻译
  • 选择题

其实就是对应NLP的不同任务类型,这一步对数据质量要求就比较高了,脏数据会极大程度影响模型的效果,当然这是在你SFT数据量较小的情况下,数据量如果足够多,也不会有啥影响。训练完成后,我们的模型就可以作为一个聊天机器人使用了,通过引入采样,就能让每次对话大概率得到不同的回复。
这个步骤我建议大家可以去尝试一下,现在市面上开源了很多基模型,同时也有一些SFT的开源数据集,使用少量数据就能训一个对话模型出来,对于训练时间、机器资源要求都不高。

RLHF

先发了…再不发又要拖半年了,后续慢慢补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值