大模型综述总结--第一部分

1 目录

本文是学习https://github.com/le-wei/LLMSurvey/blob/main/assets/LLM_Survey_Chinese.pdf的总结,仅供学习,侵权联系就删
目录如下图
在这里插入图片描述

本次只总结一部分,刚学习有错请指出,VX关注晓理紫,关注后续。
在这里插入图片描述

2、概述

2.1 大语言模型的扩展法则

  • KM扩展法则:
  • Chinchilla 扩展法则

2.2 大语言模型的涌现能力

  • 上下文学习能力(ICL):假设为大语言模型提供了一个自然语言指令、或几个任务的演示,它可以通过完成输入文本的单词序列的方式为测试实例生成预期的输出而无需而外的训练或者梯度更新(通过提高的实例就可以学会对应的任务不需要进行而外的训练)
  • 指令遵循:通过使用自然语言描述的混合任务数据集进行微调(指令微调),LLM可以在未见过的指令形式描述的任务表现出色。(泛华能力强)
  • 逐步推理:通过使用思维链提示策略完成类似数学的推理任务

2.3 大语言模型的关键技术

  • 扩展:Transformer语言模型存在明显的扩展效应;更大的模型、数据规模和更多的训练计算通常导致模型的提升。
  • 训练:分布式训练算法是学习LLM网络参数必需的
  • 能力引导:在大语料库中训练的大语言模型具备了作为通用任务求解器的潜在能力,但是在特定的任务中需要使用如ICL、COT进行引导大模型进行求解
  • 对齐微调:使大模型生成更加符合人类的无害的的内容
  • 工具操作:使用LLM可以借助外部工具完成其不擅长的任务操作

2.4 GPT系列大模型的演变

在这里插入图片描述

3、大语言模型资源

3.1 公开可用的模型检点点

  • 百亿级

  • 千亿级

3.2 常用语料

  • Books:书籍训练集
  • CommonCrawl:最大的开源网络爬虫数据集
  • Reddit Links:一个通过社交平台创建的高质量数据集
  • Wikipedia:在线的百科全书,包含大量高质量文章,涵盖各种主题
  • Code:爬取有开源许可的代码库
  • Others:其他类型的数据
    在这里插入图片描述

3.4 代码资源

可用于开发LLM的代码库

  • Transformers:是使用Transformer架构构建模型的开源Python库
  • DeepSpeed:是用于深度学习优化库(与pytorch兼容),已用于训练多个LLM,如MTNLG和BLOOM。提供各种分布式训练优化技术的支持,如内存优化(ZeRO技术,梯度检查点)和管道并行
  • Megatron-LM:是由NVIDIA开发的深度学习库,用于训练LLM。提供丰富的分布式训练优化技术,包括模型和数据并行、混合精度训练和Flash Attention并实现GPU间的高效分布训练
  • JAX:由google开发用于高性能机器学习算法的python库,允许在带有硬件加速(GPU、TPU)情况下进行数组高效运算,支持自动微分和即时编译等
  • Colossal-AI:由IIPC-AI Tech开发用于训练大规模人工智能模型的深度学习库,其基于pytorch实现,并支持丰富的并行训练策略。
  • BMTrain:由OpenBMB开发的用于分布方式训练大规模参数模型的高效库、强调代码简洁、低资源占用和高可用性。已将一些常见的LLM(Flan-T5和GLM)迁移到其ModelCenter中。
  • FastMoE:一种专门用于MoE(混合专家)模型的训练库。基于Pytorch开发,注重效率和易用性。
  • 其他:pytorch、TensorFlow、MXNet、PaddlePaddle、MindSpore、OneFlow等

4、预训练

4.1 数据收集

可通过上面语料库获取数据

4.2 数据预处理
收集大量数据后对数据进行预处理,特别是消除噪声、冗余、无关和潜在有害的数据是必需的。

  • 一个典型的预处理预训练数据的流程图

