Tele-FLM:开源多语言大型语言模型技术报告

news2024/12/22 13:25:12

随着模型规模的不断扩大,如何高效地训练并优化这些拥有超过500亿参数的庞大模型,同时降低试错成本和计算资源消耗,成为了一个亟待解决的问题。北京智源人工智能研究院、中国电信的研究团队及其合作者提出Tele-FLM模型:一个52亿参数的开源多语言大型语言模型,它不仅在技术上实现了这一规模模型的稳定和高效预训练,还在事实判断能力上进行了增强。更重要的是,Tele-FLM展示了在多语言环境下的卓越性能,为解决上述问题提供了一种创新的解决方案。

预训练数据

Tele-FLM的预训练数据集由多个子集组成,包括Web文本、代码、书籍、世界知识、问答、学术论文和专业领域等。为了处理这些数据,研究团队构建了一个基于Spark集群的自定义数据处理流水线。该流水线包括从HTML/WARC中提取文本、基于启发式规则的清洗和段落级去重、基于模型的文本质量过滤以及使用MinHash算法进行文档级去重等步骤。

在预训练数据中,不同语言和领域数据的采样比例是根据其质量和重要性进行调整的。例如,Web文本(WebText)和代码(Code)数据占据了较大的比例,以反映它们在现实世界数据中的丰富性和多样性。表1详细列出了各个子集的语言、采样比例、在训练中完成的轮次以及磁盘大小。

预训练数据的各个子集,包括它们的语言、采样比例、在训练中完成的epoch数量,以及磁盘大小

为了保证预训练数据的质量,Tele-FLM团队采取了多种措施来过滤低质量内容和进行去重。例如,对于Web文本数据,使用了FastText分类器来辅助过滤;对于书籍数据,则开发了一系列清理步骤来移除冗余格式、乱码文本、公式错误和重复段落。

Tele-FLM模型的一个显著特点是其多语言能力。为了增强模型对不同语言的理解,研究团队整合了多种语言的数据集,包括英语、中文和其他22种语言的维基百科数据。这些数据经过专门的多语言清洗功能处理,以去除与主文本不相关的参考内容和后续内容。

除了通用数据外,Tele-FLM还特别关注了某些专业领域的数据收集,如医学、法律、专利和数学。这些特定领域的数据有助于模型在这些领域的应用中表现出更好的性能。

预训练

Tele-FLM模型的架构基于FLM-101B,但进行了针对性的改进以适应更大规模的参数和更高效的训练。模型采用了标准的GPT风格的解码器仅Transformer架构,并引入了RMSNorm作为归一化方法,SwiGLU作为激活函数。此外,Tele-FLM放弃了Extrapolatable Position Embedding (xPos),转而使用Rotary Positional Embedding (RoPE),进一步优化了模型的表示能力。

Tele-FLM和Tele-FLMµP(一个较小版本的Tele-FLM)的模型架构配置,包括层数、注意力头数、隐藏层大小等

Tele-FLM的分词器是专门为其预训练数据分布而训练的,采用了Byte-level BPE (BBPE) 算法。为了在中文文本压缩比上达到更好的性能,同时保持在多语言环境下的效率,Tele-FLM的分词器在设计上做了特别的考量。通过从预训练数据集中采样1200万个多样化的文本样本进行训练,Tele-FLM的分词器在中英文以及古典中文、代码和数学内容上都展现出了优秀的压缩性能。

Tele-FLM、GPT-4和Llama系列在不同领域上的分词器压缩比

Tele-FLM的训练是在112个A800 SXM4 GPU服务器上进行的,这些服务器每个都配备了8个NVLink A800 GPU和2TB的RAM。这些节点通过InfiniBand网络互联,确保了高效的数据传输和模型训练。

为了充分利用硬件资源并提高训练效率,Tele-FLM采用了3D并行训练方法,结合了数据并行、张量并行和流水线并行。这种综合方法通过优先将通信开销大的张量并行组分配到同一节点上,最大化了节点内通信并最小化了节点间通信。

