MLTalks

Stay Hungry, Stay Foolish

1. 背景介绍

以GPT-3 175B参数量为例,过大的参数量在Finetune的时候代价很大,Adapter适配器方法是进行大模型微调的方法之一。Adapter方法的主要思路是在模型网络结构中加入新定义的Adapter适配器部分,在重训的过程中只更新Adapter部分的网络参数。Adapter-based tuning最早源于19年的【ICML2019: Parameter-Efficient Transfer Learning for NLP adapters

Adapter module会先把输入的d维向量映射为一个小的m维向量,通过非线性层后,再从m维向量映射回d维向量;其中也用到了残差网络,结构如下图(右):

Adapter的效果可以大幅减少微调的参数量:

阅读全文 »

在PyTorch中,有几种不同的工具可以用于网络结构的可视化。下面将以ResNet-18为例,展示如何使用常用的PyTorch画图工具进行网络结构的可视化。

ResNet-18是一个经典的卷积神经网络模型,由多个卷积层、池化层、全连接层和残差连接(Residual Connection)组成。参考Deep Residual Learning for Image Recognition,网络结构如下:

在PyTorch中可以能过torchvision快速使用ResNet-18,使用代码如下:

1
2
3
from torchvision.models import resnet18
x = torch.randn(1, 3, 224, 224)
model = resnet18()

x是随机生成的输入数据,model是resnet18的实例。

阅读全文 »

Prompt Tuning是现在大模型微调方法中的一种常用方法,本文通过解读5篇论文来了解Prompt Tuning方法演进的过程。分别是Prefix-Tuning、P-Tuning v1、Parameter-Efficient Prompt Tuning、P-Tuning v2。

1. Prefix-Tuning:Optimizing Continuous Prompts for Generation

Finetuning之前是使用大模型进行下游任务重训的方法,但由于大模型参数量过大,Finetuning需要大量的数据,以及更多的算力去更新学习参数,不够实用。在2021年提出的prefix-tuning算法,并在自然语言生成任务(NLG, Nature Language Generation)上做了验证。这里注意区分下另一个NLP的概念,在NLP中还一类任务叫自然语言理解(NLU, Nature Language Understanding)。

在Prompt思想的启发下,在Prefix-Tuning中提出了给每一个input输入增加一个连续的任务相关的embedding向量(continuous task-specific vectors)来进行训练。

阅读全文 »

1. 问题列表

在Megatron-LM/Pytorch运行中报错如下: 1. No module named 'fused_layer_norm_cuda': apex没有装或者装的不对,注意直接用pip install apex装的不是真正的nvdia-apex,必须通过源码编译安装 2. ModuleNotFoundError: No module named 'packaging': 在新版的apex上编译会遇到报错,需要切换到之前的代码版本 3. No module named 'amp_C': 编译指令使用 pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./,编译后还需要额外执行python setup.py install 4. ImportError: libc10.so: cannot open shared object file: No such file or directory: libc10.so是跟着pytorch一起装的

NVIDIA APEX 代码库:https://github.com/NVIDIA/apex

阅读全文 »

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的效果。

阅读全文 »