在这里插入图片描述

  • 质量过滤:为删除收集到的语料库中的低质量数据,主要有两种方法
    • 基于分类器的方法:通过一部分高质量的数据训练出一个分类器,通过分类器识别并过滤低质量的数据;但是有研究发现基于分类器可能会删除方言、口语和社会语言的高质量文本导致有偏的语料库并减少了多样性。
    • 基于启发式的方法:可以采用一些规则消除低质量文本
      • 基于语言的过滤:如果针对某一种语言任务的LLM可以删除其他非目标语言的语料。
      • 基于度量的过滤:可以利用生成文本的评估度量,例如困惑度来检测和删除不自然的句子
      • 基于统计的过滤:可以利用语料库的统计特征,如标点符号分布、符合与单词比率和句子长度来衡量并过滤低质量数据
      • 基于关键词的过滤:基于特定的关键词集合、可以识别和删除文本中的噪声或无用元素。
  • 去重:语料中的重复数据会降低语言模型的多样性,可能导致训练过程不稳定,降低模型的性能。去重可以在句子级、文档级、和数据集级等不同粒度去重
    • 句子级:删除包含重复单词和短语的低质量句子,因为它们可能在会在语言建模中引入重复模式。
    • 文档级:主要依靠文档之间的表层特征(例如单词和n元的重叠)的重叠比率来检测和删除包含相似内容的重复文档。
    • 数据集级:需要从训练集中删除测试集可能出现的重复文本。
  • 隐私去除:为了防止训练集中存在敏感或个人信息数据。可以通过基于规则的方法删除隐私数据。
  • 分词:分词也是数据预处理的关键步骤。它的目的是将原始文本分割成词序列,随后用作LLM的输入。对于有多种领域、语言和格式组成的语料库使用专门为预训练语料库设计的分词器效果可能更好。最近LLM使用SentencePiece为预训练语料库训练定制化的分词器,同时利用字节级的Byte Pair Encoding(BPE)算法来确保分词后的信息不会丢失。需要注意BPE中的归一化技术,例如NFKC、可能会降低分词性能。

4.3 预训练数据对大语言模型的影响

  • 混合数据来源:不同领域或场景的数据具有不同语言特征和语义知识。通过不同来源的文本数据对LLM模型进行预训练,LLM可以获得广泛的知识并有强大的泛化能力。但是需要注意设置预训练数据的分布,因为这个可能影响LLM在下游任务的性能。

  • 预训练数据的数量:随着LLM参数的增加,也需要更多的数据来训练模型。

  • 预训练数据的质量:现有的研究表明,对低质量的语料库进 行预训练时,例如噪声、有害和重复的数据,可能会损害模型的性能。

4.4 主流架构

一般来说现有LLM主流架构可以大致分为三种类型:即编码器-解码器、因果解码器和前缀解码器。

  • 编码器-解码器:传统的Transformer模型是建立在编码器-解码器架构上,有两个Transformer块分别作为编码器和解码器。编码器采用堆叠的多头注意层对输入序列进行编码以生成其潜在表示。解码器对这些表示进行交叉注意并自回归地生成目标序列。目前只有少数的LLM采用此种方式,如Flan-T5
  • 因果解码器架构:因果解码器架构采用单向注意力掩码,以确保每个输入token只能关注过去的token和它本身,输入和输出的token通过解码器以相同的方式进行处理。GPT系列是基于因果解码器架构开发,OPT、BLOOM、Gopher都是采用因果解码器。
  • 前缀解码器架构:前缀解码器架构(也称非因果解码器架构)修正了因果解码器的掩码机制,使其能够对前缀token执行双向注意力,并仅对生成的token执行单向注意力。前缀编码器可以双向编码前缀token序列并自回归地逐个预测输出token,其中编码和解码过程共享相同的参数。实用建议:不从头开始训练,而是继续训练因果解码器,然后将其转换为前缀解码器以加速收敛。基于前缀解码器架构的LLM代表有GLM-130B和U-PaLM.

总结:可以考虑通过混合专家(MOE)扩展这三种类型架构,其中每个输入的小部分神经网络权重被稀疏激活,Switch Transformer和GLaM证明,通过增加专家数量或总参数大小,性能会有显著的改进。

在这里插入图片描述

4.5 Transformer详细配置

