书生·浦语大模型开源体系(一)论文精读笔记

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
请添加图片描述

文章目录

  • 🍋Abstract
  • 🍋论文相关内容
  • 🍋总结

🍋Abstract

像ChatGPT和GPT-4这样的大型语言模型(llm)的发展引发了关于人工通用智能(AGI)出现的讨论。然而,在开源模型中复制这样的进步是具有挑战性的。本文介绍了一个开源法学硕士InternLM2,它通过创新的预训练和优化技术,在6个维度和30个基准的综合评估、长上下文建模和开放式主观评估方面优于其前身。InternLM2的预训练过程非常详细,突出了各种数据类型的准备,包括文本、代码和长上下文数据。InternLM2有效地捕获长期依赖关系,最初训练4k代币,然后在预训练和微调阶段提升到32k代币,在200k“大海捞针”测试中表现出卓越的性能。InternLM2进一步使用监督微调(SFT)和一种新的基于人类反馈的条件在线强化学习(COOL RLHF)策略进行协调,该策略解决了人类偏好和奖励黑客行为之间的冲突。通过发布不同训练阶段和模型大小的InternLM2模型,我们为社区提供了对模型演变的见解。

🍋论文相关内容

论文原文过多,这里针对实验图例等进行简要说明

在这里插入图片描述
使用InternEvo训练InternLM-7B的模型FLOPs利用率(MFU)。我们使用具有不同GPU编号的4096个令牌的序列长度对训练性能进行基准测试,并在具有不同序列长度的128个GPU上对训练性能进行基准测试
注意:MFU最大训练利用率

在这里插入图片描述
当改变张量并行度(TP)大小时,不同的权重矩阵布局会导致不同的复杂度,不同的权重矩阵布局会导致在改变张量并行度(TP)大小时产生不同的复杂性。在分布式深度学习中,为了加速训练,通常会将模型的参数分布到多个处理单元(如GPU)上进行并行计算。而张量并行度指的就是将一个张量拆分成多个块,分别分配到不同的处理单元上进行计算。


相信感兴趣的小伙伴对于图中的代码也会有一定的疑问
这两段代码分别是InterLM和InterLM2中用于将权重矩阵Wqkv按照张量并行度(tp_size)进行分片的函数实现。当然他们也有一定的区别和联系

区别:InterLM中的实现使用了手动的方式来分割Wqkv矩阵,通过计算每个分片的起始和结束位置来实现分片。InterLM2中的实现使用了PyTorch的torch.split函数来直接将Wqkv按照指定的大小(split_size_or_sections=tp_size)在指定维度(dim=0)进行分割。联系:两者都是用于实现权重矩阵的张量并行度分片,目的是为了在分布式训练中有效地利用多个处理单元进行计算。都需要指定张量并行度(tp_size),以确定分片的数量。

总体来说,InterLM2中的实现更加简洁和直观,利用了PyTorch提供的内置函数来完成分片操作,而InterLM中的实现则更加手动化,需要计算每个分片的位置

在这里插入图片描述

在这里插入图片描述
论文针对每个模块进行了详细的介绍

  • Data Formatting:我们将以网页数据为例详细介绍数据处理管道。我们的网页数据主要来自Common Crawl1。首先,我们需要解压缩原始Warc格式文件,并使用Trafilatura (Barbaresi, 2021)进行HTML解析和主文本提取。然后,我们使用pycld22库对主要文本进行语言检测和分类。最后,我们为数据分配一个唯一标识符,并以JSON (JSON行)格式存储,从而获得format数据
  • Rule-based Stage:从internet上随机抽取的Web页面数据通常包含大量低质量的数据,如解析错误、格式错误和非自然语言文本。一种常见的做法是设计基于规则的正则化和过滤方法来修改和过滤数据,如Gopher (Rae等人,2021)、C4 (Dodge等人,2021)和RefinedWeb (Penedo等人,2023)所示。根据我们对数据的观察,我们设计了一系列启发式过滤规则,重点关注分隔和换行异常、异常字符的频率和标点符号的分布。通过应用这些过滤器,我们获得了Clean数据
  • Deduplication:互联网上存在大量的重复文本,这会对模型训练产生负面影响。因此,我们采用基于LSH (Locality-Sensitive hash)的方法对数据进行模糊重删。更具体地说,我们使用了MinHash方法(Broder, 1997),在5克文档上使用128个哈希函数建立签名,并使用0.7作为重复数据删除的阈值。我们的目标是保留最新的数据,也就是说,优先考虑具有较大CC转储数的数据。我们获得了LSH重复数据删除后的Dedup数据

