论文阅读_tinyllama_轻量级大模型

英文名称: 'TinyLlama: An Open-Source Small Language Model'
中文名称: 'TinyLlama: 一个开源的小型语言模型
链接: http://arxiv.org/abs/2401.02385v1
代码: https://github.com/jzhang38/TinyLlama
作者: Peiyuan Zhang, Guangtao Zeng, Tianduo Wang, Wei Lu机构: 新加坡科技与设计大学日期: 2024-01-04

1 读后感

文中介绍了 TinyLlama 一种开源的轻量级大语言模型。作者发布了所有相关信息,包括的预训练代码、所有中间模型检查点以及数据处理步骤的细节。TinyLlama 可以在移动设备上支持最终用户应用程序,并作为测试语言模型的轻量级平台。

TinyLlama 相对于 Llama2,在架构和算法上都没有太多改进,但有一些微调,旨在测试用更多 token,更小模型的训练结果,以及提交训练效率的方法。

论文正文 5 页左右。

2 摘要:

目标:TinyLlama 是在约 1T tokens 上进行了约 3 轮 (epochs) 的预训练的,大小为 1.1B 的紧凑型语言模型。

方法:基于 Llama 2 的架构和分词器,它利用了开源社区的各种新技术,实现了更好的计算效率。

结论:在一系列下游任务中,明显优于具有相似尺寸的现有开源语言模型。

3 引言

自然语言处理的最新进展在很大程度上是通过扩大语言模型规模来推动的。一些实证研究表明,要训练最优模型,模型的大小和训练数据量应以相同的速度增加。

也有实验证明,当使用更多数据训练时,较小模型训练较长时间的情况下,较小的模型可以匹配甚至优于较大的模型。

文中工作的重点是探索使用非常大量的数据训练具有参数量较小的模型,且开源了 TinyLlama。

4 预训练

4.1 预训练数据

采用自然语言数据和代码数据混合预训练 TinyLlama,从 SlimPajama 获取自然语言数据(1.2 T tokens),从 Starcoderdata 获取代码数据(86 种编程语言,约 250 B token)。采用 Llama 的分词器来处理数据。

将两个语料库结合起来后,总共有大约 950B Token 用于预训练。训练 3 轮 (epochs)。在训练过程中,以自然语言数据和代码数据之间大约 7:3 的比例采样。

4.2 架构

采用与 Llama 2 类似的模型架构

位置嵌入使用 RoPE 旋转位置嵌入;归一化使用 RMSNorm 提高训练效率;激活函数使用 SwiGLU;注意力使用 Grouped-query Attention 分组查询,以减少内存带宽开销并加快推理速度,它可在多个头之间共享键和值表示,而不牺牲太多性能。

4.3 速度优化

完全分片数据并行(FSDP)

在训练期间,集成了 FSDP,以有效地利用多 GPU 和多节点设置,显著提高了训练效率。

Flash Attention

集成了 Flash Attention 2 优化的注意力机制,以提高计算吞吐量。

xFormers

用原始的 SwiGLU 模块替换了 xFormers 中的融合 SwiGLU 模块。以减少内存占用,使 1.1B 模型能在 40GB 的 GPU RAM 训练。

图 1:训练速度比较。

性能分析及与其他型号的比较

将训练吞吐量提高到每个 A100-40G GPU 每秒 24,000 token。与其他模型相比,如图所示,TinyLlama-1.1B 模型只需要 3,456 个 A100 GPU 小时即可训练 300B token,在训练中节省大量时间和资源。

4.4 训练

基于 lit-gpt 构建框架,在预训练阶段采用了自回归语言建模目标,与 Llama 2 的设置一致。文中使用 16 个 A100-40G GPU 预训练了 TinyLlama。

5 结果

在广泛常识推理和解决问题的任务上评估了 TinyLlama,将其与大小相似的模型进行比较。

5.1 常识推理评测

图 2 展示了训练过程中性能的变化:

图 2:预训练期间常识推理基准的性能演变,与 Pythia-1.4B 性能比较。

5.2 解决问题评测

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

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

相关文章

【C++】list容器迭代器的模拟实现

list容器内部基本都是链表形式实现,这里的迭代器实现的逻辑需要注意C语言中指针的转换。 list容器如同数据结构中的队列,通常用链式结构进行存储。在这个容器中,我们可以模仿系统的逻辑,在头结点后设置一个“ 哨兵 ”,…

14.2搭建ASP运行环境

14.2搭建ASP运行环境 可以使用WinXP来搭建ASP的运行环境,不过,WinXP不适宜作为商业用Web服务器。目前比较常用的Web服务器操作系统是Windows2003 Server,在Windows2003 Server上安装完IIS6.0并进行相关设置后,即完成了ASP运行环境…

【lettuce-排行榜】

背景&#xff1a; 这次游戏中台采用lettuce的zset完成游戏内的本服和跨服排行榜&#xff0c;因此写一下案例。 pom.xml <dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId><version>6.2.4.RELEASE</ve…

【Redis】Redis基础

Redis基础 初识Redis 认识NoSQL SQL&#xff1a;结构化查询语言 > 关系型数据库 NoSQL&#xff1a;非关系型数据库 SQL与NoSQL的差异&#xff1a; 数据结构 SQL结构化&#xff1a;表的信息依赖于表的结构NoSQL非结构化&#xff1a;存储的信息为KV形式 数据关联 SQL关联…

Kubernetes实战(十八)-Pod亲和与反亲和调度