Transforme主要部分的相应配置:标准化、位置编码、激活函数、注意力和偏置。

  • 标准化:Transformer架构引入层标准化(Layer Norm,LN)是为了能稳定训练LLM。但是LN的位置对LLM的性能影响很大。大多数LLM采用前置LN实现更稳定的训练。LN的代替方案:RMS Norm、DeepNorm都有很好的训练稳定性。
  • 激活函数:在现有的LLM中GeLU激活函数广泛使用,最新的LLM(如PaLM和LaMAD)采用GLU激活函数的变体,特别是SwiGLU和GeGLU的变体。性能较好,但是与GeLU比,在前馈网络中需要额外的参数。
  • 位置编码:由于 Transformer 中的自注意模块具有置换不变性,因此需要使用位置编码来注入绝对或相对位置信息以建模序列。
    • 绝对位置编码: 有两种绝对位置编码,即正弦函数和学习的位置编码。通常在LLM中经常使用学习的位置编码
    • 相对位置编码:相对位置编码根据键和查询之间的偏移量生成嵌入,因此它可以在比训练序列更长的序列上表现良好,即外推。代表有
      • ALiBi:使用基于键和查询之间距离的惩罚来偏置注意力分数。实证结果表明:它比其他位置编码有更好的零样本泛化能力和更强的外推能力
      • RoPE:通过基于绝对位置设置特定的旋转矩阵,RoPE中的键和查询之间的分数可以使用相对位置信息计算。对于建模长序列更有益。
  • 注意力机制和偏置:GPT-3采用低计算复杂度的稀疏注意力机制,即分散注意力。对于偏置大多数LLM与原始的Transformer一样,在每一个线性层和标准化层中保留了偏置。但是PaLM和Galactica移除了偏置。研究表明移除偏置可以增强训练的稳定性。
  • 总结:通过现有文献总结,为了有更强的泛化能力和训练稳定性,建议选择前置的RMS进行层标准化,并选择SwiGLU或GeGLU作为激活函数,可以选择RoPE或者ALiBi进行位置编码。

码字太累,VX关注晓理紫,后续继续
在这里插入图片描述

注意:本文大部分内容总结于,仅供学习,侵权联系删

https://github.com/le-wei/LLMSurvey/blob/main/assets/LLM_Survey_Chinese.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

字符函数和字符串函数(C语言进阶)(一)

前言 C语言中对字符和字符串的处理是很频繁的,但是c语言本身是没有字符串类型的,字符串通常放在常量字符串中或着字符数组中。 字符串常量适用于哪些对它不做修改的字符串函数。 1、函数介绍 1.1 strlen strlen:计算字符串长度 看一个代码&…

“AI教父”李一舟翻车,中国AI培训路在何方

近日,AIGC领域掀起了一场不小的风波,知名AI博主李一舟在各大平台推出的AI课程突然下架,其账号遭到禁止关注的情况。 这一事件不仅引发了广泛关注和热议,更让许多真正想学习AIGC的用户感到迷茫和困惑:在众多的AIGC课程中…

ONLYOFFICE 桌面编辑器现已更新至v8.0啦

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

一个div最简方法画太极图

一个div最简方法画太极图 直接上代码&#xff0c;一目了然 html <div class"太极图"/>css .太极图 {position: relative;width: 400px;height: 400px;background: linear-gradient(to right,white 50%,black 50%);border-radius: 50%;box-shadow:0 0 12px …

c#高级——插件开发

案例&#xff1a;WinForm计算器插件开发 1.建立插件库&#xff0c;设置各种自己所需的插件组件 如下图所示&#xff1a;进行了计算器的加减法插件计算组件 Calculator_DLL为总插件父类 Calculator_DLL_ADD 为插件子类的控件对象 Calculator_DLL_Sub Calculator_DLL_Factory 为…

Map集合特点、遍历方式、TreeMap排序及Collections和Arrays

目录 ​编辑 一、集合框架 二、 Map集合 特点 遍历方式 HashMap与Hashtable的区别 TreeMap Collections Arrays 一、集合框架 二、 Map集合 Map集合是一种键值对的集合&#xff0c;其中每个键对应一个值。在Java中&#xff0c;Map接口定义了一种将键映射到值的数据结…

【Ubuntu】使用WSL安装Ubuntu

WSL 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能&#xff0c;可用于在 Windows 计算机上运行 Linux 环境&#xff0c;而无需单独的虚拟机或双引导。 WSL 旨在为希望同时使用 Windows 和 Linux 的开发人员提供无缝高效的体验。安装 Linux 发行版时&#xff0c…

喝多少瓶汽水

