NLP大模型技术详解

更细节的NLP大模型训练经验。

解码器解码策略

解码器基于概率似然函数,T时刻的word概率是由0-T时刻下word生成后的条件概率决定的。

实际使用中,解码器基于贪婪搜索(greed)进行了变体,以生成更丰富的回答。

num_beams - 束搜索

在第一次贪婪搜索时多束进行,提高搜索域

no_repeat_ngram_size - 重复抑制

不允许前后word重复出现次数过多

do_sample - 随机采样

随机生成文本,增大搜索域,通过额外三个参数来限制

- temperature 0-1 控制随机程度
- top-k 取前k个概率最高的词
- top-p 取概率满足p的词

训练策略

一些社区的训练策略:

  • 短文本token合并,通过attention mask实现,避免padding浪费

  • 多轮对话,通过round等关键词拼接实现

  • lora/ptuningv2 会不可避免的带来知识遗忘,需要全量finetune才能取得好的效果 (RLHF中有pretrain loss保证知识不被遗忘)


ChatGLM6B

推理流程

  • prompts分词,转换为input_ids ( 添加特殊teken)
  • 得到token的position mask(RoPE旋转编码 通过绝对位置学习相对位置关系)和attention mask
  • 经过GLMBlock(SelfAttention)得到hidden states

Finetune

  • lora finetune,由于chatglm6b不支持load_in_int8,4*A100可以batch=1(无deepspeed情况下),训练速度尚可,加载lora后测试效果不明显,一个trick的点是对chatglm6b做instruction finetune是否还需要加入instruction prompt,测试了加与不加效果也不明显,可能和数据量与训练次数有关;
  • ptuningv2,官方repo,整体的可训练参数与lora一致,都是模型的0.1%,与lora一样会出现灾难性遗忘,特别的,ptuning由于训练一个连续的prompt prefix,在加载prefix后对于其他任务无法理解是正常的;
  • 使用 chatglm-6b-slim ,裁剪了前2w个预留图片的token,可以节约显存;

ongoing

  • 全量finetune,(deepspeed zero3 分割Optimizer States、Gradients与Parameters)
  • lora merge实验,最近有个库在做llama7b的lora merge到chatglm6b模型上的工作(地址

模型评价

eval最好分为内推和外推两个数据集。比如原来数据集中有三原色是什么指令,你可以设计一个问题,黑色是不是三原色这个问题。外推是SFT中根本没见过的问题,让它来推理。类似这种数据各准备50条。就可以初步评估了。


机器人相关大模型进展

PaLM-E 来自google,未开源,多模态模型,涉及机器人领域。22B视觉模型+540B语言模型,通过对视觉和语言的多模态融合,可以对机器人运动路径进行规划。

RT-1 基于transformer结构,对语言和图片进行token解码,并输出机器人运动姿态,包括xyz roll pitch yaw等等

Gato 来自deepmind,同样是多模态任务转化为token输入transformer模型,未开源。


NLP大模型技术详解
http://example.com/posts/2259/
作者
ykk648
发布于
2023年5月11日
许可协议