超参数的调整对于模型训练至关重要。Tele-FLM采用了基于µP的方法进行超参数搜索,这种方法基于Tensor Programs理论,揭示了在模型宽度接近无穷大时训练动态中的普遍关系。通过使用较小的模型Tele-FLMµP进行网格搜索,研究团队能够更有效地预测最终大型模型的行为,并找到最优的超参数配置。

基于µP(微超参数)的超参数搜索实验曲线
Tele-FLM训练中搜索到的超参数和未搜索的超参数的配置

损失动态与BPB评估

在预训练过程中,损失函数的动态变化对于评估模型训练的稳定性和有效性至关重要。Tele-FLM模型的损失动态表现出了良好的稳定性和收敛性。

Tele-FLM在预训练数据量(以十亿个token计)上的损失动态,包括训练损失、验证损失和训练梯度范数曲线

Tele-FLM模型在训练过程中展示了单一稳定运行的损失曲线,没有出现发散现象。这一结果归功于精心设计的超参数搜索策略,确保了模型训练的顺利进行。通过监控训练和验证损失以及梯度范数的变化,研究团队能够及时发现并解决潜在的训练问题。

BPB(Bits-Per-Byte)是一种评估语言模型压缩能力的指标,它考虑了每个token的损失以及领域和分词器的影响。Tele-FLM在多个英文和中文数据集上进行了BPB评估,结果显示其在不同领域的压缩性能均优于或至少可与现有的大型模型相媲美。特别是在英文数据集上,Tele-FLM在WebText、Github和StackExchange等数据集上超越了Llama系列模型,证明了其在英文基础能力上的强大表现。在中文数据集上,Tele-FLM同样展现出了较低的BPB,证明了其在中英文上的均衡性能。

Tele-FLM在不同领域(包括英语、中文、多语言和代码验证数据集)上的BPB(每字节的比特数)趋势,并与Llama系列模型进行了比较
Tele-FLM、Llama系列模型以及Qwen1.5-72B在不同英语数据集上的BPB值,并根据权重求和给出了结果
在不同中文数据集上的BPB值,并提供了直接平均和加权和的结果

基准评估

在英文基准评估中,Tele-FLM参与了多个公共且广泛使用的评估平台和测试,包括Open LLM Leaderboard、HumanEval和BIG-Bench Hard。这些评估覆盖了常识推理、知识容量、真实性判断和数学问题解决等多个方面。

Open LLM Leaderboard:这是一个由Huggingface托管的平台,它包括了多种任务,用于衡量模型在不同领域的表现。Tele-FLM在这些任务上的表现与Llama系列模型相当,显示出其在多任务学习上的均衡能力。

HumanEval:这个评估专注于代码生成能力,通过测量模型输出与文档字符串提示的功能正确性来评估。Tele-FLM在这项评估中的表现突出了其在代码生成任务上的潜力。

BIG-Bench Hard:这个评估包含了23个挑战性任务,代表了当前语言模型尚未超越平均人类表现的领域。Tele-FLM在这些任务上的表现提供了对其高级推理能力的洞察。

Tele-FLM 与一些基线模型(baselines)在英语基准测试上的性能对比

为了衡量Tele-FLM在中文语言和知识理解方面的能力,研究团队使用了OpenCompass工具包进行评估。Tele-FLM在以下中文任务上进行了测试:

C-Eval:这是一个多学科的中文评估套件,用于衡量模型在多个领域的中文理解能力。

CMMLU:这个评估专注于多学科知识的中文理解,Tele-FLM在这项评估中的表现显示了其在中文多学科知识掌握上的深度。

C3:阅读理解任务,Tele-FLM在这项任务上的表现证明了其在处理中文文本和理解其含义方面的能力。

CHID:中文文化和语言理解评估,Tele-FLM在这项评估中的表现尤为突出,显示了其对中文文化特定概念的理解。

CSL:关键词识别任务,Tele-FLM在这项任务上的表现显示了其在科学领域中文文献处理上的能力。

Tele-FLM 在中文基准测试上的性能
训练过程中,使用语言模型评估工具自动跟踪的8个评估基准的分数变化