喝多少瓶汽水 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果: 题目描述&#xff1a; 水已知1瓶汽水1元&#xff0c;2个空瓶可以换⼀瓶汽水&#xff0c;输入整数n&#xff08;n>0&#xff09;&#xff0c;表示n元钱&#xff0c;计算可以多少汽水&a…

Unity(第四部)新手组件

暴力解释就是官方给你的功能&#xff1b;作用的对象上面如&#xff1a; 创建一个球体&#xff0c;给这个球体加上重力 所有物体都是一个空物体&#xff0c;加上一些组件才形成了所需要的GameObject。 这是一个空物体&#xff0c;在Scene场景中没有任何外在表现&#xff0c;因为…

通过Colab部署Google最新发布的Gemma模型

Gemma的简单介绍 Gemma 是一系列轻量级、最先进的开放式模型&#xff0c;采用与创建 Gemini 模型相同的研究和技术而构建。 Gemma 由 Google DeepMind 和 Google 的其他团队开发&#xff0c;其灵感来自 Gemini&#xff0c;其名称反映了拉丁语 gemma&#xff0c;意思是“宝石”…

RT-Thread-快速入门-3-内存管理

内存管理 定义与作用 内存池管理 基础定义 内存池是一种管理固定大小内存块的机制&#xff0c;主要用于减少碎片化&#xff0c;提高内存分配效率。在 RT-Thread 中&#xff0c;内存池允许用户预分配一定数量的具有相同大小的内存块&#xff0c;应用程序可以从中快速分配和释放内…

【Java程序设计】【C00287】基于Springboot的疫情防控期间某村外出务工人员管理系统(有论文)

基于Springboot的疫情防控期间某村外出务工人员管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的疫情防控期间某村外出务工人员信息管理系统 本系统分为系统功能模块、管理员功能模块、用户功能模块、采集…

第三百六十五回

文章目录 1. 概念介绍2. 方法与信息2.1 获取方法2.2 详细信息 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取设备信息"相关的内容&#xff0c;本章回中将介绍如何获取App自身的信息.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

C++的vector容器->基本概念、构造函数、赋值操作、容量和大小、插入和删除、数据存取、互换容器、预留空间

#include<iostream> using namespace std; #include <vector> //vector容器构造 void printVector(vector<int>& v) { for (vector<int>::iterator it v.begin(); it ! v.end(); it) { cout << *it << " "…

Redis中的rdb和aof

Redis中的rdb和aof 持久化流程RDB机制redis.conf中rdb的配置save bgsave 自动化 rdb触发的三种方式save 命令bgsave命令自动触发 rdb的优势劣势 AOFaof原理aof配置文件重写原理aof的三种触发机制 appendfsyncaof fix工具 redis-check-aof练习aofaof的优缺点 redis是一个内存数据…

GEE必须会教程—Map工具的使用

一个星期的时间&#xff0c;跟着小编的角度&#xff0c;我们已经学习了数值、字符串、字典、列表、日期、矩阵等基本的编程数据类型&#xff0c;这些是学习任何一门编程语言都需要掌握的知识&#xff0c;还有不懂得赶紧关注小编&#xff0c;进行主页查看过往文章&#xff01;! …

[rust] 11 所有权

文章目录 一 背景二 Stack 和 Heap2.1 Stack2.2 Heap2.3 性能区别2.4 所有权和堆栈 三 所有权原则3.1 变量作用域3.2 String 类型示例 四 变量绑定背后的数据交互4.1 所有权转移4.1.1 基本类型: 拷贝, 不转移所有权4.1.2 分配在 Heap 的类型: 转移所有权 4.2 Clone(深拷贝)4.3 …

可变参数、Collections类

一、可变参数 定义&#xff1a;是一种特殊的形参&#xff0c;定义在方法、构造器的形参列表里 格式&#xff1a;数据类型...参数名称 特点&#xff1a;可以不传数据&#xff0c;也可以传一个或者多个数据给它&#xff0c;也可以传一个数组 好处&#xff1a;可以灵活接收数据…

牛客网 HJ34 图片整理

思路&#xff1a; 题目总共涉及三种类型的字符&#xff1a;大写字母&#xff0c;小写字母&#xff0c;数字 我们可以简单归纳为两类&#xff1a;字母类和数字类&#xff08;采用isalpha和isdigit来判断&#xff09;&#xff0c;创建两个数组来保存这两类字符 因为题目要求按…