1 调度Pod的主要方式 Pod调度到指定Node的方式主要有4种&#xff1a; nodeName调度&#xff1a;直接在Pod的yaml编排文件中指定nodeName&#xff0c;调度到指定name的节点上。nodeSelector调度&#xff1a;直接在Pod的yaml编排文件中指定nodeSelector&#xff0c;调度到带有指…

Java和Redis实现一个简单的热搜功能

1. 前言 我们有一个简单的需求&#xff1a; 搜索栏展示当前登陆的个人用户的搜索历史记录&#xff0c;删除个人历史记录。用户在搜索栏输入某字符&#xff0c;则将该字符记录下来 以zset格式存储的redis中&#xff0c;记录该字符被搜索的个数以及当前的时间戳 &#xff08;用…

Qt5.12.0 与 VS2017 在 .pro文件转.vcxproj文件

一、参考资料 stackoverflow qt - How to generate .sln/.vcproj using qmake - Stack Overflowhttps://stackoverflow.com/questions/2339832/how-to-generate-sln-vcproj-using-qmake?answertabtrending#tab-topqt - 如何使用 qmake 生成 .sln/.vcproj - IT工具网 (coder.wo…

《WebKit 技术内幕》学习之七(2): 渲染基础

2 网页层次和RenderLayer树 2.1 层次和RenderLayer对象 前面章节介绍了网页的层次结构&#xff0c;也就是说网页是可以分层的&#xff0c;这有两点原因&#xff0c;一是为了方便网页开发者开发网页并设置网页的层次&#xff0c;二是为了WebKit处理上的便利&#xff0c;也就是…

数据库复试—关系数据库标准语言SQL

数据库复试—关系数据库标准语言SQL SQL&#xff1a;结构化查询语言 以教材中的学生-课程数据库为例进行SQL基础语法的复习 数据库实验环境选择SQLServer 11 关系模式 学生表Student(Sno,Sname,Ssex,Sage,Sdept) 课程表Course(Cno,Cname,Cpno,Ccredit) 学生选课表SC&#xf…

【Java】学习一门开发语言,从TA的Hello World开始

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

【Android12】Android Framework系列---Adb和PMS安装apk源码流程

Adb和PMS安装apk源码流程 adb install命令 通过adb install命令可以将apk安装到Android系统&#xff08;注意&#xff1a;特定类型的apk&#xff0c;比如persist类型是无法通过adb安装的&#xff09; 下述命令中adb解析install命令&#xff0c;并调用Android PackageManagerS…

eNSP学习——部分VLAN间互通、部分VLAN间隔离、VLAN内用户隔离(MUX-VLAN)

MUX VLAN&#xff08;Multiplex VLAN&#xff09;提供了一种通过VLAN进行网络资源控制 的机制。通过MUX VLAN提供的二层流量隔离的机制可以实现企业内部员 工之间互相通信&#xff0c;而企业外来访客之间的互访是隔离的。 特点&#xff1a; 一、主VLAN端口可以和所有VLAN通信 二…

基本控件(一)

目录 控件的定义&#xff1a;使用控件的好处&#xff1a; setupUiwidget.hwidget.cppmain.cpp 控件的定义&#xff1a; QT控件是在QT框架下实现的一组用户界面元素&#xff0c;包括按钮、标签、输入框、列表框、滚动条、菜单等等&#xff0c;它们用于快速构建各种应用程序的图…

【Linux】gcc与g++的认识

gcc与g是linux下的编译器&#xff0c; 我们都知道写好了源文件gcc一下就可以得到.exe文件 那么其中会经过几个过程呢&#xff1f;也就是源文件翻译过程&#xff0c; 预处理&#xff08;预编译&#xff09;编译汇编链接 本篇文章的侧重点是围绕链接进行理解C语言标准库 目录 …

Java项目:ssm框架基于spring+springmvc+mybatis框架的民宿预订管理系统设计与实现(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm827基于SSM框架的民宿预订管理系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调…

POI及EasyExcel学习笔记

POI及EasyExcel学习笔记 组件、工具 POI-Excel概述 Apache POI 结构&#xff1a; HSSF &#xff0d; 提供读写[Microsoft Excel](https://baike.baidu.com/item/Microsoft Excel)格式档案的功能。XSSF &#xff0d; 提供读写Microsoft Excel OOXML格式档案的功能。HWPF &am…

93. 复原 IP 地址 - 力扣(LeetCode)

题目描述 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011.255.245”、“…

matlab appdesigner系列-常用16-状态按钮

状态按钮&#xff0c;有两个状态&#xff0c;按下状态&#xff0c;返回值为1或true&#xff1b;未按下状态&#xff0c;返回值为0或false 示例&#xff1a;设置一状态按钮&#xff0c;用文本记录其状态 操作步骤&#xff1a; 1&#xff09;将状态按钮、文本区域拖拽到画布上…

LeetCode 热题 100 | 哈希

目录 1 基础知识 1.1 定义哈希表 1.2 遍历哈希表 1.3 查找某一个键 1.4 插入键值对 1.5 获取键值对的值 1.6 搜索功能 2 三道题 2.1 1. 两数之和 2.2 49. 字母异位词分组 2.3 128. 最长连续序列 菜鸟做题第一周&#xff0c;语言是 C 1 基础知识 1.1 定…

对网站进行打点(不要有主动扫描行为)

什么是打点&#xff1f; 简单来说就是获取一个演习方服务器的控制权限。 目的&#xff1a; 1. 上传一个一句话木马 2. 挖到命令执行 3. 挖到反序列化漏洞 4. 钓鱼 假设对“千峰”网站进行打点&#xff1a; 1. 利用平台 1. 利用各类平台&#xff1a; 天眼查-商业查询平…