书生·浦语大模型开源体系(一)论文精读笔记
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临,让我们一起踏上这个知识之旅!
文章目录
- 🍋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还是一筹莫展的话,那么很明显,这反映出前期基础不扎实,没有真正理解和掌握这部分内…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

