《TinyLlama: An Open-Source Small Language Model》全文翻译

news2024/9/22 19:46:05

【Title】

TinyLlama:开源小语言模型

【Abstract】

        我们推出了 TinyLlama,这是一个紧凑的 1.1B 语言模型,在大约 1 万亿个令牌上进行了大约 3 个时期的预训练。 TinyLlama 基于 Llama 2(Touvron 等人,2023b)的架构和标记器构建,利用开源社区贡献的各种进步(例如 FlashAttention(Dao,2023)),实现了更好的计算效率。 尽管规模相对较小,TinyLlama 在一系列下游任务中表现出了出色的性能。 它的性能明显优于规模相当的现有开源语言模型。 我们的模型检查点和代码可在 GitHub 上公开获取:https://github.com/jzhang38/TinyLlama。

【Introduction】

        自然语言处理 (NLP) 的最新进展在很大程度上是通过扩大语言模型大小来推动的(Brown 等人,2020;Chowdhery 等人,2022;Touvron 等人,2023a,b)。 在广泛的文本语料库上预训练的大型语言模型 (LLM) 已证明其在各种任务上的有效性(OpenAI,2023;Touvron 等人,2023b)。 一些实证研究证明了法学硕士的涌现能力,这些能力可能只在具有足够多参数的模型中体现出来,例如少样本提示(Brown et al., 2020)和链式推理(Wei et al., 2020)。 ,2022)。 其他研究侧重于对法学硕士的扩展行为进行建模(Kaplan 等人,2020;Hoffmann 等人,2022)。 霍夫曼等人。 (2022)建议,为了训练计算最优模型,模型的大小和训练数据量应该以相同的速度增加。 这提供了在计算预算固定时如何最佳选择模型大小和分配训练数据量的指南。

        尽管这些工作显示出对大型模型的明显偏好,但使用较大数据集训练较小模型的潜力仍未得到充分探索。 Touvron 等人没有训练计算最优的语言模型。 (2023a) 强调了推理预算的重要性,而不是仅仅关注训练计算最优语言模型。 推理最优语言模型的目标是在特定推理约束内实现最佳性能,这是通过使用比缩放定律建议的标记更多的标记来训练模型来实现的(Hoffmann 等人,2022)。 图夫龙等人。 (2023a) 表明,较小的模型在使用更多数据进行训练时,可以匹配甚至超越较大的模型。 此外,Thaddée (2023) 指出,现有的缩放法则 (Hoffmann et al., 2022) 在较小模型训练时间较长的情况下可能无法准确预测。

        受这些新发现的推动,这项工作的重点是探索较小模型在使用比缩放定律建议的数量多得多的标记进行训练时的行为(Hoffmann 等人,2022)。 具体来说,我们使用大约 3 万亿个令牌训练具有 1.1B 个参数的 Transformer 仅解码器模型(Vaswani 等人,2017)。 据我们所知,这是第一次尝试使用如此大量的数据来训练具有 1B 参数的模型。 遵循与 Llama 2(Touvron 等人,2023b)相同的架构和分词器,我们将模型命名为 TinyLlama。 与现有类似规模的开源语言模型相比,TinyLlama 显示出具有竞争力的性能。 具体来说,TinyLlama 在各种下游任务中都超越了 OPT-1.3B (Zhang et al., 2022) 和 Pythia1.4B (Biderman et al., 2023)。

        我们的 TinyLlama 是开源的,旨在提高语言模型研究人员的可访问性。 我们相信其卓越的性能和紧凑的尺寸使其成为语言模型研究的研究人员和从业者的一个有吸引力的平台。

【Pretraining】

        本节介绍我们如何预训练 TinyLlama。 首先,我们介绍预训练语料库和数据采样方法的细节。 接下来,我们详细介绍模型架构和预训练期间使用的超参数。

2.1 Pre-training data

        我们的主要目标是使预训练过程有效且可重复。 我们采用自然语言数据和代码数据的混合来预训练 TinyLlama,从 SlimPajama (Soboleva et al., 2023) 获取自然语言数据,从 Starcoderdata (Li et al., 2023) 获取代码数据。 我们采用 Llama 的 tokenizer (Touvron et al., 2023a) 来处理数据。

        SlimPajama 这是一个基于 RedPajama(Together Computer,2023)为训练语言模型而创建的大型开源语料库。 最初的 RedPajama 语料库是一项开源研究成果,旨在重现 Llama 的预训练数据(Touvron 等人,2023a),其中包含超过 1.2 万亿个代币。 SlimPajama 是通过对原始RedPajama 进行清理和去重而衍生出来的。

        Starcoderdata 收集该数据集是为了训练 StarCoder(Li 等人,2023),这是一种强大的开源大型代码语言模型。 它包含 86 种编程语言的约 2500 亿个代币。 除了代码之外,它还包括 GitHub 问题和涉及自然语言的文本代码对。 为了避免数据重复,我们删除了 SlimPajama 的 GitHub 子集,仅从 Starcoderdata 中删除了示例代码数据。

        合并这两个语料库后,我们总共有大约 9500 亿个代币用于预训练。 根据 Muennighoff 等人的观察,TinyLlama 在这些令牌上接受了大约三个 epoch 的训练。 (2023),与使用唯一数据相比,对数据进行最多四个时期的重复训练会导致性能下降最小。 在训练过程中,我们对自然语言数据进行采样,以实现自然语言数据和代码数据之间大约 7:3 的比例。

