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

news2024/10/5 23:39:59

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

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

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

相关文章

Spark: a little summary

转眼写spark一年半了,从之前写机器学习组件、做olap到后面做图计算,一直都是用的spark,惭愧的是没太看过里面的源码。这篇文章的目的是总结一下Spark里面比较重要的point,重点部分会稍微看一下源代码,因为spark是跟cli…

HL祭记汇

一.写在前面 如果说廿四10天集训,对于我,是完成了从入门到蒟蒻的蜕变,那么,HL7天,可以说是真正成为了OIer,虽然是被小学生、初中生(南方的)薄纱的那种高中OIer…… 二.目录 Day 1…

微服务三十五关

1.微服务有什么好处? 微服务优点很多,但是我们通常说一个东西好肯定会跟另一个东西比较, 通常说微服务好会和单体项目进行比较。以下是微服务相对于单体项目的一些显著好处: 首先,让我们讨论单体项目的一些主要缺点&a…

IDEA生成Java Doc帮助文档

使用场景 使用IDEA(本次使用2020.3版)将自己写的常用的工具类打成jar包,安装到maven本地仓库,最后生成对应的doc参考文档。 操作流程 方法一 选中项目 右键 show in Explor,如下图: 选中地址栏 cmd 输入…

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) ,又称洪水填充算法,是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…

【LeetCode刷题笔记】242.有效的字母异位词

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

vue手写卡片切换,并且点击获取到卡片信息

需求&#xff1a;做一个卡片样式的列表&#xff0c;之后有一些基本信息&#xff0c;之后卡片选中后样式不一样&#xff0c;默认选中第一个卡片&#xff0c;点击卡片后可以获取到卡片的信息 一、效果 二、关键代码 index默认重0开始,activeTable默认为0,0-0等于0&#xff0c;但…

vscode与vue环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理)&#xff0c;此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号&#xff1a; 配置系统变量 因为在执…

【openGL教程08】着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容&#xff0c;客户如果想自我实现渲染灵活性&#xff0c;可以用着色器进行编程&#xff0c;这种程序小脚本被传送到GPU的显卡内部&#xff0c;起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…

[NCTF2019]True XML cookbook --不会编程的崽

题目的提示很明显了&#xff0c;就是xxe攻击&#xff0c;直接抓包。 <?xml version "1.0"?> <!DOCTYPE ANY [ <!ENTITY xxe SYSTEM "file:///etc/passwd" > ]> <user><username> &xxe; </username><passwor…

【蓝桥杯省赛真题26】python整数逆序输出 青少年组蓝桥杯比赛python编程省赛真题解析

目录 python整数逆序输出 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python整数逆序输出 第十二届蓝桥杯python比赛省赛真题 一、题目要求…

java基础-正则表达式+文件操作+内置包装类

目录 正则表达式去除字符串前后空格&#xff1a;去除每一行中首尾的空格去除开头的 数字_ 文件操作打印当前项目路径获取文件的上级目录/和\读取文件 内置包装类System类常用方法 Number类Integer类常用方法Float和Double 正则表达式 去除字符串前后空格&#xff1a; str.tri…

Mamba详细介绍和RNN、Transformer的架构可视化对比

Transformer体系结构已经成为大型语言模型(llm)成功的主要组成部分。为了进一步改进llm&#xff0c;人们正在研发可能优于Transformer体系结构的新体系结构。其中一种方法是Mamba&#xff08;一种状态空间模型&#xff09;。 Mamba: Linear-Time Sequence Modeling with Select…

Stable Diffusion 3 Early Preview发布

2月22日&#xff0c;Stability AI 发布了 Stable Diffusion 3 early preview&#xff0c;这是一种开放权重的下一代图像合成模型。据报道&#xff0c;它继承了其前身&#xff0c;生成了详细的多主题图像&#xff0c;并提高了文本生成的质量和准确性。这一简短的公告并未附带公开…

【Java】RestClient的使用

RestClient的使用 先导入Maven坐标&#xff0c;要和elasticsearch和kibana的版本保持一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1<…

python安装与配置2024最新版

对python不熟悉的可以去看看这篇文章python介绍 pytho安装 来到Python官网&#xff1a;https://www.python.org/ 然后 选着download列表下的windows , 然后加进入python各个版本的下载界面 可以看到截止2024年2月22日,最新版是3.12.2 但是我们一般下载稳定版 如下,点击连接进…

普中51单片机学习(DS1302)

DS1302时钟 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力&#xff0c;还有闰年调整的能力。内部含有31个字节静态RAM&#xff0c;可提供用户访问。采用串行数据传送方式&#xff0c;使得管脚数量最少&#xff0c;简单SPI 3线接口。工作电压…

使用LinkedList实现堆栈及Set集合特点、遍历方式、常见实现类

目录 一、使用LinkedList实现堆栈 堆栈 LinkedList实现堆栈 二、集合框架 三、Set集合 1.特点 2.遍历方式 3.常见实现类 HashSet LinkedHashSet TreeSet 一、使用LinkedList实现堆栈 堆栈 堆栈&#xff08;stack&#xff09;是一种常见的数据结构&#xff0c;一端…

[Java基础揉碎]idea工具

目录 调整导航菜单区域的字体大小: 调整代码区域的字体大小: 代码字体变粗: 调整颜色主题: 调整全局字符编码(Project Encoding:项目的字符编码) : 常用的快捷键(使用的windows快捷键主题): ​编辑 ​编辑 ​编辑 自己配置:​编辑 模版快捷键: 导入该行需要的类:…

【JavaEE】_tomcat的安装与使用

目录 1. Tomcat简介 2. Tomcat安装 2.1 下载Tomcat并解压缩 2.2 启动Tomcat 2.2.1 Tomcat乱码问题 2.2.2 Tomcat闪退问题 2.3 访问Tomcat欢迎页面 3. 使用Tomcat部署前端代码 3.1 路径匹配 3.2 文件路径访问与网络访问 4. 静态页面与动态页面 5. 基于tomcat的网站后…