书生·浦语大模型开源体系(一)论文精读笔记
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
文章目录
- 🍋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模型进行微调,获得广告分类器和流利度分类器。最后,我们使用这两个分类器对数据进行二次过滤,过滤掉得分低于阈值的数据,得到高质量的预训练数据。
🍋总结
以上内容介绍仅仅是论文中一部分内容,我将会继续学习,持续更新~~~
挑战与创造都是很痛苦的,但是很充实。
相关文章:

书生·浦语大模型开源体系(一)论文精读笔记
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

基于单片机模糊算法温度控制系统设计
**单片机设计介绍, 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机模糊算法温度控制系统设计是一个综合性的项目,结合了单片机技术、传感器技术、模糊控制算法等多个方面。以下是对该设计的概要…...
GESP Python编程四级认证真题 2024年3月
Python 四级 2024 年 03 月 1 单选题(每题 2 分,共 30 分) 第 1 题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( ) A. 小程序 B. 计时器 C. 操作系统…...

Collection与数据结构 顺序表与ArrayList
1. 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在…...

pytorch | torchvision.transforms.CenterCrop
torchvision.transforms.CenterCrop>从图像中心裁剪图片 transforms.CenterCrop torchvision.transforms.CenterCrop(size) 功能:从图像中心裁剪图片 size: 所需裁剪的图片尺寸 transforms.CenterCrop(196)的效果如下: (也可…...
在Debian 11上安装GCC
GCC(GNU Compiler Collection)是一个功能强大的工具集合,可用于将不同编程语言的源代码编译成可执行文件或库。它支持多种编程语言,包括C、C、Java、Objective-C、Go、Fortran、Ada等。在Debian 11上安装GCC非常简单,以…...
kafka部署之简单密钥
一、说明 centos7.9kafka_2.13-2.7.0.tgzapache-zookeeper-3.8.0-bin.tar.gz官方文档:Apache Kafka 二、kafka配置 2.1、server.properties server.properties修改或增加如下配置 listenersSASL_PLAINTEXT://你的主机ip:9092 super.usersUser:admin authorizer…...

大模型重塑电商,淘宝、百度、京东讲出新故事
配图来自Canva可画 随着AI技术日渐成熟,大模型在各个领域的应用也越来越深入,国内互联网行业也随之进入了大模型竞赛的后半场,开始从“百模大战”转向了实际应用。大模型从通用到细分垂直领域的跨越,也让更多行业迎来了新的商机。…...
用静态工厂方法代替构造器
用静态工厂方法来代替构造方法。 public class Student {private String name;private int age;private String studentId;private Student(String name, int age, String studentId) {this.name name;this.age age;this.studentId studentId;}public static Student creat…...

Discourse 最多允许有几个分类级别
和 DISCUZ 不同,DISCUZ 可以允许分类下面还有分类,再继续分类这种嵌套式分类。 Discourse 最多只允许有 2 个分类。 如果你在已有的分类下再继续分类的话,系统会提示错误: 意思就是子分类不能再分子分类。 Discourse 尽量采取了…...

MySQL数据库主从复制和读写分离
MySQL数据库主从复制和读写分离 。## MySQL主从复制 MySQL主从复制的概念 MySQL主从复制是一个异步的数据复制过程,允许将一个MySQL服务器(主服务器)上的数据复制到一个或多个MySQL服务器(从服务器)。主从复制提供了…...
rust - 使用log4rs打印日志
本文提供了一种通过log4rs库记录日志的方法。这里没有采用读取yaml文件的方式,而是通过对象构造的方式来初始化日志,用于发包时不带配置文件的场景。 初始化日志 在release环境,仅需要将日志打印到文件中,而日常开发时ÿ…...

数据结构:单调栈和单调队列
文章目录 一、单调栈1.1、栈的思想1.2、单调栈1.2.1、单调栈的基本应用:找出数组中每个元素右侧第一个更大的元素1.2.2、单调栈的基本应用:找出数组中每个元素左侧第一个更大的元素1.2.3、单调栈拓展1.2.4、单调栈LeetCode题单 二、单调队列2.1、队列的思…...
大模型RAG性能提升路径
大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…...
机器视觉学习(九)—— 边缘检测
目录 一、边缘检测 1.1 Canny边缘检测 1.1.1 cv2.Canny函数 1.1.2 Canny边缘检测示例 1.2 角点检测 1.2.1 cv2.goodFeaturesToTrack()函数 1.2.2 OpenCV角点检测示例代码 1.3 直线检测 1.3.1 cv2.HoughLinesP()函数 1.3.2 OpenCV直线检测示例代码 1.4 圆形检测 1.4…...

基于单片机声音分贝采集和显示控制系统设计
**单片机设计介绍,基于单片机声音分贝采集和显示控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机声音分贝采集和显示控制系统设计,主要目标是实现声音分贝的实时采集、处理以及显示…...

CentOS使用Docker部署Halo并结合内网穿透实现公网访问本地博客
文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本文主要介绍如何在CentOS 7系统使…...

打造高效自动化渗透测试系统:关键步骤与实践
随着当前网络安全威胁的不断扩展与升级,开展渗透测试工作已经成为广大企业组织主动识别安全漏洞与潜在风险的关键过程。然而,传统的人工渗透测试模式对测试人员的专业能力和经验水平有很高的要求,企业需要投入较大的时间和资源才能完成。在此…...

绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境
1、镜像 privoce/vocechat-server:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、存储空间 装载路径:/home/vocechat-server/data不可变更,权限读写。 2.4、端口设置 容器端口3000不可变…...

考研数学|高效刷透汤家凤《1800》经验分享
当然不需要换老师,如果你在基础阶段连汤老师的课都听不进去,那么换其他老师的话,很大可能也是白搭。 如果你现在对于1800还是一筹莫展的话,那么很明显,这反映出前期基础不扎实,没有真正理解和掌握这部分内…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...