2.2 Architecture

表1:模型架构细节 

我们采用与 Llama 2 类似的模型架构(Touvron 等人,2023b)。 我们使用基于 Vaswani 等人的 Transformer 架构。 (2017),详细信息如下:

位置嵌入我们使用 RoPE(旋转位置嵌入)(Su et al., 2021)将位置信息注入到我们的模型中。 RoPE 是最近被许多主流大型语言模型广泛采用的方法,例如 PaLM (Anil et al., 2023)、Llama (Touvron et al., 2023a) 和 Qwen (Bai et al., 2023)。 

RMSNorm 在预归一化中,为了获得更稳定的训练,我们在每个变压器子层之前对输入进行归一化。 此外,我们应用 RMSNorm(Zhang 和 Sennrich,2019)作为我们的标准化技术,可以提高训练效率。

SwiGLU 我们没有使用传统的 ReLU 非线性,而是遵循 Llama 2,将 Swish 和门控线性单元结合在一起,称为 SwiGLU (Shazeer, 2020),作为 TinyLlama 中的激活函数。

分组查询注意力 为了减少内存带宽开销并加快推理速度,我们在模型中使用分组查询注意力(Ainslie et al., 2023)。 我们有 32 个用于查询注意力的头,并使用 4 组键值头。 通过这种技术,模型可以在多个头之间共享键和值表示,而不会牺牲太多性能。

2.3 Speed Optimizations

完全分片数据并行 (FSDP) 在训练期间,我们的代码库集成了 FSDP1,以有效利用多 GPU 和多节点设置。 这种集成对于跨多个计算节点扩展训练过程至关重要,从而显着提高训练速度和效率。

Flash Attention 另一个关键改进是集成了 Flash Attention 2(Dao,2023),这是一种优化的注意力机制。 该存储库还提供融合层范数、融合交叉熵损失和融合旋转位置嵌入,它们在提高计算吞吐量方面发挥着关键作用。

xFormers 我们已将 xFormers(Lefaudeux 等人,2022)存储库中的融合 SwiGLU 模块替换为原始 SwiGLU 模块,进一步提高了我们代码库的效率。 借助这些功能,我们可以减少内存占用,使 1.1B 模型能够适应 40GB 的 GPU RAM。

性能分析以及与其他模型的比较 这些元素的结合使我们的训练吞吐量达到了每 A100-40G GPU 每秒 24,000 个令牌。 与 Pythia-1.0B(Biderman 等人,2023)和 MPT-1.3B 2 等其他模型相比,我们的代码库表现出了卓越的训练速度。 例如,TinyLlama-1.1B 模型对于 300B 代币仅需要 3,456 A100 GPU 小时,而 Pythia 为 4,830 小时,MPT 为 7,920 小时。 这显示了我们优化的有效性以及在大规模模型训练中节省大量时间和资源的潜力。

2.4 Training

我们基于 lit-gpt.3 构建框架。遵循 Llama 2(Touvron 等人,2023b),我们在预训练阶段采用自回归语言建模目标。 与 Llama 2 的设置一致,我们利用 AdamW 优化器(Loshchilov 和 Hutter,2019),将 β1 设置为 0.9,β2 为 0.95。 此外,我们使用余弦学习率计划,最大学习率为 4.0 × 10−4,最小学习率为 4.0 × 10−5。 我们使用 2,000 个预热步骤来促进优化学习。4 我们将批量大小设置为 2M 令牌。 我们将权重衰减指定为0.1,并使用梯度裁剪阈值1.0来调节梯度值。 我们在项目中使用 16 个 A100-40G GPU 预训练 TinyLlama。

图 1:我们的代码库与 Pythia 和 MPT 的训练速度比较。 