这里我扩展一下LSH针对那些不太清楚的人群-------LSH(Locality-Sensitive Hashing)是一种在高维空间中用于近似最近邻搜索的技术。它特别适用于在大型数据集中高效地查找相似项。
MinHash是LSH中使用的一种具体算法,用于通过将它们哈希成短签名来估计集合之间的相似性。它通常用于重复文本检测。每个文档由一组shingles(连续的单词序列)表示,MinHash通过对shingles进行哈希来为每个文档创建签名。
通过比较两个文档的MinHash签名的Jaccard相似性来估计它们之间的相似度。如果Jaccard相似度高于某个阈值(在这种情况下为0.7),则认为这些文档是重复的。

  • Safety Filtering:互联网上充斥着有毒和色情内容,使用这些内容进行模型训练会对性能产生负面影响,并增加生成不安全内容的可能性。因此,我们采用了“域屏蔽”、“词屏蔽”、“色情分类器”和“毒性分类器”相结合的综合安全策略对数据进行过滤。具体来说,我们构建了一个包含大约13M个不安全域的块域列表和一个包含36,289个不安全词的块词列表,用于初步的数据过滤。考虑到词块可能会无意中排除大量数据,我们选择了一种谨慎的方法来编译词块列表。
    为了进一步提高不安全内容的检出率,我们使用Kaggle的“有毒评论分类挑战”数据集对BERT模型进行了微调,得到了一个毒性分类器。我们从Dedup数据中采样了一些数据,并使用Perspective API3对其进行注释,以创建一个色情分类数据集。然后我们用这个数据集对BERT模型进行微调,产生一个色情分类器。最后,我们使用这两个分类器对数据进行二次过滤,过滤掉得分低于阈值的数据,得到Safe数据。
  • Quality Filtering:与书籍、论文和专利等来源相比,互联网来源的数据包含了大量低质量的内容。根据我们的观察,这种低质量内容的主要原因有两个:1。互联网上充斥着营销广告,这些广告往往是重复的,信息很少。2. 许多网页由文章摘要或产品描述列表组成,导致提取的文本难以阅读且缺乏逻辑连贯性。
    为了过滤掉这些低质量的内容,我们首先组织了手工数据注释。对于广告分类任务,要求注释者识别一块数据是否包含广告内容(整体和部分广告都被标记为低质量)。对于流利度分类任务,注释者被要求从四个方面对数据进行评分:一致性、噪音、信息内容和语法,从而得出一个综合的流利度分数。然后,我们使用手动注释的数据对BERT模型进行微调,获得广告分类器和流利度分类器。最后,我们使用这两个分类器对数据进行二次过滤,过滤掉得分低于阈值的数据,得到高质量的预训练数据。

🍋总结

以上内容介绍仅仅是论文中一部分内容,我将会继续学习,持续更新~~~

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

银河麒麟操作系统Kylin Linux 离线安装Nginx1.21.5

一、查看操作系统版本号 nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.15.v2207.ky10.x86_64Build: Kylin Linux Advanced Server release V10 (SP3) /(Lance)-x86_64-Build20/…

Mysql数据备份与恢复实战

文章目录 备份类型备份内容备份工具mysqldump备份 实战案例:恢复误删除的表准备工作2:30完全备份完全备份后更新数据表10:00误删students表需要恢复还原的状态开始还原恢复 为什么要备份? 备份是为了:灾难恢复:硬件故障、软件故障…

CSP-S2020提高级T3:函数调用

题目链接 [CSP-S2020] 函数调用 题目描述 函数是各种编程语言中一项重要的概念,借助函数,我们总可以将复杂的任务分解成一个个相对简单的子任务,直到细化为十分简单的基础操作,从而使代码的组织更加严密、更加有条理。然而&…

Netty源码剖析——ChannelPipeline 调度 handler 的源码剖析(三十九)

ChannelPipeline 调度 handler 的源码剖析 源码剖析目的 当一个请求进来的时候,ChannelPipeline 是如何调用内部的这些 handler 的首先,当一个请求进来的时候,会第一个调用 pipeline 的 相关方法,如果是入站事件,这些方…

突破编程_前端_JS编程实例(分割窗体组件)

1 开发目标 分隔窗体组件旨在提供灵活的窗体分隔功能,支持横向分割与纵向分隔两种类型,并具备拖拽调整窗体比例的功能,同时提供最小比例设置,以防止窗体被过度缩小: 2 详细需求 2.1 分隔窗体类型 (1&…

数据类型和类型检测

Data Type And Type Checking 1.编程语言中的数据类型 类型和变量 一个类型是一系列值的集合,这些集合可以抽象出一个相同的特点,并且可以相互实现计算 例如: 布尔类型:true or false整形:1,2,3…浮点数类型&#xf…

JUC:double-checked locking(DCL) 懒汉单例模式

文章目录 double-checked locking(DCL) 问题解决方法 volatile作用 double-checked locking(DCL) 问题 第一个if用于后续进入的线程,不用再获取锁来判断是否已经创建了对象。第二个if,为的是第一个进入的线程创建对象,以及防止卡在第一个if之…

提升你的CSS技能:深入理解伪类选择器和伪元素选择器!

在CSS的世界里,有些选择器并不像它们的名字那样直接。今天,我们要探索的是两种特殊的选择器:伪类选择器和伪元素选择器。它们虽然名字相似,但功能和用途却大有不同。 下面就让我们一起来了解一下它们是如何在我们的页面布局中扮演…

GoogleNet神经网络介绍

一、简介 GoogleNet,也称为GoogLeNet,是谷歌工程师设计的一种深度神经网络结构,它在2014年的ImageNet图像识别挑战赛中取得了冠军。该神经网络的设计特点主要体现在其深度和宽度上,通过引入名为Inception的核心子网络结构&#x…

vue项目视频播放ckplayer使用

ckplayer 官方网址,点击访问 1,打开网页后能看到这里,我现在使用的是最新 X3版手册 2,这个ckplayer不是npm 插件,要下载安装包解压到项目里面使用 安装包网址 通过gitee下载 3,解析安装包到项目中 publ…

护眼台灯哪个牌子最好,护眼台灯五大品牌墙裂分享

近视在儿童中愈发普遍,许多家长开始认识到,除了学业成绩之外,孩子的视力健康同样重要。毕竟,学业的落后可以逐渐弥补,而一旦孩子近视,眼镜便可能成为长期伴随。因此,专业的护眼台灯对于每个家庭…

【zlm】音视频流与音频流合并的设计

目录 设想一 设想二 方案三 关键技术 测试语句 测试脚本 参考文档 设想一 //开始录制_option.mp4_save_path custom_path;_option.mp4_max_second max_second;vector<Track::Ptr> mytracks getTracks();auto src MediaSource::find( DEFAULT_VHOST, "1&quo…