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

【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.rhkb.cn/news/310064.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【攻防世界】Confusion1

php的标志是大象,Python的标志是蛇 。Python 的 Flask 框架( Flask 使用 Jinja2 作为模板引擎 ) 点进register.php 输入{{3*4}} 输入 {{config}} 也有回显,ssti 判断是否存在ssti注入: 1. {{8*8}} 2. {{config}} 过滤了关键字&#xff0…

动态规划|63.不同路径II

力扣题目链接 class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m obstacleGrid.size();int n obstacleGrid[0].size();if (obstacleGrid[m - 1][n -1] 1 || obstacleGrid[0][0] 1) return 0;vector<ve…

Pygame经典游戏:贪吃蛇

------------★Pygame系列教程★------------ Pygame经典游戏&#xff1a;贪吃蛇 Pygame教程01&#xff1a;初识pygame游戏模块 Pygame教程02&#xff1a;图片的加载缩放旋转显示操作 Pygame教程03&#xff1a;文本显示字体加载transform方法 Pygame教程04&#xff1a;dra…

CameraCtrl、EDTalk、Sketch3D、Diffusion^2、FashionEngine

本文首发于公众号&#xff1a;机器感知 CameraCtrl、EDTalk、Sketch3D、Diffusion^2、FashionEngine NVINS: Robust Visual Inertial Navigation Fused with NeRF-augmented Camera Pose Regressor and Uncertainty Quantification In recent years, Neural Radiance Fields …

【电控笔记0】稳定度判断

简要概括 现控:远离虚轴,稳定度越高 自控:相位裕度PM 增益裕度GM 开环传函 不稳定条件判断

15 - Debian如何配置共享服务Samba

作者&#xff1a;网络傅老师 特别提示&#xff1a;未经作者允许&#xff0c;不得转载任何内容。违者必究&#xff01; Debian如何配置共享服务Samba 《傅老师Debian小知识库系列之15》——原创 前言 傅老师Debian小知识库特点&#xff1a; 1、最小化拆解Debian实用技能&…

Groovy程序设计-【第一部分Groovy起步】-01-起步

前言&#xff1a; 知识点记录来源于【Groovy程序设计】一书中&#xff0c;本文仅作知识点记录供日后使用查询&#xff0c;不做教程使用。 1.安装Groovy 安装非常简单&#xff0c;百度一下很多教程&#xff0c;安装过JDK的都懂。 查看安装的groovy的版本&#xff1a; groov…

总结SQL相对常用的几个字符函数

目录 字符的截取 substr() trim()、ltrim()、rtrim() 字符串的拼接 ||、 字符的大小写转换 upper(column_name):大写 lower(column_name):小写 字符替换 replace() 搜索字符 instr(column_name, substring_to_find,start,n_appearence) charindex(substring_to_fi…

自然语言处理、大语言模型相关名词整理

自然语言处理相关名词整理 零样本学习&#xff08;zero-shot learning&#xff09;词嵌入&#xff08;Embedding&#xff09;为什么 Embedding 搜索比基于词频搜索效果好&#xff1f; Word2VecTransformer检索增强生成&#xff08;RAG&#xff09;幻觉采样温度Top-kTop-p奖励模…

通过WebShell登录SQL Server主机并使用SSRS报表服务

背景信息 RDS SQL Server提供了WebShell功能&#xff0c;允许用户通过Web界面登录到RDS SQL Server实例的操作系统中&#xff0c;并在该操作系统中执行命令、上传下载文件等操作。WebShell功能方便用户对RDS SQL Server实例的管理和维护&#xff0c;特别是在无法使用SSH客户端的…

Win10系统下的EDGE浏览器启用IE模式

Win10系统下的EDGE浏览器目前已弃用IE内核&#xff0c;这样在访问某些较老的网站会有兼容性问题&#xff0c;本文记录了在EDGE浏览器中启用IE模式的操作方法。 一、启用EDGE浏览器的IE模式 要打开Internet Explorer模式&#xff0c;执行以下步骤: 1、在Microsoft Edge的地址栏…

物联网SaaS平台

在信息化、智能化浪潮席卷全球的今天&#xff0c;物联网SaaS平台作为推动工业数字化转型的重要工具&#xff0c;正日益受到广泛关注。那么&#xff0c;物联网SaaS平台究竟是什么&#xff1f;HiWoo Cloud作为物联网SaaS平台又有哪些独特优势&#xff1f;更重要的是&#xff0c;它…

基于 StarRocks 的风控实时特征探索和实践

编者荐语&#xff1a; 金融风控特征在实时业务中至关重要&#xff0c;是评估和管理风险的核心指标。经过评估&#xff0c;滴滴最终选择了 StarRocks 作为验证选项的落地方案。通过 StarRocks 实现流批一体&#xff0c;成功解决了风控实时特征流批分离的难题&#xff0c;缩短了开…

Java虚拟机——内存的分配详解

内存区域划分 对于大多数的程序员来说&#xff0c;Java 内存比较流行的说法便是堆和栈&#xff0c;这其实是非常粗略的一种划分&#xff0c;这种划分的“堆”对应内存模型的 Java 堆&#xff0c;“栈”是指虚拟机栈&#xff0c;然而 Java 内存模型远比这更复杂&#xff0c;想深…

Xxl-job执行器自动注册不上的问题

今天新建的项目要部署xxl-job&#xff0c;之前部署过好多次&#xff0c;最近没怎么部署&#xff0c;生疏了。部署完之后&#xff0c;服务一直没有注册到执行器管理里面&#xff0c;找了半天也没找到原因&#xff0c;看数据库里的xxl_job_registry表也是一直有数据进来。 后来看…

鸿蒙 Failed :entry:default@CompileResource...

Failed :entry:defaultCompileResource... media 文件夹下有文件夹或者图片名称包含中文字符 rawfile 文件夹下文件名称、图片名称不能包含中文字符

GIS 数据格式转换

1、在线工具 mapshaper 2、数据上传 3、数据格式转换 导入数据可导出为多种格式&#xff1a;Shapefile、Json、GeoJson、CSV、TopJSON、KML、SVG

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分&#xff1a;10 分 【问题描述】 一个整数如果按从低位到高位的顺序&#xff0c;奇数位&#xff08;个位、百位、万位 &#xff09;上 的数字是奇数&#xff0c;偶数位&#xff08;十位、千位、十万位 &…

海外KOL推广:情感链接策略助力品牌口碑与忠诚度提升

在当今全球化的市场环境下&#xff0c;品牌在海外市场的推广已经成为提升竞争力和拓展业务的关键。与此同时&#xff0c;海外KOL的影响力也日益凸显&#xff0c;他们不仅仅是产品的推荐者&#xff0c;更是品牌与目标市场受众之间建立情感链接的关键角色。本文Nox聚星将和大家探…

使用阿里云试用Elasticsearch学习:Search Labs Tutorials 搭建一个flask搜索应用

文档&#xff1a;https://www.elastic.co/search-labs/tutorials/search-tutorial https://github.com/elastic/elasticsearch-labs/tree/main/example-apps/search-tutorial Full-Text Search