当前位置:   article > 正文

LLaMA: 高效且开源的基础语言模型

llama专业领域需要数据集吗

LLaMA是今年(2023年)二月份Meta挂在arxiv上的paper,是为数不多的开源的高质量大模型,对开源社区在LLM上的研究助力良多,厥功甚伟。下面我们看看这篇paper的细节。

LLM(Large Language Model)出现以来,大家普遍认为模型参数越多,质量越好。然而,Jordan Hoffmann在Training compute-optimal large language models的研究中表明,表现最好的模型不是最大的模型,而是一个较小的但在更多的数据上训练过的模型。因此,Hoffmann推荐在200B token上训练10B参数的模型。LLaMA在这之上更进一步,证明了7B的模型在1T token上训练可以取得更好的结果。

LLaMA包含一系列不同尺寸的模型,从7B到65B。虽然尺寸较小,但和一些大的模型也不分轩轾了。比如,LLaMA-13B模型尺寸上仅是GPT-3的十分之一,但效果类似。而LLaMA-65B则可以和Chinchilla以及540B的PaLM相媲美。

跟Chinchilla,GPT-3,PaLM-540B不同,LLaMA仅使用开源的数据。虽然还有其他的模型比如OPT、BLOOM、GLM、GPT-NeoX也是只使用开源数据,但它们效果没有PaLM-62B或Chinchilla好。

模型的训练大致和GPT-3,PaLM以及Chinchilla类似,一言以蔽之,就是在很大的textual数据上用标准optimizer训练一个大的transformer。

数据

数据的组成如下,针对每个数据集的特点,分别做了预处理,对细节感兴趣的可以去翻论文。

aa88ff1cf0d12866ccc9cccca2aad99d.png


使用SentencePiece库的BPE算法进行数据切分。并且用bytes对不知道的UTF-8编码进行处理。最终得到的1.4T的token,在训练中,每个token最多只被用一次。

模型结构

采纳了其他模型中的一些改进,包括:

  • Pre-normalization,来自GPT-3,可以稳定训练。

    • normalize输入而非输出

    • 使用RMSNorm

  • SwiGLU,来自PaLM,替换了ReLU来获得更好的效果。维度使用的是2/3*4d而不是PaLM中的4d。

  • Rotary Embedding,来自GPTNeo,替换了绝对位置编码。

其他的模型超参数见下表。

a3c40b53faa55fb7b6026bd635d4f595.png


optimizer使用AdamW, beta1=0.9,beta2=0.95。使用cosine learning rate schedule, 最终的learning rate是最高值的十分之一,weight decay 是0.1,2000步warmup。

高效实现

  • 使用了xformer中的高效的casual multi-head attention实现来内存占用的运行时间。灵感来自PaperSelf-attention does not need o(n^2) memory,并在Flashattention: Fast and memory-efficient exact attention with io-awareness.中使用。这个高效是由不存储注意力权重和不计算被mask的key/query分数来达到的。

  • 减少了在反向传播阶段需要重新计算的激活值,具体来说,是将计算量比较大的中间结果存储下来,比如线性层的输出。

    • 要实现这个,我们需要手动实现反向传播函数而不是依赖pytorch的autograd。

    • 为了更好的达到这一点,还需要我们多使用模型和序列并行来降低内存占用。

    • 还需要尽可能的让激活值的计算和GPU间的通信overlap。

在训练65B模型的时候,代码80G内存的2048块A100上每秒每GPU处理380个token。意味着需要21天处理完1.4T token。

不同尺寸的LLaMA的训练曲线如下:

411f3179999a125e03e9dd9d251965f0.png


结果

结果有很多,基本大意就是LLaMA不输给其他的更大的模型,这里放一个zero-shot任务上的结果,其他的感兴趣的话可以去翻原始论文。

2dd4e514e0f2931144b17523e0670452.png


结论

LLaMA有两个重大意义:

  1. 不需要专有数据集,仅仅靠开源数据集就能达到跟之前的好模型类似的结果,让普通研究者可以避开数据这个坑。

  2. 模型变小了,开源社区和普通研究者们马马虎虎可以基于这个模型做一些事情了,避开了算力这个坑。斯坦福的羊驼就是一个好例子。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

format,png

参考文献

  1. LLaMA: Open and Efficient Foundation Language Models

8a0da58acfb34c27257ed0148b71cae0.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/131299
推荐阅读
相关标签
  

闽ICP备14008679号