【Results】

        我们在广泛的常识推理和问题解决任务上评估 TinyLlama,并将其与具有相似模型参数的几种现有开源语言模型进行比较。 

        基线模型 我们主要关注具有纯解码器架构的语言模型,包含大约 10 亿个参数。 具体来说,我们将 TinyLlama 与 OPT-1.3B (Zhang et al., 2022)、Pythia-1.0B 和 Pythia-1.4B (Biderman et al., 2023) 进行比较。

        常识推理任务为了了解 TinyLlama 的常识推理能力,我们考虑以下任务:Hellaswag (Zellers et al., 2019)、OpenBookQA (Mihaylov et al., 2018)、WinoGrande (Sakaguchi et al., 2021)、ARC- Easy 和 ARC-Challenge(Clark 等人,2018)、BoolQ(Clark 等人,2019)和 PIQA(Bisk 等人,2020)。 我们采用语言模型评估框架(Gao et al., 2023)来评估模型。 按照之前的实践(Biderman 等人,2023),模型在这些任务的零样本设置中进行评估。 结果如表 2 所示。我们注意到,TinyLlama 在许多任务上都优于基线,并获得了最高的平均分数。

表 2:常识推理任务的零样本性能。 

训练期间性能的演变 我们在预训练期间跟踪了 TinyLlama 在常识推理基准上的准确性,如图 2 所示。一般来说, TinyLlama 随着计算资源的增加而改进,在大多数基准测试中超过了 Pythia-1.4B 的准确性。

 图 2:预训练期间常识推理基准的性能演变。 Pythia-1.4B的性能也包含在图中进行比较。

问题解决评估我们还使用 InstructEval 基准评估 TinyLlama 的问题解决能力(Chia 等人,2023)。 该基准包括以下任务:

• 大规模多任务语言理解(MMLU)(Hendrycks 等人,2021):该任务用于衡量模型跨各个学科的世界知识和解决问题的能力。 我们在 5 次拍摄设置中评估模型。

• BIG-Bench Hard (BBH)(Suzgun 等人,2023):这是 BIG-Bench 基准(Srivastava 等人,2022)中 23 项挑战性任务的子集,旨在衡量语言模型遵循复杂指令的能力 。 这些模型在 3 次设置中进行评估。

• 段落离散推理 (DROP)(Dua 等人,2019):此阅读理解任务衡量模型的数学推理能力。 我们在 3-shot 设置中评估模型。

• HumanEval(Zheng et al., 2023):该任务用于衡量模型的编程能力。 这些模型在零样本设置中进行评估。 

评估结果如表 3 所示。我们观察到,与现有模型相比,TinyLlama 表现出了更好的问题解决能力。

表 3:InstructEval 基准测试中问题解决任务的表现。 

【Conclusion】

        在本文中,我们介绍了 TinyLlama,一种开源的小型语言模型。 为了提高开源LLM预训练社区的透明度,我们发布了所有相关信息,包括我们的预训练代码、所有中间模型检查点以及数据处理步骤的详细信息。 凭借其紧凑的架构和良好的性能,TinyLlama 可以在移动设备上启用最终用户应用程序,并作为一个轻量级平台来测试与语言模型相关的各种创新想法。 我们将利用该项目开放、上线阶段积累的丰富经验,旨在开发TinyLlama的改进版本,为其配备多种功能,以增强其在各种任务中的性能和多功能性。 我们将在即将发布的报告中记录进一步的发现和详细结果。

【Acknowledgements】

们对开源社区在我们研究的开放、实时阶段给予的大力支持表示感谢。 特别感谢Qian Liu、Longxu Dou、Hai Leong Chieu 和Larry Law 对我们项目的帮助。 本研究/项目得到新加坡教育部学术研究基金 (AcRF) Tier 2 计划(MOE AcRF Tier 2 奖项编号:MOE-T2EP20122-0011)、新加坡教育部 Tier 3 的支持 计划(奖项编号:MOET320200004)、新加坡国家研究基金会和 DSO 国家实验室的 AI 新加坡计划(AISG 奖项编号:AISG2-RP-2020-016)、AI 新加坡博士奖学金(AISG 奖项编号:AISG2- Doctor-2021-08-007)、SUTD 启动项目 (SKI 2021_03_11) 以及拨款 RS-INSUR-00027-E0901-S00。 本材料中表达的任何意见、调查结果和结论或建议均为作者的观点,并不反映资助机构的观点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1596649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义Centos的终端的命令提示符

背景 当我们使用终端登陆Centos时,就自动打开了ssh终端。这个终端的命令提示符一般是这样的: 这个以#号结束的一行字,就是我们说的命令提示符了。 这个是腾讯云的服务器的提示符,可以看到主机名是VM-4-7-centos。 但是这个看起…

Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域…

SD-WAN提升企业网络体验

在现代企业中,网络体验已成为提升工作效率与业务质量的关键因素。SD-WAN技术的出现,以其独特的优势,为企业提供了优化网络连接、加速数据传输、提升服务质量和应用访问体验,以及增强网络稳定性的解决方案。接下来,我们…

设计模式在芯片验证中的应用——策略