通过这些基准评估,Tele-FLM证明了自己作为一个多语言基础模型,在中英文任务上都能达到与更大模型相近或更高的水平。

经验教训

在预训练数据的选择上,数据的质量和数量对于模型性能至关重要。特别是在需要在质量和数量之间做出权衡时,数据质量应被视为优先考虑的因素。在Tele-FLM项目中,发现英文和中文数据的比例为2:1时效果更佳,这可能是因为中文网络数据的平均质量相对较低。

关于超参数搜索,团队发现基于µP的方法在寻找最佳超参数和预测最终大型模型行为方面非常有效。初始化标准差和输出乘数对模型性能的影响比通常认为的要大。

在损失动态方面,损失曲线的斜率在训练了大约500亿个tokens后通常会趋于平缓。所以如果早期损失值不满意,应立即重新启动训练。随机损失的尖峰是常见且可接受的,只要梯度范数曲线看起来正常。

关于梯度范数,早期的梯度范数曲线并不是训练稳定性的强指标。在超参数搜索中,即使梯度曲线模式不同,也可能出现发散,但持续增加的梯度趋势与更高的发散概率相关。

论文链接:https://arxiv.org/abs/2404.16645

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

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

相关文章

刷代码随想录有感(123):动态规划——最长连续递增子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:int findLengthOfLCIS(vector<int>& nums) {if(nums.size() < 1)return nums.size();vector<int>dp(nums.size(), 1);int res 0;for(int i 1; i < nums.size(); i){if(nums[i] > nums[…

C# Web控件与数据感应之属性统一设置

目录 关于属性统一设置 准备数据源 范例运行环境 AttributeInducingFieldName 方法 设计与实现 如何根据 ID 查找控件 FindControlEx 方法 调用示例 小结 关于属性统一设置 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&…

NoSQL之Redis优化

目录 一、Redis 高可用 二、Redis 持久化 1.RDB 持久化 1&#xff09;触发条件 2&#xff09; 执行流程 3&#xff09;启动时加载 2.AOF 持久化 1&#xff09;开启AOF 2&#xff09;执行流程 3&#xff09;启动时加载 3.RDB和AOF的优缺点 三、Redis 性能管理 1.查…

11.优化算法之栈

1.删除字符串中的所有相邻重复项 可以用数组模拟栈结构 class Solution {public String removeDuplicates(String s) {if(s.length()<1){return s;}StringBuffer retnew StringBuffer();for(int i0;i<s.length();i){if(ret.length()<1){ret.append(s.charAt(i));}els…

Django + Vue 实现图片上传功能的全流程配置与详细操作指南

文章目录 前言图片上传步骤1. urls 配置2. settings 配置3. models 配置4. 安装Pillow 前言 在现代Web应用中&#xff0c;图片上传是一个常见且重要的功能。Django作为强大的Python Web框架&#xff0c;结合Vue.js这样的现代前端框架&#xff0c;能够高效地实现这一功能。本文将…

校园兼职小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;商家管理&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;兼职管理&#xff0c;论坛管理&#xff0c;公告管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告&#xff0c;兼职&…

应急响应:应急响应流程,常见应急事件及处置思路

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

单片机软件架构连载(2)-指针

我工作了10年&#xff0c;大大小小做过几十个项目&#xff0c;用指针解决过很多实际产品的痛点&#xff0c;比如写过小系统&#xff0c;数据结构(队列&#xff0c;链表)&#xff0c;模块化编程等等..... 今天贴近实际&#xff0c;给大家总结了c语言指针常用的知识点&#xff0c…

C++封装

1. 封装 1.1. struct 当单一变量无法完成描述需求的时候&#xff0c;结构体类型解决了这一问题。可以将多个类型打包成一体&#xff0c;形成新的类型&#xff0c;这是c语言中的封装 但是&#xff0c;新类型并不包含&#xff0c;对数据类的操作。所有操作都是通过函数的方式进…

python-糖果俱乐部(赛氪OJ)

[题目描述] 为了庆祝“华为杯”的举办&#xff0c;校园中开展了许多有趣的热身小活动。小理听到这个消息非常激动&#xff0c;他赶忙去参加了糖果俱乐部的活动。 该活动的规则是这样的&#xff1a;摊位上有 n 堆糖果&#xff0c;第 i 堆糖果有 ai​ 个&#xff0c;参与的同学可…

从入门到深入,Docker新手学习教程

编译整理&#xff5c;TesterHome社区 作者&#xff5c;Ishaan Gupta 以下为作者观点&#xff1a; Docker 彻底改变了我们开发、交付和运行应用程序的方式。它使开发人员能够将应用程序打包到容器中 - 标准化的可执行组件&#xff0c;将应用程序源代码与在任何环境中运行该代码…

YOLOv10改进教程|C2f-CIB加入注意力机制

一、 导读 论文链接&#xff1a;https://arxiv.org/abs/2311.11587 代码链接&#xff1a;GitHub - CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程 二、 C2f-CIB加入注意力机制 2.1 复制代码 打开ultralytics->nn->modules->block.py文件&#xff0c;复制SE注意力机…

快排的实现

引言 作为c语言库函数的一种&#xff0c;快排在排序中的地位毋庸置疑. 而更加具体的实现如图&#xff1a; 快排的实现&#xff08;递归实现&#xff09; 原理 单趟:先假定第一个数设为key,如果左边指针的值比key大&#xff0c;且右边指针的值比key小&#xff0c;则将其交换.…

无线领夹麦克风有什么用,揭秘唱歌不费力的无线麦克风

随着自媒体行业的快速扩张&#xff0c;人们对音频录制设备的要求日益增长&#xff0c;麦克风作为核心设备之一&#xff0c;其重要性不言而喻。技术的演进使得麦克风从简单的无线小蜜蜂发展到多功能的数字领夹麦克风&#xff0c;满足了多样化的录制需求。然而&#xff0c;一个视…

昇思MindSpore学习总结八——模型保存与加载

在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;接下来将介绍如何保存与加载模型。 1.构建模型 import numpy as np import mindspore from mindspore impo…

别再被大模型骗了,一个小技巧,让LLaMa3诚信度提升65%

人工智能正以惊人的速度发展&#xff0c;大语言模型(LLM)作为其中的"明星"&#xff0c;展现了令人赞叹的语言理解和生成能力。然而&#xff0c;在享受大语言模型带来便利的同时&#xff0c;我们也必须正视其在诚实性和安全性方面所面临的挑战。 近期&#xff0c;华中…

CSF视频文件格式转换WMV格式(2024年可用)

如果大家看过一些高校教学讲解视频的话&#xff0c;很可能见过这样一个难得的格式&#xff0c;".csf "&#xff0c;非常漂亮 。 用暴风影音都可以打开观看&#xff0c;会自动下载解码。 但是一旦我们想要利用或者上传视频的时候就麻烦了&#xff0c;一般网站不认这…

3个企业级最佳实践,教你ByteHouse云数仓这么用

随着各业务场景各行业数字化转型加快&#xff0c;数据量呈爆炸式增长。在拥有庞大数据的同时&#xff0c;业务也在分析、查询与响应层面&#xff0c;对数据库系统性能提出了更高要求。云原生技术推动了分布式数据库系统的迭代升级&#xff0c;对云数仓技术而言&#xff0c;“写…

MacBook关闭谷歌浏览器双指左右移动(扫动)前进后退功能

这个功能真的很反人类&#xff0c;正常上下滑动页面的时候很容易误操作&#xff0c;尤其是当你在一个页面上做了很多的编辑工作后误触发了此手势&#xff0c;那真叫一个崩溃&#xff01; 其实这应该是 Macbook 触控板提供的一个快捷操作&#xff0c;跟浏览器本身估计没关系&am…

mysql-sql-第十三周

学习目标&#xff1a; sql 学习内容&#xff1a; 37.查询各科成绩最高分、最低分和平均分&#xff1a; 以如下形式显示&#xff1a;课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>60,中等为&#xff1a;70-80,优良为&#xff1a;80-90,优秀…