【转载】长上下文与将Transformer扩展至10亿令牌

原文地址:Long Contexts and Scaling Transformers to 1,000,000,000 Tokens, by Sebastian Raschka, on 2023-07-15

长上下文与将Transformer扩展至10亿令牌

在本文中,我整理并点评了2023年6月至7月的24项AI研究亮点。自然语言处理与计算机视觉领域再次涌现出大量令人振奋的新进展!

此外,如果你对上个月的研究亮点感兴趣,可以在这里查看:
https://magazine.sebastianraschka.com/p/ai-research-highlights-in-3-sentences-2a1

大语言模型

《迷失在中间:语言模型如何利用长上下文》(7月6日,https://arxiv.org/abs/2307.03172

在这篇论文中,研究人员探究了ChatGPT等大语言模型从输入上下文的不同位置检索相关信息的表现。结果发现,当信息位于文档中间位置时,ChatGPT的信息检索效果会变差。Claude等其他大语言模型的表现则稍好一些。
figure01

《LongNet:将Transformer扩展至10亿令牌》(7月5日,https://arxiv.org/abs/2307.02486

近期我们已经看到了数项将大语言模型扩展至更长上下文长度的尝试,包括将Transformer大语言模型扩展至100万令牌的RMT论文,以及支持100万令牌的卷积架构Hyena大语言模型。在这篇论文中,作者提出了LongNet,旨在将Transformer大语言模型的上下文长度扩展至10亿(1B)令牌。与数年前发表的BigBird类似,它通过膨胀注意力(而非自注意力)实现了线性(而非二次)复杂度的扩展;但不同之处在于,BigBird对令牌对采用的是启发式的随机模式。
figure02

《使用4位整数训练Transformer》(6月21日,https://arxiv.org/abs//2306.11987

这篇论文提出了一种加速神经网络训练的新方法:采用INT4算术,将激活值、权重和梯度都量化为4位精度,且专门针对Transformer架构设计。与现有的4位训练方法不同,该方法无需自定义数值格式,因此可以在当前世代的GPU上直接实现。该方法在多项任务上都取得了具有竞争力的准确率,最多可将训练过程提速35.1%(论文未讨论显存节省情况)。
figure03

通过位置插值扩展大语言模型的上下文窗口(6月27日,https://arxiv.org/abs/2306.15595

旋转位置嵌入(RoPE,https://arxiv.org/abs/2104.09864)因其支持灵活的序列长度,已成为现代大语言模型实现中的核心技术。在这篇论文中,研究人员提出了位置插值法,仅需最少的微调(1000步),即可将基于RoPE的模型上下文窗口扩大至32768令牌。例如,该方法可让LLaMA 7B和65B模型实现长文档摘要功能。
figure04

大语言模型是高效的文本排序器:基于成对排序提示的方法(6月30日,https://arxiv.org/abs/2306.17563

研究人员针对相关性排序任务评估了大语言模型的表现——该任务既和普通用户的使用场景相关,也是研究人员评估大语言模型性能的常用维度(不过论文并未明确探讨后一种应用场景)。他们对比了逐点排序方法(这类方法不适用于GPT-4等API,因为用于排序时需要获取对数概率)和列表式排序方法,并提出了一种全新的成对排序提示方法。采用这种新的成对排序方法后,即便是基于FLAN-T5和FLAN-UL2的中等规模开源大语言模型,也能取得出色的表现(与参数量是其10到50倍的gpt-3.5.turbo效果相当)。
figure05

自带数据!大语言模型的自监督评估方法(6月23日,https://arxiv.org/abs//2306.13651

毋庸置疑,在面向客户的应用中,确保大语言模型输出真实内容、不生成不当言论,是大语言模型落地现实场景的核心挑战。研究人员没有依赖规模小、经过人工整理,且可能已泄露进训练集的评估数据集,而是提出了一种自监督的评估方案。他们发现,自监督评估结果与人类评估结果具有强相关性,说明该方法具备可行性。
figure06

聚焦型Transformer:面向上下文扩展的对比训练(7月6日,https://arxiv.org/abs/2307.03170

解决大语言模型上下文长度限制的一种方案是访问外部存储的文档(例如通过向量数据库的方式)。但数据库越大,针对给定查询包含的无关键值就越多,进而会降低模型的表现。为了解决这一问题,研究人员提出了“聚焦型Transformer”,通过一种全新的对比学习流程对OpenLLaMA等大语言模型进行微调。
figure07

《课本就是你所需的全部》(6月20日,https://arxiv.org/abs/2306.11644

在这篇论文中,研究人员用高质量数据集训练了一个参数量极小的Transformer模型——仅13亿参数。训练数据包括从网络获取的60亿令牌“课本级质量”数据集,加上通过GPT-3.5生成的10亿令牌习题。作为对比,GPT-3/GPT-3.5的参数量是其130倍(1750亿参数),同量级的LLaMA模型则是在1万亿令牌上训练的(数据量是其140倍)。尽管模型规模小得多、训练数据集也小得多(但质量更高),该模型的表现仍超过了GPT-3.5(不过未超过GPT-4)。
figure08

《ClinicalGPT:基于多元医疗数据微调并经过全面评估的大语言模型》(6月16日,https://arxiv.org/abs/2306.09968

过去我一直大力提倡针对更具体的应用场景,对预训练大语言模型(基础模型)进行微调。ClinicalGPT就是一个很好的范例:研究人员将医疗数据融入训练流程,以更好地处理临床任务。简而言之,他们采用人类反馈强化学习的方式对预训练大语言模型BLOOM-7B进行了微调——这与GPT-3打造初代ChatGPT模型时使用的指令微调策略一致。
figure09

《一种简单高效的大语言模型剪枝方法》(6月20日,https://arxiv.org/abs/2306.11695

DistilBERT这类模型之所以流行,是因为大语言模型通常体积过大,不适用于多数场景;但打造这类剪枝版本的模型通常都需要重新训练。在这篇论文中,研究人员提出了一种无需对预训练大语言模型重新训练即可完成剪枝的方法。该方法原理相对简单:通过计算权重幅值与输入激活范数的逐元素乘积,来判断权重的重要性,以此为依据进行剪枝。
figure10

《骆驼能走多远?探究开源资源下指令微调的现状》(6月7日,https://arxiv.org/abs/2306.04751

在这篇论文中,作者研究了LLaMA等开源大语言模型在开源指令数据集上微调后的性能。部分模型(例如LLaMA)相比闭源的text-davinci-003(GPT 3.5),能达到70%的“胜率”。需要注意的是,作者采用的是监督式微调,而非InstructGPT和ChatGPT所使用的人类反馈强化学习。
figure11

《资源受限下的大语言模型全参数微调》(6月16日,https://arxiv.org/abs/2306.09782

通常在资源(尤其是显存)受限的情况下微调大语言模型时,我们会采用参数高效微调方法,比如适配器方法和低秩适配(LoRA)。而在这项研究中,研究人员提出了一种全新的优化器——低内存优化器(LOMO)作为替代方案,它将梯度计算与参数更新合并为单一步骤,以此节省显存。该方法可以与适配器、LoRA等技术结合使用,但缺点是无法与梯度累积结合,且搭配Adam优化器时仅能节省25%的显存。
figure12

《面向人类对齐的偏好排序优化》(6月30日,https://arxiv.org/abs//2306.17492

https://magazine.sebastianraschka.com/p/ai-research-highlights-in-3-sentences-2a1 中,我曾介绍过https://arxiv.org/abs/2305.18290 这篇论文,它提出了一种更简单的大语言模型指令微调方案,替代传统的人类反馈强化学习(RLHF)。而在这篇论文中,研究人员提出了另一种替代方案:偏好排序优化(PRO)。PRO相比RLHF的优势在于,PRO利用了完整的排序序列,而不仅仅是两两排序的结果。
figure13

计算机视觉

《Patch n’ Pack:NaViT——适配任意宽高比与分辨率的视觉Transformer》(7月12日,https://arxiv.org/abs/2307.06304

训练语言Transformer时,研究人员常会用到序列打包(也叫“填充序列打包”)技术,它能避免对填充令牌的不必要计算,从而高效处理变长序列。在这篇论文中,研究人员将序列打包的思路拓展到视觉Transformer,提出了NaViT(原生分辨率视觉Transformer),可以对任意分辨率、任意宽高比的输入进行处理与训练。该方法同时提升了训练效率与模型准确率。
figure14

《SDXL:面向高分辨率图像合成的改进隐扩散模型》(7月4日,https://arxiv.org/abs/2307.01952

SDXL(Stable Diffusion XL的缩写)是基于隐扩散的文生图模型Stable Diffusion的全新迭代版本。它底层的卷积UNet主干网络规模扩大至原来的3倍,并且新增了第二个CLIP文本编码器(两个不同CLIP编码器的输出沿通道维度拼接)。根据偏好调研,用户对SDXL生成结果的喜爱程度远超此前的Stable Diffusion模型。
figure15

《自消耗的生成模型会患上MAD》(7月4日,https://arxiv.org/abs/2307.01850

研究人员探究了用合成数据训练生成式AI模型的影响。如果没有新鲜的训练数据,每经过一轮训练,模型的性能都会逐步下降——因为反复用模型自身生成的数据训练,会放大模型本身的偏差。结论是:即便使用高质量的合成数据训练生成模型,也会损害合成内容的质量或多样性。
figure16

《基于掩码Transformer的扩散模型快速训练》(6月15日,https://arxiv.org/abs/2306.09305

受图像存在大量冗余这一特点的启发(同时也受表征学习领域的启发),研究人员提出,在训练用于图像生成的扩散Transformer时,对大量图像块进行掩码。该方法在训练时,在常规的去噪目标之外,新增了重建掩码块的辅助损失。实验发现,该方法能达到与当前最优扩散Transformer图像生成模型相当的质量,但训练时间减少了70%。
figure17

其他领域

《HyenaDNA:单核苷酸分辨率的长程基因组序列建模》(6月27日,https://arxiv.org/abs/2306.15794

这项工作是近期Hyena论文(https://arxiv.org/abs/2302.10866)的应用延伸——今年4月发表的Hyena论文提出了一种全新的卷积架构模型,作为Transformer大语言模型的替代方案用于文本任务。它的优势在于Hyena可以建模长达100万令牌的上下文(这对处理DNA这类场景非常重要)。简而言之,相比常规Transformer大语言模型,它支持更长的上下文长度,且在同等参数量下训练速度更快。
figure18

《简单可控的音乐生成》(https://arxiv.org/abs/2306.05284,6月8日)

Meta AI的研究人员用约20000小时的版权音乐,训练了生成式单阶段Transformer语言模型(参数量分别为3亿、15亿、33亿)。音乐数据集包含来自ShutterStock和Pond5的1万首高质量音轨。该研究的创新点在于高效的令牌交错模式,让模型无需上采样级联或层级架构,就能生成高质量的音乐样本。
figure19

通用计算效率

《Rockmate:一款高效、快速、自动的通用PyTorch重计算工具》(7月3日,https://arxiv.org/abs/2307.01236

Rockmate是一款PyTorch工具,它可以分析并自动重写模型(例如GPT)的代码,让计算激活值时的显存占用控制在预设范围内。其代价是会增加重计算量(拖慢运行速度),但可以让更小的硬件运行更大的模型。显存节省幅度可达2-5倍,而部分场景下的额外开销仅为10%-20%。
figure20

《ZeRO++:面向超大规模模型训练的极致高效集合通信》(6月16日,https://arxiv.org/abs/2306.10209

ZeRO(零冗余优化器)是一种将模型状态拆分到不同GPU上的优化策略,能够降低显存需求,支持训练LLM等更大规模的模型。在这篇论文中,研究人员提出了三种降低通信量的技术来优化吞吐量。简而言之,这些优化包括基于分块量化的全收集操作、数据重映射,以及基于全连接的量化梯度平均。
figure21

这本杂志是我个人的兴趣项目,不提供直接报酬。不过,如果您愿意支持我,可以考虑购买https://sebastianraschka.com/books 上的书籍。如果您觉得这些书籍有洞见、有帮助,也欢迎推荐给您的朋友和同事。
figure22
https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/https://nostarch.com/machine-learning-and-ai-beyond-basics 以及 http://mng.bz/M96o

您的支持对我意义重大!非常感谢!

【转载】2023年计算机视觉发展现状:从视觉Transformer到神经辐射场

原文地址:State of Computer Vision 2023: From Vision Transformers to Neural Radiance Fields, by Sebastian Raschka, on 2023-07-6

2023年计算机视觉发展现状:从视觉Transformer到神经辐射场

大语言模型(LLM)的发展仍在快速推进。与此同时,暂且抛开AI监管的相关争议不谈,大语言模型领域的新闻更新速度仅比往常稍慢一些。

这恰好是一个契机,让我们可以偶尔将目光投向计算机视觉领域,探讨该领域当下的研究与发展现状。这个主题也刚好契合对温哥华举办的2023年计算机视觉与模式识别会议(CVPR 2023)的回顾——这是一场非常精彩的会议,会场也可能是我迄今为止参加过的会议里环境最好的。

figure01

这本内容满满(更准确地说是成果满满)的CVPR会议手册,列出了今年CVPR收录的2359篇论文。

注:如果您看到的通讯内容有截断或缺失,是因为部分邮件服务商可能会对较长的邮件进行裁切。遇到这种情况,您可以访问 https://magazine.sebastianraschka.com/ 查看全文。

文章与趋势

今年,CVPR 2023共计收录了2359篇论文,数量十分可观,参会者可以浏览海量的海报展示。当我穿行在海报展区,与参会者和研究者交流时,我发现大部分研究都集中在以下四大主题:

  • 视觉Transformer(Vision Transformers)
  • 视觉生成式AI:扩散模型与生成对抗网络
  • NeRF:神经辐射场
  • 目标检测与分割

接下来,我将对这四个子领域做简要介绍,并分别从会议论文中选出一篇有意思的论文进行重点解读。

(感兴趣的读者可以在 https://cvpr2023.thecvf.com/Conferences/2023/AcceptedPapers 查看全部收录论文列表。)

1)视觉Transformer

继语言Transformer与大语言模型取得成功之后,视觉Transformer(Vision Transformers,简称ViT)于2020年首次提出,相关论文见 https://arxiv.org/abs/2010.11929

ViT的核心思想与语言Transformer类似:在多头注意力模块中采用同样的自注意力机制。区别在于,语言Transformer对词进行分词,而ViT对图像进行分块编码(图像分词)。

正如之前《Ahead of AI》的一篇文章(https://magazine.sebastianraschka.com/p/understanding-encoder-and-decoder)中讨论的,最初用于语言建模的Transformer(论文见 https://arxiv.org/abs/1706.03762 )采用的是编码器-解码器架构。而现代语言Transformer可以分为两类:仅编码器架构,比如常用于分类任务的BERT;以及仅解码器架构,比如主要用于文本生成的GPT。

最初的ViT模型采用类似BERT的类编码器架构,对图像分块进行嵌入编码,之后可以接入一个分类头,用于完成图像分类任务。

figure02

用于分类任务的视觉Transformer(ViT)核心原理

需要注意的是,ViT的参数量通常远多于卷积神经网络(CNN)。根据经验,要达到良好的建模效果,ViT需要更多的训练数据。因此我们通常使用预训练好的ViT,而不是从头开始训练。(与语言Transformer不同,ViT通常采用有监督方式预训练,而非无监督或自监督方式。)

举例来说,我最近在CVPR的一场演讲中(主题见 https://magazine.sebastianraschka.com/p/accelerating-pytorch-model-training )也提到,相比在目标数据集上从头训练Transformer,使用预训练的Transformer能取得好得多的分类效果。

figure03

从头训练ViT与微调预训练ViT的对比

https://arxiv.org/abs/2012.12877https://arxiv.org/abs/2103.14030 这类ViT架构,凭借在计算机视觉任务上的顶尖性能,成为了非常热门的模型。

不过,ViT也饱受诟病:它的资源消耗相对更高,运行效率低于CNN。这也是为什么尽管ViT是计算机视觉领域最热门的研究方向之一,却尚未在实际应用中大规模落地的主要原因之一。

Efficient ViT:采用级联分组注意力的内存高效视觉Transformer

如上所述,ViT资源消耗较高,限制了它在实际场景中的更广泛应用。在这篇CVPR论文(https://arxiv.org/abs/2305.07027)中,研究者提出了一种全新的高效架构来解决这一问题,让ViT更适合实时应用场景。

figure04

引自论文 https://arxiv.org/abs/2305.07027 的标注示意图

这篇论文的核心创新点包括两方面:

  1. 在全连接层(FC层)之间仅使用一个受内存限制的多头自注意力(MHSA)模块;
  2. 级联分组注意力机制。

先来看第一点:夹在全连接层之间的MHSA模块。已有研究表明,内存效率低下的主要原因是MHSA,而非全连接层(相关研究见 https://arxiv.org/abs/2007.00072https://arxiv.org/abs/2107.06419)。为了解决这个问题,研究者增加了全连接层来加强特征通道之间的信息交互,但相比主流的ViT架构(比如 https://arxiv.org/abs/2103.14030),减少了注意力层的数量。此外,他们还缩小了MHSA中查询(Q)矩阵和键(K)矩阵的通道维度。

figure05

EfficientViT的核心架构改动(引自论文 https://arxiv.org/abs/2305.07027 的标注示意图)

这里的级联分组注意力,灵感来源于分组卷积——分组卷积早已被应用,例如这篇2012年的论文:https://papers.nips.cc/paper_files/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html

分组卷积也叫通道卷积或深度卷积,是标准卷积操作的一种变体。与普通卷积不同,分组卷积会将输入通道划分为多个组,每个组独立执行卷积运算。例如,如果输入有64个通道,分组参数设为2,那么输入就会被分成两组,每组32个通道,各自独立进行卷积。这种方法不仅能降低计算量,还能通过一种正则化作用增加模型的多样性,在部分任务中可能提升建模效果。

figure06

分组卷积的核心原理

令人印象深刻的是,EfficientViT不仅运行速度最高可达MobileViT的6倍,在精度相近的前提下,它在iPhone 11上的运行效率也达到了MobileViT的2.3倍。

总而言之,凭借出色的预测性能,ViT会继续发展下去(至少会一直是热门的研究方向)。而如今随着效率问题的不断优化,我认为未来几年ViT也会在生产环境中得到更广泛的应用。

2)视觉生成式AI:扩散模型

得益于Stable Diffusion这类开源模型的普及(该模型复现了论文 https://arxiv.org/abs/2112.10752 中提出的架构),如今大多数人应该都对扩散模型有所了解。如果还不熟悉,这里做一个简单介绍。

扩散模型本质上是生成式模型。训练过程中,模型会逐步向输入数据中添加随机噪声,对数据进行扰动;随后在逆向过程中,模型学习如何去除噪声,对输出进行降噪,还原出原始数据。推理时,扩散模型就可以从随机噪声输入出发,生成全新的数据。

figure07

扩散模型原理示意图

(当然,除了扩散模型之外,还有很多其他的生成式AI模型,我在《Machine Learning Q and AI》一书的第9章中有详细讨论,书籍链接:https://leanpub.com/machine-learning-q-and-ai

大多数扩散模型都基于卷积神经网络,采用以CNN为基础的U-Net架构。U-Net因其标志性的“U”形结构而得名,最初被用于图像分割任务,由用于捕捉上下文信息的编码器和实现精确定位的解码器组成。

传统上,扩散模型会复用U-Net来建模每一步扩散过程的条件分布,实现从噪声分布到目标数据分布的映射。换句话说,U-Net的作用是预测扩散过程每一步中需要添加或去除的噪声。U-Net之所以适合这个场景,是因为它能很好地融合局部信息与全局信息。

figure08

隐空间扩散模型(即Stable Diffusion),引自论文 https://arxiv.org/abs/2112.10752

一个有意思的问题是:把扩散模型的CNN骨干网络换成ViT是否会带来收益?下面这篇论文的研究者就对此进行了探索。

All are Worth Words: A ViT Backbone for Diffusion Models

在这篇论文(https://arxiv.org/abs/2209.12152)中,研究者尝试将扩散模型中的卷积U-Net骨干替换为ViT,他们将这种架构命名为U-ViT。需要说明的是,这并非该方向的首次尝试,此前已有相关研究,比如 https://arxiv.org/abs/2208.07791 和 https://arxiv.org/abs/2111.14822 等论文提出的方法。不过本次提出的U-ViT是目前效果最好的方案。

该架构的主要贡献在于新增了“长”跳跃连接,以及在输出前增加了一个卷积模块。注意,这里的“长”跳跃连接是在Transformer模块原有常规跳跃连接的基础上额外添加的。

和上一节介绍的常规ViT类似,模型的输入是“分块化”的图像,再额外加上一个时间标记(对应扩散步数)和一个条件标记(用于类别条件生成)。

figure09

论文 https://arxiv.org/abs/2209.12152 提出的全新U-ViT架构

下图展示了通过消融实验验证这些设计选择有效性的结果(设计非常严谨!)。

研究者在三类核心任务上对新架构进行了评估:

  • 无条件图像生成
  • 类别条件图像生成
  • 文本生成图像

在无条件图像生成任务上,全新的U-ViT扩散模型效果具有竞争力,但略逊于其他扩散模型;在类别条件图像生成任务上,U-ViT扩散模型可以比肩最优的生成对抗网络(GAN),并且效果超过其他扩散模型;而在文本生成图像任务上,它的表现优于所有在相同数据集上训练的对比模型(包括GAN和扩散模型)。

figure10

U-ViT在条件生成与文本生成图像任务上的效果,引自论文 https://arxiv.org/abs/2209.12152

值得肯定的是,尽管该模型在多个任务上没有全面超越其他模型,论文仍然被会议收录。这是一个带有全新架构思路的新模型,未来ViT会将扩散模型带向何方,非常值得期待。

(补充一点小说明:和部分其他模型相比,该模型文本生成图像任务的训练和评测数据集规模相对较小。同时目前也不清楚这种架构和传统基于CNN的扩散模型相比,计算性能如何。不过可以理解,使用较小数据集主要是因为这是学术项目,而非大型科技公司的重点项目,可能受限于资源。即便使用的是规模更小、更成熟的MS-COCO基准数据集,研究本身也没有任何问题。)

3)神经辐射场(NeRF)

简而言之,神经辐射场(NeRF)是一种相对较新的技术(2020年首次提出),能够从一组二维图像出发,合成复杂三维场景的全新视角,原始论文见 https://arxiv.org/abs/2003.08934。其实现原理是将三维场景建模为由神经网络生成的颜色与密度构成的体场。NeRF模型通过少量不同视角拍摄的图像训练后,能够根据三维空间中点的坐标和观测方向,输出该点的颜色和不透明度。

figure11

通过NeRF从二维输入图像学习生成全新三维渲染结果的示意图(图引自论文 https://arxiv.org/abs/2003.08934

神经辐射场涉及不少专业术语,我们先稍作回溯,梳理一下这些术语的由来。

首先我们来定义神经场(neural fields):这个术语听起来很专业,其实就是指一个可训练(即可参数化)的神经网络函数,能够在整个输入空间(比如一个三维场景)中生成输出值的“场”。

其核心思想是让神经网络对特定的三维场景发生过拟合,这样就能高精度地生成该场景的全新视角。这和数值分析中的样条插值概念有些类似:样条插值就是让一条曲线“过拟合”一组数据点,从而得到对底层函数平滑且精确的表达。

下图总结了神经场算法的流程,图取自Xie等人发表的优秀综述论文 https://arxiv.org/abs/2111.11426

figure12

典型的前馈神经场算法示意图,引自论文 https://arxiv.org/abs/2111.11426

具体到NeRF,网络会学习根据观测方向,输出空间中给定点的颜色和不透明度,从而构建出逼真的三维场景表示。由于NeRF会预测三维空间中特定观测方向上每一点的光的颜色与强度,它本质上建模的是一个辐射值场,“辐射场”一词也由此而来。顺便一提,严格来说NeRF的表示是5维的,因为它包含了三个空间维度(三维空间的x、y、z坐标),加上由两个角度θ和φ定义的观测方向,共两个额外维度。

NeRF的应用潜力巨大,所有涉及高质量三维重建的场景都可以用到它,包括三维扫描、虚拟现实与增强现实,以及影视、游戏中的三维建模和动作捕捉等领域。

ABLE-NeRF:面向神经辐射场的、基于注意力的可学习嵌入渲染方法

如上所述,NeRF的基本思想是将三维场景建模为连续的辐射值体场。它不存储显式的三维物体或体素网格,而是用一个函数(即神经网络)来表示三维场景,该函数将三维坐标映射为颜色(RGB值)和密度。

网络通过一组不同视角拍摄的场景二维图像完成训练。渲染场景时,NeRF接收三维坐标和观测方向(即相机光线)作为输入,输出该位置的RGB颜色值和体密度。

通过这种方式,NeRF能够生成具有照片级真实感的物体新视角。不过NeRF也存在不足:光滑物体的渲染效果往往偏模糊,半透明物体的颜色也容易显得浑浊不清。

在论文 https://arxiv.org/abs/2303.13817 中,研究者针对这些缺陷,通过引入自注意力框架和可学习嵌入,提升了半透明表面与光滑表面的视觉渲染质量。

figure13

ABLE-NeRF提升渲染真实感的效果对比(图引自论文 https://arxiv.org/abs/2303.13817

关于常规NeRF,还有一个细节值得一提:它使用的是基于光传输物理原理推导的体渲染方程。体渲染的基本思想是,对光线穿过三维场景时沿途所有点的贡献进行积分。渲染过程会对每条光线上的点进行采样,查询神经网络得到每个点的辐射值和密度,再对这些值积分,计算出像素的最终颜色。

本次提出的ABLE-NeRF没有沿用这种基于物理的体渲染方式,转而采用基于注意力的网络来决定光线的颜色。此外,研究者还加入了掩码注意力机制,避免特定点关注到被遮挡的点,以此贴合真实世界的物理限制。最后,他们还新增了一个Transformer模块用于学习可学习嵌入,来捕捉间接光照带来的视角相关外观效果。(消融实验表明,可学习嵌入对于提升视觉质量至关重要。)下图的标注示意图总结了该方法的整体框架。

figure14

ABLE-NeRF方法的标注示意图,引自论文 https://arxiv.org/abs/2303.13817

从ABLE-NeRF和基准NeRF的渲染对比结果来看,效果提升非常显著。当然,和真实值相比,结果还谈不上完美,但ABLE-NeRF已经能达到约90%的还原度。仅从图像出发就能实现这样的三维场景重建效果,发展速度已经相当惊人了。

4)目标检测与分割

目标检测与分割是计算机视觉的经典任务,应该不需要过多介绍。不过还是简单说明一下两者的区别:目标检测的核心是预测边界框和对应的类别标签;分割则是对每个像素进行分类,以此区分前景物体和背景。

figure15

目标检测(上)与分割(下)示意图。图分别引自YOLO论文(https://arxiv.org/abs/1506.02640)和Mask R-CNN论文(https://arxiv.org/abs/1703.06870v3

此外,分割任务还可以细分为三类,我在下面逐一说明。

  1. 语义分割。该技术会为图像中的每个像素分配一个物体类别标签(比如汽车、狗、房子),但它不会区分同一类物体的不同实例。举个例子,如果图像里有三辆汽车,语义分割会把它们都标记为“汽车”,不会区分第一辆、第二辆和第三辆。

  2. 实例分割。该技术在语义分割的基础上更进一步,能够区分同一类物体的不同个体。还是刚才三辆汽车的例子,实例分割会分别识别出每一辆车(比如汽车1、汽车2、汽车3)。也就是说,实例分割不仅对每个像素分类,还会区分出不同的物体实例,为每个实例分配独立的ID。

  3. 全景分割。该技术融合了语义分割和实例分割。在全景分割中,每个像素都会被分配一个语义标签和一个实例ID。为了更好地区分全景分割和实例分割,可以这么理解:实例分割的重点是识别场景中每个可识别物体的实例,也就是主要关注“事物”(things)——汽车、人、动物这类可数的、有明确个体的物体。而全景分割的目标是实现对场景的完整理解,它会为每个像素都打上标签:对于“物料”(stuff,比如天空、草地这类不可数的连续区域)分配类别标签;对于“事物”(things,汽车、人这类可数物体)分配实例标签。

figure16

图引自论文 https://arxiv.org/abs/1801.00868

经典的目标检测算法包括R-CNN(https://arxiv.org/abs/1311.2524)及其变体(Fast R-CNN:https://arxiv.org/abs/1504.08083、Faster R-CNN:https://arxiv.org/abs/1506.01497)、YOLO(You Only Look Once,https://arxiv.org/abs/1506.02640),以及SSD(Single Shot MultiBox Detector,https://arxiv.org/abs/1512.02325)。

分割模型则包括U-Net(https://arxiv.org/abs/1505.04597,此前扩散模型部分已有讨论)、Mask R-CNN(https://arxiv.org/abs/1703.06870,具备分割能力的Faster R-CNN变体),以及DeepLab(https://arxiv.org/abs/1606.00915)等等。

目标检测和分割在自动驾驶、医学影像以及视频监控等领域都有重要应用。需要注意的是,两者也经常结合使用:目标检测可以先对物体进行粗定位,再由分割算法进行微调,实现更精确的边界和形状分析。

Mask DINO:构建统一的基于Transformer的目标检测与分割框架

这篇论文(https://arxiv.org/abs/2206.02777)是DINO模型的扩展工作,DINO全称为“DETR with Improved deNoising anchOr boxes”(改进去噪锚框的DETR),原始论文见 https://arxiv.org/abs/2203.03605

而DETR(DEtection TRansformer,检测Transformer)是由Facebook AI提出的端到端目标检测模型,相关论文见 https://arxiv.org/abs/2005.12872——不出所料,它采用了Transformer架构。和传统目标检测模型不同,DETR将目标检测视为一个直接的集合预测问题,不需要人工设计锚框,也省去了非极大值抑制的步骤,提供了一种更简洁、更灵活的目标检测方案。

如今,基于CNN的方法通常会将目标检测(区域级任务)和分割(像素级任务)进行统一,以此提升两个任务的整体性能(本质上是一种多任务学习),但基于Transformer的目标检测与分割系统还没有做到这一点。

而本次提出的Mask DINO正是为了解决这个问题。通过对DINO进行扩展,Mask DINO的表现超越了所有现有的目标检测与分割系统。下图的标注示意图总结了Mask DINO的核心思路。

figure17

Mask DINO论文的标注示意图,引自 https://arxiv.org/abs/2206.02777


本通讯是我的个人兴趣项目,没有直接的商业收益。如果您愿意支持我的创作,可以考虑购买我的书籍,链接:https://sebastianraschka.com/books。如果您觉得这些书籍有启发、有帮助,也欢迎推荐给您的朋友和同事。

figure18

https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

您的支持对我意义重大!非常感谢!

【转载】借助混合精度与全分片数据并行加速PyTorch模型训练

原文地址:Accelerating PyTorch Model Training, by Sebastian Raschka, on 2023-06-3

借助混合精度与全分片数据并行加速PyTorch模型训练

上周,我在温哥华举办的2023年计算机视觉与模式识别会议(CVPR 2023)上做了题为《以最少代码改动扩展PyTorch模型训练规模》的演讲。在活动现场能和这么多人交流,感觉非常愉快。

为方便日后查阅,也为了没能到场的朋友,我想做个小尝试,把这次演讲整理成一篇短文,内容就在下方。(注:下周我会再分享更多CVPR的参会心得!)

因此,本文将深入探讨如何以最少的代码改动实现PyTorch模型训练的规模扩展。本文的重点是利用混合精度技术与多GPU训练范式,而非底层硬件优化。我们将以一个用于图像分类的简易视觉Transformer(ViT)作为基础模型展开讲解。

从基线模型开始

我们的ViT模型在基础数据集上从头开始训练,耗时约60分钟,测试集准确率达到62%。

在接下来的章节中,我们将探索无需大幅重构代码,就能提升训练速度与准确率的方法。

请注意,模型与数据集的细节并非本文重点(选择它们只是为了尽可能简化,方便你在自己的硬件上复现代码,无需下载安装过多依赖项)。本文分享的所有示例都可在 https://github.com/rasbt/cvpr2023 获取,你可以查看并复用完整代码。

figure01

https://github.com/rasbt/cvpr2023/blob/main/00_pytorch-vit-random-init.py 脚本的运行输出。

告别从头训练

在当今时代,针对文本或视觉任务从头开始训练深度学习模型往往性价比不高。我们通常会利用预训练模型,针对自身任务进行微调,以此节省时间与计算资源,同时获得更优的模型性能。

如果沿用上述相同的ViT架构,采用在其他数据集(ImageNet)上预训练的权重进行微调,我们就能在更短的时间内获得大幅提升的预测效果:仅需20分钟(3个训练轮次),测试准确率就能达到95%。

figure02

https://github.com/rasbt/cvpr2023/blob/main/00_pytorch-vit-random-init.pyhttps://github.com/rasbt/cvpr2023/blob/main/01_pytorch-vit.py 的效果对比

提升计算性能

上文我们已经看到,相比从头训练,微调能带来巨大的性能提升,下图用更简洁的柱状图做了总结。

figure03

https://github.com/rasbt/cvpr2023/blob/main/00_pytorch-vit-random-init.pyhttps://github.com/rasbt/cvpr2023/blob/main/01_pytorch-vit.py 的效果对比

当然,实际效果会因数据集或任务的不同而有所差异,但对于绝大多数文本与视觉任务而言,基于通用公开数据集预训练的模型作为起点都是值得的。

接下来的章节将探索多种在不损失预测准确率的前提下,进一步加快训练速度的技巧。

开源Fabric库介绍

想要以最少的代码改动高效扩展PyTorch训练规模,方法之一是使用 https://lightning.ai/docs/fabric/stable/ 。你可以把它看作是PyTorch的轻量封装库/应用程序接口。我们可以通过以下命令安装:

pip install lightning

当然,下文要介绍的所有技术也都可以用原生PyTorch实现——Fabric的目标只是让这些操作更便捷。

在探索这些“加速代码的高级技巧”之前,我们先看看将Fabric集成到PyTorch代码中需要做的小幅改动。(完成下文这些改动后,只需修改一行代码就能启用PyTorch的高级特性。)

原生PyTorch代码与修改后适配Fabric的代码差异很小,仅需少量修改,如下方代码高亮所示:

figure04

左侧:原生PyTorch代码;右侧:接入Fabric的PyTorch代码

总结上图,将原生PyTorch代码转换为PyTorch+Fabric版本主要分为3步:

  1. 导入Fabric并实例化一个Fabric对象。
  2. 使用Fabric配置模型、优化器与数据加载器。
  3. 对损失值调用 fabric.backward(),替代常规的 loss.backward()

figure05

这些微小的改动,为我们打开了使用PyTorch高级特性的大门,且无需再重构其余现有代码。

但在深入介绍这些“高级特性”之前,我们先确认模型的训练耗时与预测性能和之前保持一致。

figure06

https://github.com/rasbt/cvpr2023/blob/main/01_pytorch-vit.pyhttps://github.com/rasbt/cvpr2023/blob/main/03_fabric-vit.py 的效果对比

从上方柱状图可以看到,训练耗时与准确率和之前完全一致,符合预期。(所有波动都可归因于随机性。)

在上一节中,我们用Fabric修改了PyTorch代码。为什么要费这些功夫呢?正如下文所示,现在我们只需改动一行代码,就能尝试混合精度、分布式训练等高级技术,只需把

fabric = Fabric(accelerator="cuda")

修改为

fabric = Fabric(accelerator="cuda", precision="bf16-mixed")

figure07

https://github.com/rasbt/cvpr2023/blob/main/04_fabric-vit-mixed-precision.py 脚本的运行结果

借助混合精度训练,我们将训练时间从约18分钟缩短到了6分钟,同时保持了预测性能不变。仅需在实例化Fabric对象时添加 precision="bf16-mixed" 参数,就实现了训练时间的大幅缩减。

理解混合精度的原理

混合精度训练本质上是同时使用16位与32位精度,确保准确率不会下降。用16位格式计算梯度比32位格式快得多,还能节省大量显存。这种策略尤其在显存或计算资源受限的场景下优势明显。

它之所以被称为“混合”精度训练,而非“低”精度训练,是因为我们不会把所有参数与运算都转为16位浮点数。相反,训练过程中我们会在32位与16位运算之间切换,因此得名“混合”精度。

如下图所示,混合精度训练的流程包括:将权重转为低精度(FP16)以加快计算、计算梯度、将梯度转回高精度(FP32)以保证数值稳定性,再用缩放后的梯度更新原始权重。

这种方式既能实现高效训练,又能维持神经网络的准确率与稳定性。

figure08

具体步骤如下:

  1. 将权重转为FP16:在这一步中,神经网络原本为FP32格式的权重(参数)会被转换为精度更低的FP16格式。这能降低显存占用,同时加快计算速度——因为FP16运算所需显存更少,硬件处理速度更快。
  2. 计算梯度:神经网络的前向传播与反向传播都使用低精度的FP16权重执行。这一步会计算损失函数相对于网络权重的梯度(偏导数),用于优化过程中更新权重。
  3. 将梯度转为FP32:用FP16计算完梯度后,会将其转换回精度更高的FP32格式。这一转换对维持数值稳定性至关重要,能避免低精度运算可能出现的梯度消失或梯度爆炸等问题。
  4. 乘以学习率并更新权重:转为FP32格式的梯度会乘以学习率(一个标量值,决定优化过程中的步长)。

第4步得到的结果会用于更新原始的FP32神经网络权重。学习率用于控制优化过程的收敛速度,对取得良好性能至关重要。

脑浮点16(bfloat16)

上文我们提到了“16位浮点数”精度训练。但请注意,之前代码中我们指定的是 precision="bf16-mixed",而非 precision="16-mixed"——两者都是合法选项。

这里,“bf16-mixed”中的“bf16”指的是 https://cloud.google.com/tpu/docs/bfloat16<(bfloat16,即脑浮点16)。该格式由谷歌专为机器学习与深度学习应用开发,尤其适配其张量处理单元(TPU)。与传统的float16格式相比,bfloat16以降低精度为代价,扩展了动态范围。/p>

figure09

扩展的动态范围让bfloat16可以表示极大与极小的数值,更适合深度学习这类会遇到大范围数值的应用场景。不过,精度降低可能会影响部分计算的准确率,或在某些情况下导致舍入误差。但在绝大多数深度学习应用中,这种精度降低对模型性能的影响微乎其微。

虽然bfloat16最初是为TPU开发的,但如今多款NVIDIA GPU也已支持该格式,首批支持的是NVIDIA Ampere架构中的A100张量核心GPU。

你可以通过以下代码检查你的GPU是否支持bfloat16:

>>> torch.cuda.is_bf16_supported()
True

如果你的GPU不支持脑浮点16,可以将 precision="bf16-mixed" 改为 precision="16-mixed"

多GPU训练与全分片数据并行

我们接下来要尝试的改进是多GPU训练。如果我们有多块GPU可用,多GPU训练就能发挥作用,让模型训练速度更快。

利用这一思路的一项更高级技术是全分片数据并行(Fully Sharded Data Parallelism,FSDP),它同时结合了数据并行与张量并行的优势。

figure10

在Fabric中,我们可以通过添加设备数量与多GPU训练策略来启用FSDP,如下所示:

fabric = Fabric(
    accelerator="cuda",
    precision="bf16-mixed",
    devices=4,
    strategy="FSDP"  # 新增!
)

figure11

https://github.com/rasbt/cvpr2023/blob/main/06_fabric-vit-mixed-fsdp.py 脚本的运行结果

因为我们现在用上了4块GPU,结果其实也在意料之中:代码现在仅需约2分钟就能运行完成,比仅使用混合精度训练时快了约3倍。

理解数据并行与张量并行

在数据并行中,小批次数据会被拆分,每块GPU上都有一份完整的模型副本。多块GPU并行工作,从而加快模型训练速度。

figure12

简而言之,其工作原理如下:

  • 相同的模型会被复制到所有GPU上。
  • 每块GPU会接收输入数据的不同子集(不同的小批次数据)。
  • 所有GPU独立执行模型的前向与反向传播,计算各自的本地梯度。
  • 随后,所有GPU的梯度会被收集并取平均值。
  • 平均后的梯度会用于更新模型的参数。

这种方法的核心优势是速度。由于每块GPU都和其他GPU同时处理一批独立的小批次数据,模型能在更短时间内完成更多数据的训练。尤其在处理大型数据集时,能大幅缩短训练时长。

不过,数据并行也存在局限性。最关键的一点是,每块GPU都必须存储完整的模型及其参数。这就限制了可训练模型的大小——模型必须能放进单块GPU的显存中,而这对于现代的ViT或大语言模型来说往往无法实现。

与数据并行将小批次数据拆分到多台设备不同,张量并行是将模型本身拆分到多块GPU上。数据并行要求每块GPU都能装下整个模型,在训练更大模型时会成为瓶颈;而张量并行则通过拆分模型并分发到多台设备,让单块GPU装不下的大模型也能完成训练。

figure13

它是如何工作的?以矩阵乘法为例,有两种分发方式——按行拆分或按列拆分。为简单起见,我们以按列拆分为例。比如,我们可以把一个大型矩阵乘法运算拆分成多个独立计算,每个计算都可以在不同的GPU上执行,如下图所示。最后将结果拼接起来,得到原始运算的结果,从而实现计算负载的分布式处理。

figure14

总结

在本文中,我们看到了只需修改几行代码,就能运用混合精度训练、分布式多GPU训练等技术对训练进行优化。在视觉Transformer的示例中,使用混合精度训练后,运行时间从约18分钟缩短到约6分钟,减少了三分之二。再增加3块GPU后,训练时间从约6分钟进一步缩短到约2分钟。在不损失预测准确率的前提下,整体提速接近10倍。

当然,实际效果会因模型、数据集和任务的不同而有所差异。不过,本文的核心目的是介绍如何借助 https://pytorch.org/https://lightning.ai/docs/fabric/stable/ 便捷地实验这些技术。

(参考:所有代码示例均可在 https://github.com/rasbt/cvpr2023 获取)

本专栏是我的个人兴趣项目,不提供直接报酬。不过,如果您愿意支持我,可以考虑购买 https://sebastianraschka.com/books 上的书籍。如果您觉得这些书有启发、有帮助,也欢迎推荐给您的朋友和同事。

figure15

https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/https://nostarch.com/machine-learning-and-ai-beyond-basicshttp://mng.bz/M96o

您的支持对我意义重大!非常感谢!

【转载】面向人类反馈的直接偏好优化及更多AI研究

原文地址:Direct-Preference Optimization for Human Feedback and More, by Sebastian Raschka, on 2023-06-10

面向人类反馈的直接偏好优化及更多AI研究

本文精选并汇总了23项AI研究亮点。当前自然语言处理和计算机视觉领域正涌现出大量令人振奋的进展!

此外,如果你对上月的研究亮点感兴趣,可以通过以下链接查看:
https://magazine.sebastianraschka.com/p/ai-research-highlights-in-3-sentences

大语言模型

直接偏好优化:你的语言模型本质上是一个奖励模型(https://arxiv.org/abs/2305.18290,2023年5月29日)

直接偏好优化(DPO)是一种替代基于近端策略优化(PPO)的人类反馈强化学习(RLHF)的全新方案,后者被用于ChatGPT等指令微调模型。该研究表明,RLHF中用于拟合奖励模型的交叉熵损失,可直接用于微调大语言模型。根据基准测试结果,使用DPO效率更高,且在响应质量上往往优于RLHF/PPO。

figure01
标注图源自:https://arxiv.org/abs/2305.18290

LIMA:对齐之道,少即是多(https://arxiv.org/abs/2305.11206,2023年5月18日)

研究人员精心筛选了1000组指令对,以监督方式微调了一个650亿参数的LLaMA模型,命名为LIMA。值得注意的是,Alpaca等其他经过微调的LLaMA模型是基于52000组自动生成的指令对训练的。令人惊艳的是,LIMA的表现超越了采用人类反馈强化学习(RLHF)技术训练的模型,例如ChatGPT/GPT 3.5。

figure02
标注图源自:https://arxiv.org/abs/2305.11206

QLoRA:量化大语言模型的高效微调方法(https://arxiv.org/abs/2305.14314,2023年5月23日)

QLoRA(量化低秩适配)是参数高效型大语言模型微调领域的最新成果。QLoRA降低了650亿参数LLaMA模型的内存需求,使其可在单张48GB显存的GPU(如A100)上运行。通过4位量化训练得到的650亿参数Guanaco模型,保留了全16位微调的任务性能,仅经过24小时微调,性能就达到ChatGPT的99.3%。

figure03
标注图源自:https://arxiv.org/abs/2305.14314

SpQR:实现大语言模型权重近无损压缩的稀疏量化表示(https://arxiv.org/abs/2306.03078,2023年6月5日)

将大语言模型量化至4位,是目前在单GPU或笔记本电脑上运行这类模型的唯一方式,但这会牺牲精度。该研究提出的稀疏量化表示(SpQR)方法,提供了一种全新的近无损替代方案。其核心思路是将部分离群权重保持在更高精度,从而将精度损失控制在1%以内,同时实现与int4量化几乎相同的模型压缩率。

figure04
标注图源自:https://arxiv.org/abs/2306.03078

重复训练与否:Token危机下大语言模型缩放的启示(https://arxiv.org/abs/2305.13230,2023年5月22日)

研究发现,互联网上高质量文本数据的增长速度,跟不上大语言模型规模扩张的需求。那么,如果对大语言模型进行多轮次训练会发生什么?结果表明,多轮次训练会导致过拟合,且大多数正则化技术都无法解决这一问题(Dropout除外)。

figure05
标注图源自:https://arxiv.org/abs/2305.13230

DoReMi:优化数据混合比例可加速大语言模型预训练(https://arxiv.org/abs/2305.10429,2023年5月17日)

该研究中,研究人员探讨了预训练数据中维基百科文章、书籍和网页的相对占比,是否会显著影响大语言模型的性能。为解答这一问题,他们训练了一个代理模型,推导得出训练更大规模目标大语言模型的相对领域权重。研究发现,这一方法可将下游任务准确率提升6.5%;在经过权重重分配的The Pile数据集上预训练时,模型达到基线准确率的速度可提升2.6倍。

figure06
标注图源自:https://arxiv.org/abs/2305.10429

Falcon大语言模型的RefinedWeb数据集:纯网页数据效果超越精选语料库(https://arxiv.org/abs/2306.01116,2023年6月1日)

该研究发现,基于去重网页数据训练的大语言模型,其零样本性能可与基于精选数据集训练的模型相媲美。该研究中,使用100%网页数据预训练得到的Falcon 7B模型,性能与80亿参数的PaLM模型相当,而PaLM仅使用了18%的网页数据(其余为书籍等更高质量的数据)。研究人员开发的RefinedWeb数据集,是CommonCrawl的过滤去重版本(约为原大小的11%)。

figure07
标注图源自:https://arxiv.org/abs/2306.01116

模仿专有大语言模型的虚假承诺(https://arxiv.org/abs/2305.15717,2023年5月25日)

近几个月来,基于ChatGPT等其他大语言模型生成的数据来微调大语言模型,已成为普遍做法。这项最新研究发现,众包人员对这些所谓的“模仿模型”评价很高。但事实证明,这些模仿模型往往只是复刻了其训练数据来源的上游大语言模型的风格,而非事实准确性。

figure08
标注图源自:https://arxiv.org/abs/2305.15717

位置编码对Transformer长度泛化能力的影响(https://arxiv.org/abs/2305.19466,2023年5月31日)

Transformer在不同长度的训练样本上表现出的性能存在差异,这在微调阶段尤为突出——因为长指令样本相对稀缺。该研究发现,在仅解码器架构的Transformer中,移除位置编码的效果,优于绝对位置编码、相对位置编码、ALiBi以及旋转位置编码等所有变体。

figure09
标注图源自:https://arxiv.org/abs/2305.19466

Goat:经过微调的LLaMA在算术任务上超越GPT-4(https://arxiv.org/abs/2305.14201,2023年5月23日)

研究人员对70亿参数的LLaMA模型Goat进行微调,使其在算术任务上超越了规模是其75倍的5400亿参数PaLM模型以及GPT-4。Goat的优异表现归功于监督微调以及LLaMA的分词器。尽管计算器(以及Wolfram Alpha这类工具)更适合完成算术任务,但研究人员选择该任务,大概率是因为生成合成数据和通过准确率指标评估模型性能都较为简便。

figure10
标注图源自:https://arxiv.org/abs/2305.14201

Gorilla:接入海量API的大语言模型(https://arxiv.org/abs/2305.15334,2023年5月24日)

Gorilla是一款专门经过微调、用于生成API调用的大语言模型(这一点GPT-4或许可以做得更好)。研究人员以LLaMA-7B为基础模型,在来自Torch Hub、TensorFlow Hub和HuggingFace的1645个API调用数据上对其进行微调。经过微调的Gorilla,表现优于其他未针对API调用进行微调的大语言模型。

figure11
标注图源自:https://arxiv.org/abs/2305.15334

掩码语言模型预训练的动态掩码率调度策略(https://arxiv.org/abs/2305.15096,2023年5月24日)

传统上,BERT类大语言模型采用15%的固定掩码率进行预训练。该研究中,研究人员在预训练过程中将掩码率在15%-30%之间动态调整,发现这可将GLUE等语言翻译基准的准确率小幅提升0.46%。更值得关注的是,采用所提出的动态掩码率策略,模型达到原始BERT准确率的速度可提升1.89倍。

figure12
标注图源自:https://arxiv.org/abs/2305.15096

面向长上下文大模型的分块并行Transformer(https://arxiv.org/abs/2305.19370,2023年5月30日)

本文提出的优化技术采用分块方式执行自注意力计算,避免对整个序列进行前向传播。该方法节省的内存,使得Transformer可训练的上下文长度是原始自注意力实现的32倍,约为FlashAttention的2倍。与FlashAttention类似,这是一种不修改模型架构的优化手段,因此不会影响预测结果。

figure13
标注图源自:https://arxiv.org/abs/2305.19370

RWKV:Transformer时代的RNN革新(https://arxiv.org/abs/2305.13048,2023年5月22日)

RWKV语言模型的代码于去年公布后,几乎淡出了公众视野,直到本月研究人员正式发布相关研究成果。RWKV是一种循环神经网络,具备Transformer级别的大语言模型性能。RWKV的非凡之处在于,其建模性能与Pythia等部分大语言模型相当,但计算成本却大幅降低。

figure14
标注图源自:https://arxiv.org/abs/2305.13048

SEAHORSE:面向摘要评估的多语言、多维度数据集(https://arxiv.org/abs/2305.13194,2023年5月22日)

大多数大语言模型基于英文指令数据集训练,并在英文基准上进行评估。Seahorse提供了全新的数据集,包含覆盖6种语言的9.6万条摘要,可用于多语言、多维度的摘要评估。该数据集以宽松的知识共享署名4.0国际许可协议发布;不过数据集的收集流程尚不够透明,希望其中不包含任何受版权保护的文本。

figure115
标注图源自:https://arxiv.org/abs/2305.13194

基于原则驱动、极少人工监督的语言模型自对齐方法(https://arxiv.org/abs/2305.03047,2023年5月4日)

研究人员提出了SELF-ALIGN方法,以此开发出经过微调的650亿参数LLaMA模型Dromedary。SELF-ALIGN是监督微调和人类反馈强化学习(RLHF)之外,另一种实现大语言模型与人类意图对齐的方案。该方法分为四个步骤:(1)利用大语言模型生成提示词;(2)制定人工编写的原则,通过上下文学习引导大语言模型生成回复;(3)利用自对齐后的回复训练大语言模型;(4)对过于简略或间接的回复进行优化。

figure16
标注图源自:https://arxiv.org/abs/2305.03047

计算机视觉

EfficientViT:采用级联分组注意力的内存高效视觉Transformer(https://arxiv.org/abs/2305.07027,2023年5月11日)

EfficientViT是一款全新的视觉Transformer,在速度与精度之间实现了出色的平衡。它的性能超越MobileNetV3和MobileViT等现有高效架构,同时速度大幅提升。研究人员通过级联分组注意力实现这一成果:通过向每个注意力头输入完整特征的不同分组,减少多头自注意力层中的冗余(类似于分组卷积的思路)。

figure17
标注图源自:https://arxiv.org/abs/2305.07027

扩散模型的并行采样(https://arxiv.org/abs/2305.16317,2023年5月25日)

扩散模型通过数百到数千步的去噪扩散步骤生成高质量图像,计算成本很高。该研究没有采取减少扩散步数、牺牲质量的常规思路,而是提出在一定程度上并行执行扩散步骤。所提出的方法可将采样速度提升2-4倍,同时保持相近的图像质量。

figure18
标注图源自:https://arxiv.org/abs/2305.16317

重塑ViT:计算最优模型设计的缩放法则(https://arxiv.org/abs/2305.13035,2023年5月22日)

此前的研究主要聚焦于参数量层面的最优数据集规模和模型规模。该研究中,研究人员提出了推导计算最优模型形状(例如宽度和深度)的方法。最终得到的视觉Transformer,性能超越了规模是其两倍的模型。此外,尽管这款计算最优的小模型使用相同的计算资源预算训练,但其推理成本还不到更大模型的一半。

figure19
标注图源自:https://arxiv.org/abs/2305.13035

音频与语音

将语音技术扩展至1000+种语言(https://arxiv.org/abs/2305.13516,2023年5月22日)

Meta AI开发了一款支持约1100种语言的语音转文本模型MMS(相比之下,OpenAI的Whisper模型支持99种语言)。在FLEURS基准测试中,MMS与Whisper共同覆盖的54种语言上,Meta的MMS模型表现均优于Whisper。该模型以宽松的CC-BY-NC 4.0许可协议发布。

figure20
标注图源自:https://arxiv.org/abs/2305.13516

通用方法

Sophia:面向大语言模型预训练的可扩展随机二阶优化器(https://arxiv.org/abs/2305.14342,2023年5月23日)

Sophia是一种二阶优化算法,对于普遍采用Adam和AdamW作为主流优化器的大语言模型来说,它极具吸引力。与Adam相比,Sophia的速度提升2倍,且使用Sophia训练的模型能取得更优的建模性能。简而言之,Sophia通过梯度曲率而非梯度方差对梯度进行归一化,这是与Adam的核心区别。

figure21
标注图源自:https://arxiv.org/abs/2305.14342

仅需前向传播的大语言模型微调(https://arxiv.org/abs/2305.17333,2023年5月27日)

研究人员提出了一种内存高效的零阶优化器(MeZO),使微调大语言模型所需的内存占用与推理时相当。需要注意的是,零阶方法仅需前向传播,无需梯度信息——这与使用梯度信息的一阶方法(如SGD和Adam),以及额外使用曲率或海森矩阵信息的二阶方法形成对比。基准测试显示,采用该方法微调的大语言模型,表现优于上下文学习基线,且效果似乎优于全量微调。

figure22
标注图源自:https://arxiv.org/abs/2305.17333

Dropout可消除双下降现象(https://arxiv.org/abs/2305.16179,2023年5月25日)

双下降是指随着模型复杂度提升,模型测试误差先下降、再上升、之后又下降的现象。这篇标题玩了有趣谐音梗的论文《Dropout Drops Double Descent》,解释了为什么我们在实践中很少见到双下降现象:“以往的深度学习模型不会出现双下降场景——因为我们已经在模型中应用了Dropout这类常用的正则化方法。”

figure23
标注图左:《深度双下降》(https://arxiv.org/abs/2305.16179);右:《Dropout可消除双下降》(https://arxiv.org/abs/2305.16179)

本杂志是一项个人兴趣项目,不提供直接报酬。不过,如果您愿意支持我,可以考虑购买https://sebastianraschka.com/books 上的书籍。如果您觉得这些书籍富有洞见、有所帮助,欢迎推荐给您的朋友和同事。

figure24
https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

您的支持意义重大!非常感谢!

【转载】面向人类反馈的直接偏好优化及更多AI研究

原文地址:Direct-Preference Optimization for Human Feedback and More, by Sebastian Raschka, on 2023-06-10

面向人类反馈的直接偏好优化及更多AI研究

本文精选并汇总了23项AI研究亮点。当前自然语言处理和计算机视觉领域正涌现出大量令人振奋的进展!

此外,如果你对上月的研究亮点感兴趣,可以通过以下链接查看:
https://magazine.sebastianraschka.com/p/ai-research-highlights-in-3-sentences

大语言模型

直接偏好优化:你的语言模型本质上是一个奖励模型(https://arxiv.org/abs/2305.18290,2023年5月29日)

直接偏好优化(DPO)是一种替代基于近端策略优化(PPO)的人类反馈强化学习(RLHF)的全新方案,后者被用于ChatGPT等指令微调模型。该研究表明,RLHF中用于拟合奖励模型的交叉熵损失,可直接用于微调大语言模型。根据基准测试结果,使用DPO效率更高,且在响应质量上往往优于RLHF/PPO。

figure01
标注图源自:https://arxiv.org/abs/2305.18290

LIMA:对齐之道,少即是多(https://arxiv.org/abs/2305.11206,2023年5月18日)

研究人员精心筛选了1000组指令对,以监督方式微调了一个650亿参数的LLaMA模型,命名为LIMA。值得注意的是,Alpaca等其他经过微调的LLaMA模型是基于52000组自动生成的指令对训练的。令人惊艳的是,LIMA的表现超越了采用人类反馈强化学习(RLHF)技术训练的模型,例如ChatGPT/GPT 3.5。

figure02
标注图源自:https://arxiv.org/abs/2305.11206

QLoRA:量化大语言模型的高效微调方法(https://arxiv.org/abs/2305.14314,2023年5月23日)

QLoRA(量化低秩适配)是参数高效型大语言模型微调领域的最新成果。QLoRA降低了650亿参数LLaMA模型的内存需求,使其可在单张48GB显存的GPU(如A100)上运行。通过4位量化训练得到的650亿参数Guanaco模型,保留了全16位微调的任务性能,仅经过24小时微调,性能就达到ChatGPT的99.3%。

figure03
标注图源自:https://arxiv.org/abs/2305.14314

SpQR:实现大语言模型权重近无损压缩的稀疏量化表示(https://arxiv.org/abs/2306.03078,2023年6月5日)

将大语言模型量化至4位,是目前在单GPU或笔记本电脑上运行这类模型的唯一方式,但这会牺牲精度。该研究提出的稀疏量化表示(SpQR)方法,提供了一种全新的近无损替代方案。其核心思路是将部分离群权重保持在更高精度,从而将精度损失控制在1%以内,同时实现与int4量化几乎相同的模型压缩率。

figure04
标注图源自:https://arxiv.org/abs/2306.03078

重复训练与否:Token危机下大语言模型缩放的启示(https://arxiv.org/abs/2305.13230,2023年5月22日)

研究发现,互联网上高质量文本数据的增长速度,跟不上大语言模型规模扩张的需求。那么,如果对大语言模型进行多轮次训练会发生什么?结果表明,多轮次训练会导致过拟合,且大多数正则化技术都无法解决这一问题(Dropout除外)。

figure05
标注图源自:https://arxiv.org/abs/2305.13230

DoReMi:优化数据混合比例可加速大语言模型预训练(https://arxiv.org/abs/2305.10429,2023年5月17日)

该研究中,研究人员探讨了预训练数据中维基百科文章、书籍和网页的相对占比,是否会显著影响大语言模型的性能。为解答这一问题,他们训练了一个代理模型,推导得出训练更大规模目标大语言模型的相对领域权重。研究发现,这一方法可将下游任务准确率提升6.5%;在经过权重重分配的The Pile数据集上预训练时,模型达到基线准确率的速度可提升2.6倍。

figure06
标注图源自:https://arxiv.org/abs/2305.10429

Falcon大语言模型的RefinedWeb数据集:纯网页数据效果超越精选语料库(https://arxiv.org/abs/2306.01116,2023年6月1日)

该研究发现,基于去重网页数据训练的大语言模型,其零样本性能可与基于精选数据集训练的模型相媲美。该研究中,使用100%网页数据预训练得到的Falcon 7B模型,性能与80亿参数的PaLM模型相当,而PaLM仅使用了18%的网页数据(其余为书籍等更高质量的数据)。研究人员开发的RefinedWeb数据集,是CommonCrawl的过滤去重版本(约为原大小的11%)。

figure07
标注图源自:https://arxiv.org/abs/2306.01116

模仿专有大语言模型的虚假承诺(https://arxiv.org/abs/2305.15717,2023年5月25日)

近几个月来,基于ChatGPT等其他大语言模型生成的数据来微调大语言模型,已成为普遍做法。这项最新研究发现,众包人员对这些所谓的“模仿模型”评价很高。但事实证明,这些模仿模型往往只是复刻了其训练数据来源的上游大语言模型的风格,而非事实准确性。

figure08
标注图源自:https://arxiv.org/abs/2305.15717

位置编码对Transformer长度泛化能力的影响(https://arxiv.org/abs/2305.19466,2023年5月31日)

Transformer在不同长度的训练样本上表现出的性能存在差异,这在微调阶段尤为突出——因为长指令样本相对稀缺。该研究发现,在仅解码器架构的Transformer中,移除位置编码的效果,优于绝对位置编码、相对位置编码、ALiBi以及旋转位置编码等所有变体。

figure09
标注图源自:https://arxiv.org/abs/2305.19466

Goat:经过微调的LLaMA在算术任务上超越GPT-4(https://arxiv.org/abs/2305.14201,2023年5月23日)

研究人员对70亿参数的LLaMA模型Goat进行微调,使其在算术任务上超越了规模是其75倍的5400亿参数PaLM模型以及GPT-4。Goat的优异表现归功于监督微调以及LLaMA的分词器。尽管计算器(以及Wolfram Alpha这类工具)更适合完成算术任务,但研究人员选择该任务,大概率是因为生成合成数据和通过准确率指标评估模型性能都较为简便。

figure10
标注图源自:https://arxiv.org/abs/2305.14201

Gorilla:接入海量API的大语言模型(https://arxiv.org/abs/2305.15334,2023年5月24日)

Gorilla是一款专门经过微调、用于生成API调用的大语言模型(这一点GPT-4或许可以做得更好)。研究人员以LLaMA-7B为基础模型,在来自Torch Hub、TensorFlow Hub和HuggingFace的1645个API调用数据上对其进行微调。经过微调的Gorilla,表现优于其他未针对API调用进行微调的大语言模型。

figure11
标注图源自:https://arxiv.org/abs/2305.15334

掩码语言模型预训练的动态掩码率调度策略(https://arxiv.org/abs/2305.15096,2023年5月24日)

传统上,BERT类大语言模型采用15%的固定掩码率进行预训练。该研究中,研究人员在预训练过程中将掩码率在15%-30%之间动态调整,发现这可将GLUE等语言翻译基准的准确率小幅提升0.46%。更值得关注的是,采用所提出的动态掩码率策略,模型达到原始BERT准确率的速度可提升1.89倍。

figure12
标注图源自:https://arxiv.org/abs/2305.15096

面向长上下文大模型的分块并行Transformer(https://arxiv.org/abs/2305.19370,2023年5月30日)

本文提出的优化技术采用分块方式执行自注意力计算,避免对整个序列进行前向传播。该方法节省的内存,使得Transformer可训练的上下文长度是原始自注意力实现的32倍,约为FlashAttention的2倍。与FlashAttention类似,这是一种不修改模型架构的优化手段,因此不会影响预测结果。

figure13
标注图源自:https://arxiv.org/abs/2305.19370

RWKV:Transformer时代的RNN革新(https://arxiv.org/abs/2305.13048,2023年5月22日)

RWKV语言模型的代码于去年公布后,几乎淡出了公众视野,直到本月研究人员正式发布相关研究成果。RWKV是一种循环神经网络,具备Transformer级别的大语言模型性能。RWKV的非凡之处在于,其建模性能与Pythia等部分大语言模型相当,但计算成本却大幅降低。

figure14
标注图源自:https://arxiv.org/abs/2305.13048

SEAHORSE:面向摘要评估的多语言、多维度数据集(https://arxiv.org/abs/2305.13194,2023年5月22日)

大多数大语言模型基于英文指令数据集训练,并在英文基准上进行评估。Seahorse提供了全新的数据集,包含覆盖6种语言的9.6万条摘要,可用于多语言、多维度的摘要评估。该数据集以宽松的知识共享署名4.0国际许可协议发布;不过数据集的收集流程尚不够透明,希望其中不包含任何受版权保护的文本。

figure115
标注图源自:https://arxiv.org/abs/2305.13194

基于原则驱动、极少人工监督的语言模型自对齐方法(https://arxiv.org/abs/2305.03047,2023年5月4日)

研究人员提出了SELF-ALIGN方法,以此开发出经过微调的650亿参数LLaMA模型Dromedary。SELF-ALIGN是监督微调和人类反馈强化学习(RLHF)之外,另一种实现大语言模型与人类意图对齐的方案。该方法分为四个步骤:(1)利用大语言模型生成提示词;(2)制定人工编写的原则,通过上下文学习引导大语言模型生成回复;(3)利用自对齐后的回复训练大语言模型;(4)对过于简略或间接的回复进行优化。

figure16
标注图源自:https://arxiv.org/abs/2305.03047

计算机视觉

EfficientViT:采用级联分组注意力的内存高效视觉Transformer(https://arxiv.org/abs/2305.07027,2023年5月11日)

EfficientViT是一款全新的视觉Transformer,在速度与精度之间实现了出色的平衡。它的性能超越MobileNetV3和MobileViT等现有高效架构,同时速度大幅提升。研究人员通过级联分组注意力实现这一成果:通过向每个注意力头输入完整特征的不同分组,减少多头自注意力层中的冗余(类似于分组卷积的思路)。

figure17
标注图源自:https://arxiv.org/abs/2305.07027

扩散模型的并行采样(https://arxiv.org/abs/2305.16317,2023年5月25日)

扩散模型通过数百到数千步的去噪扩散步骤生成高质量图像,计算成本很高。该研究没有采取减少扩散步数、牺牲质量的常规思路,而是提出在一定程度上并行执行扩散步骤。所提出的方法可将采样速度提升2-4倍,同时保持相近的图像质量。

figure18
标注图源自:https://arxiv.org/abs/2305.16317

重塑ViT:计算最优模型设计的缩放法则(https://arxiv.org/abs/2305.13035,2023年5月22日)

此前的研究主要聚焦于参数量层面的最优数据集规模和模型规模。该研究中,研究人员提出了推导计算最优模型形状(例如宽度和深度)的方法。最终得到的视觉Transformer,性能超越了规模是其两倍的模型。此外,尽管这款计算最优的小模型使用相同的计算资源预算训练,但其推理成本还不到更大模型的一半。

figure19
标注图源自:https://arxiv.org/abs/2305.13035

音频与语音

将语音技术扩展至1000+种语言(https://arxiv.org/abs/2305.13516,2023年5月22日)

Meta AI开发了一款支持约1100种语言的语音转文本模型MMS(相比之下,OpenAI的Whisper模型支持99种语言)。在FLEURS基准测试中,MMS与Whisper共同覆盖的54种语言上,Meta的MMS模型表现均优于Whisper。该模型以宽松的CC-BY-NC 4.0许可协议发布。

figure20
标注图源自:https://arxiv.org/abs/2305.13516

通用方法

Sophia:面向大语言模型预训练的可扩展随机二阶优化器(https://arxiv.org/abs/2305.14342,2023年5月23日)

Sophia是一种二阶优化算法,对于普遍采用Adam和AdamW作为主流优化器的大语言模型来说,它极具吸引力。与Adam相比,Sophia的速度提升2倍,且使用Sophia训练的模型能取得更优的建模性能。简而言之,Sophia通过梯度曲率而非梯度方差对梯度进行归一化,这是与Adam的核心区别。

figure21
标注图源自:https://arxiv.org/abs/2305.14342

仅需前向传播的大语言模型微调(https://arxiv.org/abs/2305.17333,2023年5月27日)

研究人员提出了一种内存高效的零阶优化器(MeZO),使微调大语言模型所需的内存占用与推理时相当。需要注意的是,零阶方法仅需前向传播,无需梯度信息——这与使用梯度信息的一阶方法(如SGD和Adam),以及额外使用曲率或海森矩阵信息的二阶方法形成对比。基准测试显示,采用该方法微调的大语言模型,表现优于上下文学习基线,且效果似乎优于全量微调。

figure22
标注图源自:https://arxiv.org/abs/2305.17333

Dropout可消除双下降现象(https://arxiv.org/abs/2305.16179,2023年5月25日)

双下降是指随着模型复杂度提升,模型测试误差先下降、再上升、之后又下降的现象。这篇标题玩了有趣谐音梗的论文《Dropout Drops Double Descent》,解释了为什么我们在实践中很少见到双下降现象:“以往的深度学习模型不会出现双下降场景——因为我们已经在模型中应用了Dropout这类常用的正则化方法。”

figure23
标注图左:《深度双下降》(https://arxiv.org/abs/2305.16179);右:《Dropout可消除双下降》(https://arxiv.org/abs/2305.16179)

本杂志是一项个人兴趣项目,不提供直接报酬。不过,如果您愿意支持我,可以考虑购买https://sebastianraschka.com/books 上的书籍。如果您觉得这些书籍富有洞见、有所帮助,欢迎推荐给您的朋友和同事。

figure24
https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

您的支持意义重大!非常感谢!

【转载】大语言模型微调与数据集观察

原文地址:LLM Tuning & Dataset Perspectives, by Sebastian Raschka, on 2023-06-3

大语言模型微调与数据集观察

近几个月来,我们看到众多个人与企业纷纷开源各类大语言模型(LLM)与数据集,这一趋势令人欣喜。
但从研究视角来看,这更像是一场“争先发布”的竞赛(这一点可以理解),而非严谨的系统性分析。
而本月,我们终于看到了几项深入探究LLM训练原理的研究,我很期待在本期通讯中介绍其中部分项目。

尽管几个关键问题终于得到了解答:

  • 对齐大语言模型是否必须采用基于人类反馈的强化学习?
  • 在ChatGPT模仿数据上训练的大语言模型性能究竟如何?
  • 大语言模型训练是否应该采用多轮次训练?
  • ……

但正如我们即将看到的,仍有大量问题悬而未决。因此,如果你正在寻找有价值的研究方向,这些论文或许也能带来一些启发。

注:如果本期通讯显示内容被截断,是因为部分邮件服务商可能会对长邮件进行裁剪。你可以访问以下链接阅读全文:https://magazine.sebastianraschka.com

文章与行业动态

在深入介绍近期几项有趣的研究项目之前,我想再次强调LLaMA的重要意义。https://github.com/facebookresearch/llama 一再证明了自己是LLM研究领域具有里程碑意义的试验平台,凸显了开源模型对学术研究的重要价值。作为一名不隶属于任何大型科技公司的研究者,我认为:尽管与微软/OpenAI、谷歌相比,Meta的声量常常被低估,但它对AI研究社区的贡献极具影响力。截至目前,LLaMA或许是2023年最具影响力的LLM模型。

针对业务需求微调任务专属大语言模型

我们来详细了解一下Goat模型——这是一个基于7B参数LLaMA微调得到的模型,在算术任务上的表现超过了GPT-4,相关研究发表在最新论文 https://arxiv.org/abs/2305.14201 中。

首先值得注意的是,在零样本场景下,7B参数的Goat模型性能超过了参数规模约为其75倍的540B参数PaLM模型以及GPT-4——正如论文标题所宣称的那样。

figure01
Goat模型在算术问题上表现优于GPT-4。资料来源:https://arxiv.org/abs/2305.14201

它为何如此出色?Goat是一款专用的微调LLM,针对特定任务进行了专项训练。通常来说,任务专属的微调模型性能会优于GPT-4这类通用对话机器人,这是不言而喻的。但我收到了很多从业者与企业的咨询,询问是否可以用GPT-4处理所有任务。在我看来,正如这篇论文所印证的,经过良好微调的模型始终会具备性能优势。(当然,这不是第一个也不是唯一一个针对特定任务微调的LLM,类似的模型数不胜数。例如FLAN,https://arxiv.org/abs/2109.01652,可能是应用最广泛的模型之一。)

Goat模型成功的两大核心要素是:

  1. 基于优质基础LLM(此处为LLaMA),针对目标任务进行有监督微调(区别于通用预训练或指令微调);
  2. LLaMA的数字分词机制(将每个数字拆分为独立的token)。

我们如何知道这两点的结合至关重要?第一点显而易见:7B参数的LLaMA基础模型本身性能显然不如GPT-4,因此微调是使其超越GPT-4的必要条件。

但在这个案例中,仅靠微调还不够。研究人员指出,在相同数据上微调的OPT、GPT-J、GPT-NeoX和Pythia模型,表现都远不及Goat。研究人员认为,LLaMA特有的分词方案是Goat取得成功的关键因素。我认为分词是一个非常有意思却常被忽略的研究点,期待未来能看到更多关于该方向的消融实验与对比研究。

这些算术任务与业务需求有何关联?

但我们也必须直面一个核心问题:既然我们有Wolfram Alpha或者普通计算器这类功能更强、更可靠的工具,为什么还要用LLM来处理简单的算术任务?

算术任务是很好的试验平台,因为很容易生成带有真实标签的合成训练集,并且生成的回复也易于评估(相比其他自由文本生成任务)。

从“山羊”到“大猩猩”

另一个近期通过微调提升LLM特定能力的案例是 https://arxiv.org/abs/2305.15334 项目。

Gorilla是一款专门针对生成API调用进行微调的LLM(这一点GPT-4或许可以做得更好)。研究人员以LLaMA-7B为基础模型,在来自Torch Hub、TensorFlow Hub和HuggingFace的1645条API调用数据上进行了微调。经过微调的Gorilla在API调用任务上的表现优于其他未经过专项微调的LLM。

figure02
标注图出自 https://arxiv.org/abs/2305.15334

提升微调效率

上文中介绍的Goat模型采用了 https://arxiv.org/abs/2106.09685 中的方法进行微调,以提升参数效率,使得仅用单张24GB显存的GPU即可完成7B参数LLaMA模型的微调。(注:如果你想使用LoRA微调LLaMA,我们在开源仓库 https://github.com/Lightning-AI/lit-llama 中实现了该方法。)

那么,能否在单张GPU上训练65B(而非7B)参数的LLaMA模型?与LoRA相关,一种名为QLoRA(量化低秩适配的缩写)的新方法于近日发布,正好可以实现这一点。

QLoRA(量化低秩适配)是参数高效型LLM微调领域的最新成果。它降低了65B LLaMA模型的显存需求,使其能够适配单张48GB显存的GPU(例如A100)。最终得到的65B参数Guanaco模型通过4位量化训练,保持了完整16位微调的任务性能,仅经过24小时微调,就达到了ChatGPT性能的99.3%。

figure03
标注图出自 https://arxiv.org/abs/2305.14314

微调大语言模型到底需要多少数据?

对于想要微调LLM的从业者和研究者来说,获取充足的数据是另一大挑战。

近期的 https://arxiv.org/abs/2305.11206 项目,对于想要开发高性能LLM的研究者和技术爱好者来说,可能具有颠覆性意义。

在LIMA论文中,研究人员证明:仅用1000个样本对65B LLaMA模型进行有监督微调,其性能与ChatGPT / GPT-3.5这类更大的模型差距并不大。我们来详细分析一下!

研究人员发现,在57%的场景下GPT-4表现更优,但在43%的场景中,LIMA的表现与GPT-4相当甚至更优,这一结果相当亮眼。或者换个角度看,约有一半的情况下,LIMA的表现优于GPT-4的前身ChatGPT/GPT-3.5(也称为DaVinci003)。

figure04
标注图出自 https://arxiv.org/abs/2305.11206

但一个有意思的问题是:为什么LIMA的表现能大幅领先Alpaca?两者都是经过有监督微调的LLaMA模型。

首先,LIMA基于65B参数的LLaMA模型,而原始Alpaca模型基于7B参数的LLaMA基础模型。为了让对比更公平,作者使用65B基础模型复现了Alpaca的训练过程,按照原始Alpaca项目的设置,在52000个样本上进行训练。

因此我们可以得出结论:两者的性能差异本质上来源于训练集的质量——作者为LIMA精心构建了数据集,它的表现超过了在52倍数据量上训练的同规格65B LLaMA基础模型(即Alpaca)。

这是一篇非常有价值的论文。但我认为还缺少一项基准与消融研究:如果用RLHF而非有监督学习对65B LLaMA基础模型进行微调,LIMA的表现与之相比如何?

figure05
LIMA论文的更多标注图,来源:https://arxiv.org/abs/2305.11206

理性看待LLaMA类模型

尽管上文提到的LIMA论文成果喜人且令人振奋,但在此背景下,有一篇论文值得一提:https://arxiv.org/abs/2305.15717

近几个月来,基于其他LLM(例如ChatGPT)生成的数据来微调LLM已经成为普遍做法。而在这项近期研究中,研究人员发现众包工作人员对这类所谓的“模仿模型”评价很高。但事实证明,这些模仿模型往往只是复刻了其训练数据来源的上游LLM的语言风格,而非事实准确性。

figure06
标注图出自 https://arxiv.org/abs/2305.15717

需要说明的是,LIMA论文并未使用模仿数据,而是采用了精心构建的数据集。但值得强调的是,评估方法有时可能会出现“好得不真实”的情况,因此我们亟需更多、更优质的基准测试。

基于人类反馈的强化学习的新替代方案

不久前,我们讨论过使用基于人类反馈的强化学习(RLHF)对齐大语言模型——例如ChatGPT就是采用这种方式训练的。如果你想了解更多解释与参考资料,还可以查看:
https://magazine.sebastianraschka.com/p/ahead-of-ai-6-train-differently

而近几个月,有监督微调成为了LLM微调的主流方式(比如上文提到的LIMA论文也采用了有监督微调)。

如今,https://arxiv.org/abs/2305.18290 提出了另一种替代基于人类反馈的强化学习(以及其中用于指令微调模型的近端策略优化PPO算法)的新方法。研究人员表明,RLHF中拟合奖励模型的交叉熵损失可以直接用于微调LLM。根据他们的基准测试,使用直接偏好优化(DPO)效率更高,并且在回复质量方面通常也优于RLHF/PPO。

figure07
标注图出自 https://arxiv.org/abs/2305.18290

我个人也很期待看到它在数据集效率方面与RLHF的对比,这会是一个很有意思的未来研究方向。

多轮预训练能否提升大语言模型基础模型的性能?

到目前为止,我们只讨论了微调。所有微调模型都依赖于预训练好的基础模型。因此,我们自然会问:如何才能打造更好的基础模型?

我经常自问的一个问题是:如果对大语言模型进行多轮次训练会怎样?(这里的“轮次”指完整遍历一遍训练数据集。)经典机器学习模型、深度神经网络,以及最新的视觉Transformer通常都会训练数百轮,那么通常只训练1轮的大语言模型,如果也采用多轮训练会发生什么?

这个问题终于在最新论文 https://arxiv.org/abs/2305.13230 中得到了解答。

但首先,考虑到数据量极其庞大,我们为什么要考虑对LLM进行多轮训练?事实证明,互联网上的高质量文本数据的增长速度跟不上需求。此外,如果未来受版权保护的内容被移除,数据集规模可能会进一步缩小。那么,为什么不对现有数据进行多轮训练呢?

研究结果是:多轮训练会导致过拟合。

figure08
标注图出自 https://arxiv.org/abs/2305.13230。注:该实验使用T5模型进行,以让多轮训练的计算具备可行性。

另一个有意思的结论是:随机失活(Dropout)有助于缓解过拟合(这并不意外),但根据作者的研究,权重衰减等其他技术则没有效果。顺带一提:LLaMA、Gopher、Chinchilla、GPT-3和PaLM等主流大模型都没有使用随机失活,因为它会减慢训练速度。

三个待解的开放问题

  1. 如果只重复使用像上文提到的LIMA那样的高质量数据,会怎么样?这是个很有意思的想法;直觉上这似乎合理,或许会有帮助。但坏消息是,效果可能并不明显。研究人员用维基百科数据(相对于C4数据集)做了相关实验,他们认为维基百科属于高质量数据(我也认同这一点)。但结果显示,重复使用维基百科数据进行多轮训练时,模型性能同样出现了类似的下降。
  2. 数据增强是否有帮助?目前已有多种文本增强方法,这是另一个值得未来研究的好问题。顺便说一句,这些技术包括回译、同义词替换、句子打乱,以及使用合成数据(例如由GPT-4生成),我在 https://leanpub.com/machine-learning-q-and-ai/ 中对此进行过总结。
  3. 最后,如果是微调(而非预训练)场景,情况会如何?同样的规律是否适用?(根据我的经验,进行少量轮次的微调,比如3-5轮,是有价值的,但我希望未来能看到针对这一点的严谨研究。)

更高效的视觉Transformer

这部分内容已经很长了,但计算机视觉领域也有一些有意思的进展,我想在下面简要分享。

EfficientViT:具备级联分组注意力的内存高效视觉Transformer(https://arxiv.org/abs/2305.07027,2023年5月11日)

EfficientViT是一种新型视觉Transformer,在速度与精度之间实现了极佳的平衡。它的性能超过了MobileNetV3、MobileViT等其他高效架构,同时速度大幅提升。研究人员通过级联分组注意力实现了这一点:通过向每个注意力头输入完整特征的不同分组(类似于分组卷积),减少了多头自注意力层中的冗余。

figure09
标注图出自 https://arxiv.org/abs/2305.07027

重塑视觉Transformer:计算最优模型设计的缩放定律(https://arxiv.org/abs/2305.13035,2023年5月22日)

此前的研究主要关注参数数量层面的最优数据集规模与模型规模。而在这项研究中,研究人员提出了推断计算最优模型形态(例如宽度与深度)的方法。最终得到的视觉Transformer,性能超过了两倍参数量的同类模型。此外,尽管这种计算最优的小模型使用相同的计算资源预算训练,但推理成本还不到大模型的一半。

figure10
标注图出自 https://arxiv.org/abs/2305.16317

用于序数回归的深度神经网络

最后,我想分享一篇我自己的论文,它于本周刚刚被接收:https://arxiv.org/abs/2111.08851

这篇论文提出了一种新的损失函数,可以将任意神经网络分类器(卷积网络、循环神经网络或Transformer)改造为处理序数数据的模型。什么是序数数据?例如亚马逊的星级评分,或者具有有序类别的疾病分级:无 < 轻微 < 中度 < 严重。

figure11
用于秩一致序数回归的深度神经网络,来源:https://arxiv.org/abs/2111.08851

当然,相关代码参见:https://github.com/Raschka-research-group/coral-pytorch/blob/main/docs/tutorials/pytorch_lightning/distilbert-corn-tripadvisor.ipynb

三句话以内的研究亮点

和往常一样,这个月我还接触到了很多其他有意思的论文。当然,在这篇已经很长的通讯里,我无法全部分享。所以和上次一样,下周我会单独整理一份更多研究亮点的清单。在此期间,如果你感兴趣,可以查看上一期的清单:
https://magazine.sebastianraschka.com/p/ai-research-highlights-in-3-sentences

人工智能风险与监管

讨论最新的AI风险与监管动态是绕不开的话题。当前的争论集中在几个热点议题上:AI是否存在生存性风险?AI是否会造成其他类型的伤害,是否应该被监管?应该如何监管AI以降低风险与伤害?在尊重版权数据的前提下,使用互联网数据训练AI应用的边界在哪里?

多位AI研究者与专家参与了AI风险相关的辩论。一些最顶尖、最有成就的AI研究者,比如杨立昆(Yann LeCun)、赵京炫(Kyunghyun Cho)以及Andrew Ng,对AI相关的担忧持否定态度:
https://venturebeat.com/ai/titans-of-ai-industry-andrew-ng-and-yann-lecun-oppose-call-for-pause-on-powerful-ai-systems/
https://venturebeat.com/ai/top-ai-researcher-dismisses-ai-extinction-fears-challenges-hero-scientist-narrative/

与此同时,另一些顶尖研究者,包括杰弗里·辛顿(Geoffrey Hinton)和约书亚·本吉奥(Yoshua Bengio),则表达了担忧:
https://apnews.com/article/ai-danger-superintelligent-chatgpt-hinton-google-6e4992e7a87d5bcae787ad45545757db
https://yoshuabengio.org/2023/05/22/how-rogue-ais-may-arise/

此外,https://www.axios.com/2023/05/17/ai-leaders-sam-altman-regulate-senate 报道了山姆·奥特曼在美国参议院听证会上的发言。而作为对欧盟监管计划的回应,https://www.theverge.com/2023/5/25/23737116/openai-ai-regulation-eu-ai-act-cease-operating 称OpenAI可能停止在欧盟运营(有夸张版本的评论称,奥特曼的表态是因为 https://www.reuters.com/technology/openai-may-leave-eu-if-regulations-bite-ceo-2023-05-24/ 。)

最后,https://technomancers.ai/japan-goes-all-in-copyright-doesnt-apply-to-ai-training/#more-642 指出,日本将不会对AI训练所用数据强制执行版权限制。

本月引语

“监管我们的力度要大到让其他人难以竞争。”
—— https://twitter.com/mmbronstein/status/1661654737488322560?s=20,OpenAI首席执行官山姆·奥特曼在出席 https://www.judiciary.senate.gov/committee-activity/hearings/oversight-of-ai-rules-for-artificial-intelligence 听证会之后的发言。

深度学习基础课程:提升训练性能与后续方向

我的 https://lightning.ai/pages/courses/deep-learning-fundamentals/ 课程的最后两个单元终于全部上线了!

例如,在这两个单元中,你将学习如何使用混合精度训练、分布式多GPU训练范式、模型编译等方法,更快地训练PyTorch模型。

figure12
第9单元截图,来源:https://lightning.ai/pages/courses/deep-learning-fundamentals/9.0-overview-techniques-for-speeding-up-model-training/

我开设这门课程的目标,是用开源库提供一套现代化的深度学习与AI学习路径。此外,我力求内容简洁,同时又超出大学课程的常规主题范围。

对我而言同样重要的是,课程纳入了很多在实践中极具价值的重要主题:学习率调度器、混合精度训练、分布式多GPU训练策略等等!

如果你一直在跟着学习,希望你享受这段从反向传播到用PyTorch实现计算机视觉模型与大语言模型的学习之旅!

制作这门课程付出了很多努力,但也充满乐趣!如果你喜欢这门课并从中有所收获,我会非常开心!欢迎在GitHub的 https://github.com/Lightning-AI/dl-fundamentals 仓库中提出任何问题。如果你能将它分享给你的同事,我会万分感激。

开源亮点

GPT4All —— 一款免费、本地运行、注重隐私的对话机器人

https://gpt4all.io/index.html 是一款可以在本地电脑上运行的类ChatGPT对话工具——无需GPU,也无需联网。根据 https://github.com/nomic-ai/gpt4all 中分享的技术报告,该模型是一个7B参数的LLaMA模型,通过低秩适配(LoRA)技术,在约100万条由GPT-3.5-Turbo OpenAI API生成的提示-回复对上微调得到。

对大多数用户来说,GPT4All程序本身可能是最大的亮点,但我也很欣赏下方详细的性能基准表,它整理了当前最主流的指令微调LLM,非常实用。

figure13
资料来源:GPT4All性能基准表,出自https://gpt4all.io/index.html

Falcon 40-B —— 一款引发许可争议的新型大语言模型

技术创新研究院(TII)开发并发布了 https://huggingface.co/tiiuae/falcon-40b ,根据 https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard 的排名,它的性能超过了StableLM、LLaMA和MPT。

起初,Falcon 40-B的许可证颇具争议:它要求用户向Falcon开发者披露财务信息,并且当收入超过100万美元时,需分享10%的收益。这一许可证在社交媒体上引发了激烈讨论,因此开发者改变了立场,最终在一周后将许可证更改为常规的Apache 2.0开源许可证。

在我看来,开发者要求自己的辛勤工作获得回报是完全合理的。但我认为,引发激烈讨论的原因在于它当初被贴上了“开源”的标签。

此外,该许可证过于复杂,而且要求向Falcon开发者披露财务信息,对大多数企业和用户来说都是无法接受的。在我看来,固定的一次性费用或者订阅费会是更友好的使用方式。当然,最终以Apache 2.0协议开源该模型就更好了,这绝对是个好消息!

注:Falcon-40B现在也已在 https://github.com/Lightning-AI/lit-parrot 中得到支持(lit-parrot是 https://github.com/Lightning-AI/lit-llama 仓库的姊妹仓库,用于支持非LLaMA架构的大语言模型。)

figure14
在128个样本上测试的Int-4量化Falcon模型,数据来源:https://huggingface.co/tiiuae/falcon-40bhttps://github.com/Lightning-AI/lit-parrot

支持上千种语言的新型语音转文字模型

你们中有些人可能知道,我很喜欢 https://github.com/openai/whisper 模型,我所有教学视频的字幕都是用它生成的。

现在Meta AI推出了一款替代方案,名为 https://github.com/facebookresearch/fairseq/tree/main/examples/mms 。令人惊叹的是,MMS支持约1100种语言(相比之下,OpenAI的Whisper模型支持99种)。根据 https://arxiv.org/abs/2305.13516 中的基准测试,在MMS与Whisper共同覆盖的54种语言的FLEURS基准测试中,MMS模型的表现全部优于Whisper。该模型采用宽松的CC-BY-NC 4.0许可证发布,项目地址:https://github.com/facebookresearch/fairseq/tree/main/examples/mms

figure15
MMS模型使用示例,来源:https://github.com/facebookresearch/fairseq/tree/main/examples/mms

Watermark 2.4现已支持GPU信息显示

https://github.com/rasbt/watermark 是我开发多年的一个小型开源库。我(以及很多其他人)在开发和分享Python脚本、Jupyter笔记本时,用它来打印计算环境与包版本信息,以保证可复现性。简而言之,最新的2.4版本新增了--gpu参数,可以显示GPU硬件信息。你可以通过以下命令安装或升级到最新版本:

pip install watermark --upgrade

figure16
Watermark 2.4的–gpu参数效果,来源:https://github.com/rasbt/watermark

这本通讯是我的个人兴趣项目,不提供直接报酬。不过,如果你愿意支持我,可以考虑购买一本 https://sebastianraschka.com/books 中的书籍。如果你觉得它们有深度、有帮助,也欢迎推荐给你的朋友和同事。

figure17
https://www.amazon.com/Machine-Learning-PyTorch-Scikit-Learn-scikit-learn-ebook-dp-B09NW48MR1/dp/B09NW48MR1/ , https://nostarch.com/machine-learning-and-ai-beyond-basics , 以及 http://mng.bz/M96o

你的支持对我意义重大!非常感谢!

【转载】理解大语言模型参数高效微调:提示调优与前缀调优

原文地址:Understanding Parameter-Efficient LLM Finetuning: Prompt Tuning And Prefix Tuning,by Sebastian Raschka, on 2023-04-30

理解大语言模型参数高效微调:提示调优与前缀调优

上周我概述了大语言模型(LLM)的各类微调技术。接下来我会用一系列短文,逐一讲解其中最具实用价值的核心方法。

《大语言模型微调》

我们先从几类基于提示修改的参数高效微调技术讲起。

本文将覆盖的参数高效微调技术一览:

figure01

Continue reading 【转载】理解大语言模型参数高效微调:提示调优与前缀调优

【转载】《硅谷来信》摘录

最近听完了吴军博士的《硅谷来信》,收获不少,将部分内容摘录于此:

1、专业人员要适当了解大局,管理者要注重细节

2、引擎和刹车
引擎应该是自下而上的,公司才会有源源不断的动力。
高层要想办法调动基层的动力,而不是在后面催促大家前进。高层要做的事情是,在适时的时候刹车。

3、五级工程师划分
第五级:能独立解决问题,完成工程工作;
第四级:能指导和带领其他人一同完成更有影响力的工作;
第三级:能独立设计和实现产品,并且在市场上获得成功;
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代;
第一级:开创一个产业。

4、努力和天分的关系
从0到50靠经验;
从50到90靠努力;
从90到100靠天份。

5、确认公司价值观和企业文化
技术和产品稳定性,工程师文化,谷歌
用户体验,产品经理文化,腾讯,苹果,Facebook
销售业绩,结果导向,销售文化,阿里与亚马逊

6、不同人员用不同管理方式
能力低,积极性高,新人居多,给予培训带教和指导,引导和培养
能力低,积极性低,PIP计划
能力高,积极性高,给予新的挑战,防止倦怠,给予机会,给予培训
能力高,积极性低,调整岗位,给予许诺,调整态度

新员工,bootcamp计划,新兵训练营
待提升员工,pip(performance improvement plan)计划,能力提升计划
A、加强实践管理,严格考勤
B、制定周计划,并严格执行
C、一对一专业指导
D、给予介绍自己工作的机会

7、招合适的人
主要看:人品、能力、主动性
一个原则:录用的人,高于目前平均水平

8、工作时阻碍进步的常见问题
A、工作和职业要分清
B、不做工作的主人
C、被语言暴力激怒
D、疏于沟通

【转载】Boss与Leader

Boss Leader
驱动员工 指导员工
制造恐惧 制造热情
面对错误,喜欢使用人事惩罚手段 面对错误,喜欢寻找解决问题的技术或管理方法
只知道怎么做 展示怎么做
用人 发展人
从团队收割成绩 给予团队成绩
喜欢命令和控制 喜欢沟通和写作
喜欢说,“给我上” 喜欢说,“跟我上”

转自http://coolshell.cn/。

【转载】一对一会谈:清单对对碰



一对一会谈:清单对对碰

有关如何组织一对一会谈(即管理者与员工定期进行的面谈),比尔·坎贝尔曾经向我们推荐过一种比较独特的方法。管理者应当把最想在会谈中涉及的5件事写出来,员工也应该列一份这样的单子。把两张不同清单拿出来后,单子上十有八九会有几个条目是重复的。对于所有的一对一会谈而言,双方共同的目标都是为了解决问题,如果管理者和员工不能独立找出最需要两人共同解决的问题,那么摆在两人面前的问题就更不可忽视了。

除此之外,比尔还为我们推荐了一个好用的一对一会谈大纲,让我们在应用中受益匪浅。
1.工作表现
a.可以是销售数据
b.可以是产品交付情况或有关产品的重大进展
c.可以是消费者的意见或产品质量
d.可以是预算数目

2.与同事之间的关系(这对企业成员的团结一致非常关键)
a.产品人员和工程人员的关系
b.市场人员和产品人员的关系
c.销售人员和工程人员的关系

3.领导与管理
a.你有没有对你的人员起到指导和帮助的作用?
b.你有没有把“害群之马”清除出团队?
c.你有没有在人才招聘上下功夫?
d.你能否激励员工做出创举?

4.创新(最佳实践)
a.你是否一直在进步,是否一直思考着如何才能变得越来越好?
b.你是否经常对新的技术、新的产品及新的方案进行思考和评估?
c.你是否将业界或世界上最顶尖的人或企业作为对比标杆?