InstructGPT高效实践——【DeepSpeed( 二 )


0.2 -Chat的数据集设计
上述各阶段训练的一个关键就是数据集的设计,每个阶段需要使用的数据格式都不尽相同,-Chat根据其中存在的共性,将数据集设计成了相对统一的形式,由类进行统一管理,然后再根据不同的训练阶段细化处理出相应的数据格式 。
0.2.1 数据格式基本概念 数据格式名称说明样例

InstructGPT高效实践——【DeepSpeed

文章插图
对当前情境的描述,为模型生成提供指令输入信息,可以理解为通俗含义上的“问句”,适用于 。
"Human:tell me aboutin a few ? : "
/
【InstructGPT高效实践——【DeepSpeed】对上下文的响应、回答、应答,可以理解为通俗含义上的“答句” 。
“ is athat , , and, , , andPhone. It is thein the world by , and is the -in the world by.is also a majorof cloud,theAzure cloudand the365 suite of .”
应答中的一种,人类所偏好的应答 。
“ is athat , , and, , , andPhone. It is thein the world by , and is the -in the world by.is also a majorof cloud,theAzure cloudand the365 suite of .”
应答中的一种,人类所排斥的应答 。
“I’m not sure what you mean.”
完整对话,由衔接应答得到 。
“Human:tell me aboutin a few ? :is athat , , and, , , andPhone. It is thein the world by , and is the -in the world by.is also a majorof cloud,theAzure cloudand the365 suite of .”
人类偏好的完整对话,由衔接偏好应答得到,适用于和 。
“Human:tell me aboutin a few ? :is athat , , and, , , andPhone. It is thein the world by , and is the -in the world by.is also a majorof cloud,theAzure cloudand the365 suite of .”
人类排斥的完整对话,由衔接排斥应答得到,适用于 。
“Human:tell me aboutin a few ? : I’m not sure what you mean.”
unsup
无监督语料,符合自然语言要素的文本,适用于自回归语言模型的无监督训练 。
" is a freethat isandbyfromthe world. Iton a wide range of , fromandtoand.can , edit, orto,it an open andforand . One of the keyofis itsto , withtoin anand. "
-Chat设计的数据格式是直接服务于阶段训练的:
并且假如你确定要进行完整的三阶段训练,-Chat鼓励使用可以同时适应三阶段的数据集,即同时具备、、的数据集,他们认为在不同阶段中,使用不同的数据集则面临着数据分布差异问题,尤其是第二、第三阶段使用与第一阶段不同的数据集,这将可能导致第二、第三阶段训练出的模型质量变差 。
One thing to note is that: If you plan to only do step 1 SFT,more -is. , if you do plan to do steps 2 and 3, thentoo many -SFT could : these data could befrom the data used for steps 2/3,which could cause/worse modelstep 2/3. That is part of thewhy weonthewith twoand the , andsplit ainto all 3 steps.
基于上述情况(三阶段使用同一数据集)考虑,-Chat在构建数据集时提供了一个叫做“”的传参,当你使用一个适用三阶段的数据集时,通过对该传参进行列表赋值,可以对三阶段数据比例进行设置,如“[6,2,2]”,这表示对于当前数据集,将分配全量数据的 6 6 + 2 + 2 \frac{6}{6+2+2} 6+2+26?提供给第一阶段用于训练、验证,同理,分配全量的 2 6 + 2 + 2 \frac{2}{6+2+2} 6+2+22?提供给第二阶段用于训练、验证,分配全量的 2 6 + 2 + 2 \frac{2}{6+2+2} 6+2+22?提供给第三阶段用于训练、验证 。
0.2.2 -Chat的数据读取流
在此简单讲述UML时序图的元素含义:- 箭头表示信息传递:实线表示调用,虚线表示返回;- alt表示假设分支,其后方“[]”中的内容表示“条件”;- loop表示循环;- 淡蓝色区域即为高亮部分 。
总的来说,在训练的主流程代码main.py中,供调用的()将通过函数“t()”进行获取,其中将涉及到预存机制:如果已经存在预存数据,则直接通过torch.load()进行载入得到;如果未存在预存数据,则需要进行一系列预处理和预存的操作 。获取的过程大致为(“括号序号”与UML时序图的“圈序号”对应):