1. 策略模式 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 在RTL设计中可能包含了复杂的多个访问仲裁逻辑,使用了多种算法来确定访问内存优先级顺序&am…

plc远程监控系统

随着工业4.0时代的到来,智能制造成为了工业发展的核心驱动力。在这个信息化、网络化的新时代,PLC远程监控系统以其强大的监控与管理能力,正逐渐成为工业自动化领域的明星产品。今天,我们就来聊聊PLC远程监控系统以及HiWoo Cloud平…

网络协议——OSPF(开放式最短路径优先)详解

1.什么是OSPF 开放式最短路径优先OSPF 是一种动态的高度可靠和高度可扩展的路由协议,用于构建大型网络中的动态路由系统 2. OSPF的协议号为:89 3. OSPF的特点: OSPF是链路状态协议使用了区域概念:减少路由选择协议对路由器CPU,…

从零开始学习Linux(1)---基本命令(1)

1.学习准备 我学习Linux是使用xshell远程登录自己的云服务器来进行。 xshell是一个远程终端管理软件,下载官网: https://www.netsarang.com/products/xsh_overview.htm 下载安装的时候选择 "home/school"…

H.265网页无插件播放EasyPlayer.js流媒体播放器常见问题及解答

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。 今天我们来汇总下用户常见的几个问题及解答。 1、EasyPlayer.js播放多路H.265视…

「每日跟读」英语常用句型公式 第12篇

「每日跟读」英语常用句型公式 第12篇 1. I’m having a hard time __ing 我现在不太能__(遇到困难) I’m having a hard time concentrating on my work.(我现在不太能集中注意力在我的工作上) I’m having a hard time slee…

UE5 把蓝图内的变量和事件暴露给序列使用

在蓝图变量内勾选Expose to Cinematics 事件: 在角色内添加自定义事件 在序列内对着角色的号添加Event,选择Trigger 添加关键帧,然后在关键帧右键添加class,在class下绑定事件

抖音小店新手玩家能做吗?跟着我的步骤做,爆单很简单

大家好,我是电商笨笨熊 抖店新手玩家能做吗? 当然可以。 抖音小店自推出以来已经吸引了无数的新手玩家,且不少玩家从个人走到了团队化。 新手做抖店,最重要的是掌握方法,只要方法对了,方向对了&#xf…

工业物联网网关

在数字化浪潮席卷全球的今天,工业物联网(IIoT)作为连接物理世界与数字世界的桥梁,正在逐渐改变传统工业的面貌。而作为IIoT的核心枢纽,工业物联网网关发挥着至关重要的作用。今天,我们就来深入了解一下工业…

leetcode代码记录(回文数

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序&#x…

web笔记再整理

前四天笔记在此连接: web前端笔记表单练习题五彩导航栏练习题-CSDN博客https://blog.csdn.net/simply_happy/article/details/136917265?spm1001.2014.3001.5502 # 1.边框弧度​ div {​ width: 300px;​ height: 50px;​ background-color: aqua;​ …

JAVAEE——网络初始

文章目录 网络发展史独立模式网络模式局域网LAN路由器的诞生 网络通信的基础IP地址端口号 认识协议OSI七层模型TCP/IP五层模型 网络发展史 独立模式 在原始的年代中电脑间想要通信需要两台电脑连接一根网线,但是一台电脑基本上只有一个接口。因此想要链接更多的电…

RISCV指令集体系简读之RV32I

RV32I 指令格式 用于寄存器-寄存器操作的R类型指令用于短立即数和访存load操作的I型指令用于访存store操作的s型指令用于条件跳转操作的B类型指令用于长立即数的U型指令用于无条件跳转的J型指令 特点: 所有指令都是32bits, 简化了指令解码;…

SuperMap GIS基础产品FAQ集锦(20240415)

一、SuperMap iDesktopX 问题1:请教一下,同一份数据,用idesktop11.0.1、idesktopX11.1.1和idesktopX11.1.1的临时包,做同一分析,得到的结果数据集都不一样,有的是57条,有的是86条,有…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

【C++语言】初步认识面向对象编程类和对象(上)

文章目录 前言一.初步认识面向过程和面向对象编程1.面向过程编程初步认识2.面向对象编程初步认识 二.C类1. 类的引入:2. 类的定义3.类的访问限定符&&封装3.1 访问限定符3.2 封装 4.类的实例化5.如何计算类的大小 总结C语言系列学习目录 前言 面向对象编程 类…

深度探索:Secure Hash Algorithm(SHA)全景解析

title: 深度探索:Secure Hash Algorithm(SHA)全景解析 date: 2024/4/15 18:33:17 updated: 2024/4/15 18:33:17 tags: SHA安全抗碰撞性算法版本实现细节性能优化发展历史应用案例 密码学中的哈希函数 一、哈希函数的定义 哈希函数是一种数…