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

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.mzph.cn/news/699381.shtml

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

相关文章

红日靶场3

靶场链接:漏洞详情 在虚拟机的网络编辑器中添加两个仅主机网卡 信息搜集 端口扫描 外网机处于网端192.168.1.0/24中,扫描外网IP端口,开放了80 22 3306端口 80端口http服务,可以尝试登录网页 3306端口mysql服务,可…

linux卸载mysql8重装5

目录 背景操作卸载重装配置启动 背景 在linux(阿里云ECS)安装部署Hive时初始化Hive元数据库,遇到报错前一天两三小时没解决,问题定位为mysql,次日打算重装 操作 卸载 停止 MySQL 服务 systemctl stop mysql yum卸载…

ES6内置对象 - Map

Map(Map对象保存键值对,键值均不限制类型) 特点: 有序(Set集合是无序的);键值对(键可以是任意类型);键名不能重复(如果重复,则覆盖&…

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试,不方便单步调试。 代码改造目标是既不改变原有程序的各种功能, 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

高级语言期末2012级B卷

1.编写函数&#xff0c;输出任意正整数n的位数&#xff08;n默认为存储十进制的整形变量&#xff09; 例如&#xff1a;正整数13&#xff0c;则输出2,&#xff1b;正整数3088&#xff0c;则输出4 #include <stdio.h>int func(int n) {int count0;while(n>0) {n/10;co…

免费的WP模板网站推荐

免费wordpress模板下载 高端大气上档次的免费wordpress主题&#xff0c;首页大图全屏显示经典风格的wordpress主题。 https://www.wpniu.com/themes/289.html wordpress免费企业主题 深蓝色经典实用的wordpress网站模板&#xff0c;用wordpress免费企业主题搭建网站。 http…

基于springboot+vue的安康旅游网站(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Day17_集合与数据结构(链表,栈和队列,Map,Collections工具类,二叉树,哈希表)

文章目录 Day17 集合与数据结构学习目标1 数据结构2 动态数组2.1 动态数组的特点2.2 自定义动态数组2.3 ArrayList与Vector的区别&#xff1f;2.4 ArrayList部分源码分析1、JDK1.6构造器2、JDK1.7构造器3、JDK1.8构造器4、添加与扩容5、删除元素6、get/set元素7、查询元素8、迭…

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

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

创建天花——Dynamo for Revit2022

今天我们来聊一个期待已久的功能——生成天花&#xff0c;经过了这么多年的迭代&#xff0c;Revit终于开放了生成天花的API&#xff0c;而且功能还不错&#xff0c;是经过优化的&#xff0c;不过目前我手里还没拿到SDK&#xff0c;就不截图了。 而且新增的天花API不是在Docume…

axios是如何实现的(源码解析)

1 axios的实例与请求流程 在阅读源码之前&#xff0c;先大概了解一下axios实例的属性和请求整体流程&#xff0c;带着这些概念&#xff0c;阅读源码可以轻松不少&#xff01; 下图是axios实例属性的简图。 可以看到axios的实例上&#xff0c;其实主要就这三个东西&#xff1a…

Sora是什么?

文章目录 前言Sora是什么&#xff1f;功能特色优点 缺点Sora模型的工作原理如何使用Sora模型Sora模型的应用场景Sora模型带来的问题虚假信息版权问题 后记 前言 Sora是美国人工智能研究公司OpenAI发布的一款令人惊叹的人工智能文生成视频大模型。近年来&#xff0c;人工智能技…

无人机基础技术,固定翼无人机动力系统技术详解,无人机飞行控制系统技术

推重比选择 推重比&#xff0c;是指无人机发动机推力/拉力与无人机飞行重力之比。该参数是衡量动力系统乃至整机性能的重要参数&#xff0c;很大程度上影响飞行性能。固定翼无人机的动力系统在配置时选择的推重比必须达到或超出设计的推重比。 重量要求 翼载荷是无人机单位面…

07 STL 简介

目录 什么是STLSTL的版本STL的六大组件STL的重要性如何学习STLSTL的缺陷 1. 什么是STL c标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构和算法的软件框架 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee在惠普实验室的…

java: warning: source release 11 requires target release 11 解决办法

遇到问题 运行项目时报如下错 java: warning: source release 11 requires target release 11 原因&#xff1a;创建项目的时候选择的java11版本&#xff0c;现在用java8版本运行就会报这个错 查看项目的iml文件中LANGUAGE_LEVEL“JDK_xx”是多少 .iml 文件是 IntelliJ ID…

代码随想录算法训练营第四十一天|416. 分割等和子集。

416. 分割等和子集 题目链接&#xff1a;分割等和子集 题目描述&#xff1a; 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 解题思路&#xff1a; 本题直接套用0-1背包问题确定以下四点 1、背包…

如何将建筑白模叠加到三维地球上?

​ 通过以下方法可以将建筑白模叠加到三维地球上。 方法/步骤 下载三维地图浏览器 http://www.geosaas.com/download/map3dbrowser.exe&#xff0c;安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“建筑白模”菜单&…

欢迎 Gemma: Google 最新推出开源大语言模型

今天&#xff0c;Google 发布了一系列最新的开放式大型语言模型 —— Gemma&#xff01;Google 正在加强其对开源人工智能的支持&#xff0c;我们也非常有幸能够帮助全力支持这次发布&#xff0c;并与 Hugging Face 生态完美集成。 Gemma 提供两种规模的模型&#xff1a;7B 参数…

浅拷贝导致的bug

错误代码&#xff1a; //初始化formTableData的值 const formTableData ref({saleOrderTime:,saleOrderDetails:[] });const showModal async (item) > {//调接口获取后端返回的数据let data (await api.searchSaleOrderById({saleOrderId:item.id})).dataconsole.log(&…

全流程点云机器学习(一)使用CloudCompare自制sharpNet数据集

前言 这不是高支模项目需要嘛&#xff0c;他们用传统算法切那个横杆竖杆流程复杂耗时很长&#xff0c;所以想能不能用机器学习完成这些工作&#xff0c;所以我就来整这个工作了。 工欲善其事&#xff0c;必先利其器&#xff0c;在正式开始之前&#xff0c;我们先要搞懂如何切…