MLTalks

Stay Hungry, Stay Foolish

1. 论文阅读

1.1 背景介绍

GPT-2中虽然已经可以通过预训练和下游任务finetune实现不错的效果,但仍存在问题:下游任务finetune仍然需要成千上万的标注样本。为此提出了GPT-3,GPT-3也是一个自回归语言模型,但参数量更大,具有175B参数量,是GPT-2的117倍,大力出奇迹。

GPT-1、GPT-2、GPT-3模型参数量对比如下:

名称 参数量 时间 补充
GPT-1 110M 2018年 GPT-1论文阅读
GPT-2 1.5B 2019年 GPT-2论文阅读
GPT-3 175B 2020年
阅读全文 »

1. 论文阅读

1.1 背景介绍

在GPT(Generative pre-trained transformer)大火的今天回去重读了GPT在18年的开山之作【Improving Language Understanding by Generative Pre-Training】。在面对NLP众多种类任务(自然语言推理/问答/文档分类)时有大量无标注语料,相对而言,有标注的语料非常少。

为此论文提出一个新的训练思路: 先基于海量无标注语料进行通用的生成式预训练,然后针对下游任务使用有标注的数据进行finetune。这算是一个两阶段的半监督训练方法, 先后融合了无监督的预训练和有监督的finetune训练。

阅读全文 »

1. 论文阅读

1.1 背景介绍

2019年OpenAI发布的模型,OpenAI在2018年的GPT1中给出了一种半监督的训练方法,在GPT2中针对如下问题做了升级: * 以前机器学习训练代价大,往往先要指定训练任务和高质量的标注数据集,且要保证训练数据和测试数据的分布相同,不同任务间无法复用;GPT2实现一个更通用的系统,支持多种NLP任务的学习,实现了Zero Shot。 * 大模型训练往往需要海量数据,准备高质量的标注数据集明显是不现实的;GPT2中支持使用网上公开的无标注的数据进行训练。

阅读全文 »

1. 简介

CLIP(Contrastive Language–Image Pre-training)是OpenAI第一篇关于多模态的论文,在2021年1月跟DALL・E一起发布。其中DALL・E用于文本生成图像,CLIP用于图像分类。CLIP跟之前常用的有监督图像分类相比不同,学习中结合了文本的语义信息(natural language supervision),可以实现类似GPT-3的zero-shot的能力。

CLIP有以下两个优势: * 大幅降低标注成本。之前标注都需要人手工标注大量高质量样本,现在通过搜索引擎自动构建4亿条图像-文本对用于训练。 * 迁移泛化能力强。做为预训练模型,跟特定任务解耦(task-agnostic),可以实现类似zero-shot的效果。

阅读全文 »

1. ViT简介

ViT是2020年的一篇paper,目前(2023年2月)在google引用超11000次,CV图像领域中被广泛使用。在ViT出来之前,Transformer架构已经在NLP领域大显身手,在CV领域还是用的CNN,通过ViT这篇paper在CV中正式引入Transormer,且效果不错。

阅读全文 »

1. 使用pytorch原生的DistributedSampler

在pytorch DDP数据并行时会对数据集进行切分,每个rank节点只处理部分数据。使用DistributedSampler来会把dataset数据集采样为一个子数据集。定义如下:

1
torch.utils.data.distributed.DistributedSampler(dataset, num_replicas=None, rank=None, shuffle=True, seed=0, drop_last=False)
  • dataset:用于采样的数据集
  • num_replicas (int, optional):分布式训练总的进程数。默认对应取process_group中的world_size
  • rank (int, optional):当前进程的rank号。默认对应取process_group中的rank
  • shuffle (bool, optional) :为True表示对indices进行随机打乱。注意使用DistributedSampler时,torch.util.data.Dataloader创建时的shuffle参数,相当于把随机的功能交给了DistributedSampler。默认为True
  • seed (int, optional):随机种子,默认为0
  • drop_last (bool, optional): 为True的话会丢弃结尾的数据,保证数据大小可以被num_replicas整除;为False的话Sampler为增加额外的indices;默认为False
阅读全文 »

1. 论文

1.1 Transformer中的position embedding

  • Transformer中模型不涉及RNN的循环和CNN的卷积,为了学习到sequence中的前后顺序关系,增加了position embedding, embedding的方法采用了sinine和cosine来进行。

  • 示例如下, 对I am a robot进行编码:

  • 编码过程中d_model=4, 论文中的10000对应改为100,结果如下:
阅读全文 »

1. 论文

1.1 RMSNorm介绍

RMSNorm论文中对LayerNorm的公式做了改造。在原有LayerNorm中借助了每个layer统计的mean和variance对参数进行了调整,但RMSNorm认为re-centering invariance property是不必要的,只用保留re-scaling invariance property

LayerNorm的计算如下:

改造后的RMSNorm如下: RMS中去除了mean的统计值的使用,只使用root mean square(RMS)进行归一化。

阅读全文 »

1. 论文

1.1 背景知识

SwiGLU是2019年提出的新的激活函数,它结合了SWISHGLU两种者的特点。

1.1.1 SWISH: A SELF-GATED ACTIVATION FUNCTION

SWISH激活函数的定义如下,其中σ(x)是sigmoid函数(如下定义也称为SILU激活)

\[\begin{gather} f(x) = x \cdot \sigma{(x)} \\ \sigma{(x)} = (1 + exp(−x))^{-1} \end{gather}\]

阅读全文 »

0. 简介

LLaMA 训练了从7B到65B不同参数量的模型,从Hoffmann的论文【Training compute-optimal large languag】中证明了在有限计算代价的情况下(给定总的FLOPs大小),表现最好的不是参数量最大的模型,而是在更多数据上训练的稍小的模型。

LLaMA实现了两个目标: 1. LLaMA-13B跟GPT-3相比, 参数量小了10倍,但效果更好;LLaMA-65B比Chinchilla-70B和PaLM-540B更好。 2. 只依赖公开的开源数据集也可以达到最好的SOTA效果。

阅读全文 »