A survey of Large Lanuage models

news2024/11/28 8:26:09

一.引言

语言建模的四个阶段,统计语言模型(SLM):基于马尔科夫假设建立词预测模型,n-gram,神经语言模型(NLM):word2vec,预训练语言模型(PLM):bert,大语言模型(LLM):GPT,LLM出现PLM不曾有的涌现能力。

本文从四个方面,预训练(如何预训练出一个有能力的LLM),适应微调(如何从有效性和安全性两个角度有效的微调预训练的LLM),使用(如何利用LLM解决各种下游任务),能力评估(如何评估LLM能力)。

二、.概述

LLM基于transformer架构,大幅扩展了模型大小,预训练数据和总计算量。

大模型的涌现能力被定义为在小模型中不存在但在大模型中出现的能力,有3个代表性的LLM的涌现能力,

1.上下文学习,假设提供给语言模型自然语言指令或多个任务演示,它可以通过完成输入文本的但系序列来为测试实例生成期望的输出,而无需额外的训练或梯度更新;

2.指令遵循,通过使用自然语言描述的多任务数据集上微调,LLM可以在同样使用指令形式化描述的未见任务上表现良好,有更好的泛化能力;

3.逐步推理,采用思维链,LLM可以利用包含中间推理步骤的提示机制来解决问题。

LLM能力提升关键技术:

1.扩展,GPT3的175B和PaLM的540B,大模型大数据量;

2.训练,分布式训练,DeepSpeed,Megatron-LM;

3.能力引导,设计合理的任务指令或具体的上下文学习策略或者微调技术;

4.对齐微调,InstructGPT,保证生成有用性,诚实性和无害性内容;

5.外部工具:插件,搜索引擎,视觉和语音技术结合。

三、大语言模型资源

在现有的大语言模型的基础上进行开发

百亿级别模型:LLaMA(65B),NLLB(54.5B),10-20B之间:mT5,PanGu-alpha,T0,GPT-NeoX-20B,CodeGen,UL2,Flan-T5,mT0.

千亿级别模型:OPT,OPT-IML,BLOOM,BLOOMZ,GLM,Galactica

常用语料库

Books:Bookcorpus是之前小规模模型(GPT2)中常用的,包括超11000本电子书;Common Crawel:是最大的开源网络爬虫数据库之一,百万亿字节级别;Reddit link:高赞链接,知乎或者贴吧类似的;Wikipedia:在线百科全书,多语言;Code:github/stackOverflow

GPT3:300B,包括commonCrawl,WebText2,Books1,Books2,Wikipedia

PaLM:780B,网页,书籍,github,多语言维基百科,新闻

LLaMA:CommonCrawl,C4,Github,Wikipedia,书籍,Arixv和StackExchange

四、预训练

4.1 数据

与小规模预训练语言模型不同,大模型对计算资源的巨大需求,不可能对模型进行多次迭代。预训练语料库的质量和分布都会影响大模型性能。

1.混合来源,不同预料的分布会影响大模型下游任务的性能。

2.预训练数据的数量,随着大语言模型参数规模的增加,需要增加更多数据,chinchilla表明,现有许多大语言模型由于缺乏足够的预训练数据而受到次优训练的影响,llama表明,随着更多数据和更长时间的训练,较小的模型可以实现良好的性能。

3.预训练数据的质量,去重。

4.2 架构

4.2.1 主流架构

 Transformer大致可分为三种类型,编码器-解码器,因果解码器,前缀解码器。

encoder-decoder:原始transformer,编码器采用堆叠的多头自注意层对输入序列进行编码已生成潜在表示,而解码器对这些表示进行交叉注意并自回归的生成目标序列。

causal decoder:单向注意力掩码,以确保每个输入标记只能关注过去的标记和它本身,GPT系列都是这个架构,OPT,BLOOM。

prefix decoder(non-causal decoder):修正了因果解码器的掩码机制,以使其能够对前缀标记执行双向注意力,并仅对生成的标记执行单向注意力。与encoder-decoder类似,前缀解码器可以双向编码前缀序列并自回归的逐个预测输出标记,PaLM和GLM。

4.2.2 配置

自transformer推出以来,改进方法包括:标准化、位置编码、激活函数、注意力和偏置。

标准化:LN后置->LN前置->Sandwich-LN->RMS Norm->DeepNorm

激活函数:GeLU->GLU->SwiGLU->GeGLU

位置编码:由于transformer中的自注意模块是置换等变的,因此需要使用位置编码来注入绝对或相对位置信息以建模序列,正弦函数和学习的位置编码,后者常在大模型中使用,ALiBi,RoPE.

注意力机制和偏差:transformer->flashattention

4.2.3 预训练任务

语言建模:LM,自回归

去噪自编码:DAE,输入一些有随机替换区间的损坏文本,语言模型被训练已回复被替换的标记,GLM和T5。

4.3 模型训练

4.3.1 优化设置

批量训练:8196个样例或1.6M标记。GPT和PaLM在训练中动态增加batch,从32k逐渐增加到3.2M。

目前很多训练技术已被集成到DeepSpeed,Pytorch和Megatron-LM中,混合精度训练技术,如BF16,可以提高训练效果和减少GPU内存使用,但是需要A100。

五、大语言模型的适配微调

指令微调和对齐微调,前一种方法旨在增强大语言模型的能力,后一种方法旨在将大语言模型的行为和人类的价值观偏好对齐。

5.1 指令微调

本质上,指令微调是在自然语言格式的实例集合上微调预训练后的大语言模型的方法。这种方法与有监督微调和多任务提示训练相关,首先收集或者构造指令格式的实例,然后,使用这些格式化的实例以有监督的方式微调大语言模型。例如instructGPT和GPT4。

5.1.1 格式化实例构造

通常情况下,一个指令格式化的实例包括一个任务描述(指令),一个输入输出对以及少量示例(可选)。

格式化已有数据集:作为指令微调实例的重要来源,使用自然语言的任务描述格式化这些多任务训练数据集是很方便的。使用人类编写的任务描述来增强标记的数据集,这些描述通过解释任务目标来知道LLM理解任务。对图4b中,针对问答任务中的每个实例都添加了一个任务描述:请回答下列问题,在指令调整之后,LLM可以通过遵循它们的任务描述很好的泛化到其他看不见的任务。

格式化人类需求:instructGPT建议采用用户提交给openai的查询作为任务描述,用户查询以自然语言表示,很适合引出LLM遵循指令的能力,人工描述指令。

实例构建的关键因素:扩展指令:扩大任务数量可以极大的提高LLM的泛化能力,格式设计:可以向现有数据集的输入-输出对添加任务描述和可选的示例,一些工作建议包含一些面向推理数据集的cot示例。

5.1.2 指令微调策略

与预训练不同,指令微调通常更加高效,其只需要使用一定数量的实例进行训练,指令微调可以被视为一个有监督的训练。

平衡数据分布:实例比例混合策略,即将所有数据合并,然后从混合数据集中等比例采样每个实例。

结合指令微调和预训练:在指令微调中可以加入预训练数据,可以看成是对模型的正则化。

5.2 对齐微调

5.2.1 对齐微调的背景

LLM,语言建模目标是通过单词预测对模型参数进行预训练,但缺乏对人类价值观和偏好的考虑,提出人类对齐,使大语言模型行为能够符合人类的期望,但是与初始的预训练和适应微调不同,语言模型的对齐需要考虑不同的标准。

对齐标准:有用性,诚实性和无害性。

5.2.1 人类反馈收集

主要有3种方法从人类标注者中收集反馈和偏好数据。

基于排序的方法:标注人员通常以较为粗略的方式从若干候选中选择最佳的评估模型生成的输出。

基于问题的方法:标注人员可以通过回答研究设计的特定问题来提供更详细的反馈。

基于规则的方法:不仅要求标注人员挑选最佳的回复,还设计了一系列规则还测试模型生成的回复是否符合有用、正确和无害的对齐标准。

5.2.3 基于人类反馈的强化学习

RLHF包括三个关键组件:要对齐的预训练LM,从人类反馈中学习的奖励模型以及训练LM的RL算法。

1.监督微调:通过需要收集一个包含输入提示和所需输出的监督数据集,以对LM进行微调。instructGPT使用人工标注。

2.训练奖励模型:使用人类反馈数据训练RM,使用LM采样提示(来自监督数据集或人工生成的提示)作为输入来生成一定数量的输出文本,让人工标注人对这些进行标注偏好,常见的做法是对生成的候选文本进行排序标注。在instructGPT中。标注人员将模型生成的输出从最好到最差进行排名,然后训练RM(即6B的GPT3)来预测排名。

3.RL微调:对齐微调被形式化为RL问题。在此设置中,预训练的LM作为策略,将提示作为输入并返回输出文本,它的动作空间是LM的词表,状态是当前生成的token序列,奖励由RM产生,instructGPT使用PPO算法针对RM优化LM,对于每个输入提示,instructGPT计算当前LM和初始LM生成的结果之间的KL散度作为惩罚。

6.使用

7.能力测评

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

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

相关文章

Godot引擎 4.0 文档 - 入门介绍 - 学习新功能

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Learning new features — Godot Engine (stable) documentation in English 学习新功能 Godot 是一个功能丰富的游戏引擎。有很多关于它的知识。本页介绍了如何使用…

English Learning - L3 作业打卡 Lesson2 Day11 2023.5.15 周一

English Learning - L3 作业打卡 Lesson2 Day11 2023.5.15 周一 引言🍉句1: Sometimes a person may be upset because he does not have something as nice as a friend has, like a fast new car.成分划分弱读连读爆破语调 🍉句2: That person may say…

【wifi-app 任意泄露】

一、fofa 搜索 title“Wi-Fi APP Login” # Date: 2022-06-12 # Exploit Author: Ahmed Alroky # Author Company : AIactive # Version: M30HG4.V5030.191116 # Vendor home page : wavlink.com # Authentication Required: No # CVE : CVE-2022-34047 # Tested on: Windows…

day2 I/O多路复用select函数

目录 思考一个问题: I/O多路复用select函数 代码实现 net.h server.c: socket.c 思考一个问题: 我们还是把视角放到应用B从TCP缓冲区中读取数据这个环节来。如果在并发的环境下,可能会N个人向应用B发送消息,这种情况下我们的…

java+springboot留学生新闻资讯网的设计与实现

Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架,和控制翻转容器的实现。Spring框架的一些核心功能理论,可以用于所有Java应用,Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现任何的编程模型&a…

nodejs进阶(5)—接收请求参数

1. get请求参数接收 我们简单举一个需要接收参数的例子 如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword地球。通过前面的进阶3教程《nodejs进阶(3)—路由处理》重介绍的url模块,我们知道接收方法如下这…

cpp11实现线程池(六)——线程池任务返回值类型Result实现

介绍 提交任务函数submitTask中返回的Result类型应该是用Result类包装当前的task,因为出函数之后task即如下形式:return Result(task); Result和Task都要互相持有对方的指针,Task要将任务执行结果通过Result::setVal(run()) 调用传给其对应…

RestCloud新一代(智能)全域数据集成平台发布

5月18日,RestCloud在其成立六周年的当天,发布了“新一代(智能)全域数据集成平台”。 5月18日,RestCloud在其成立六周年的当天,发布了“新一代(智能)全域数据集成平台”。 根据业内专…

【Linux环境基础开发工具】软件包管理器-yum

写在前面 今天我打算介绍如何在Linux环境下载软件, Linux作为一个操作系统,就像windows一样,当然是存在软件的。 目录 写在前面 怎么在Linux环境安装软件 源代码安装 rpm安装包安装 yum安装 如何理解Linux的生态 如何使用yum安装软…

【LLM大模型】模型和指令微调方法

note Hugging Face 的 PEFT是一个库(LoRA 是其支持的技术之一,除此之外还有Prefix Tuning、P-Tuning、Prompt Tuning),可以让你使用各种基于 Transformer 结构的语言模型进行高效微调。AIpaca羊驼:让 OpenAI 的 text-…

今年测试工程师正遭【革命】,“点点工”如何破局?

近几年来的特殊情况,综合过去的大形势变化,所有行业都会自下而上的进行一轮技术“大清洗”,技术停滞不前的“点工”或将被逐步取代。 软件测试现状 测试行业在十几年间发生了翻天覆地的变化,从早期站在风口上的快速发展&#xff…

fastapi基础篇

文章目录 简介环境搭建安装基础文件自动文档 基础使用POST请求传递参数返回定制信息jinja2返回html 简介 FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6 并基于标准的 Python 类型提示。 关键特性 快速&#…

【学习笔记】TCP/IP协议详解

1.A、B、C类网络号各有多少个? A类网络号:共有2^7 - 2个,即126个。这是因为A类网络号的第一个字节范围是1.0.0.0到126.0.0.0,其中0.0.0.0和127.0.0.0是特殊保留地址,不能用于网络划分。 B类网络号:共有2^…

Redis的主从复制,哨兵及群集

一、主从复制 1、主从复制-哨兵-集群 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自…

免费通过微软Edge浏览器使用ChatGPT的手把手详细教程

ChatGPT是OpenAI推出的人工智能语言模型,能够通过理解和学习人类的语言来进行对话,像人类一样进行聊天交流,甚至还可以生成图片、编写代码。下面介绍如何通过在微软Edge浏览器的扩展程序中使用ChatGPT。 一、使用效果 ChatGPT的使用效果示例…

一文读懂!RK3668和RK3568有什么区别?

​ 从上图可以看出,RK3568和RK3566 CPU均为四核Cortex-A55架构,GPU为Mali-G522EE,内置NPU,可提供1T算力,支持DDR及CPU Cache全链路ECC等,RK366与RK3568最大区别的是RK3568具有PCIe接口、双千兆以太网和更…

基于FPGA+SDRAM+BT656视频解码移植总结

一、硬件准备 1、TVP5150模块(模拟视频信号解码模块)。 2、模拟摄像头一个(PAL或NT格式输出AV同轴) 3、FPGA开发板一块(EP4CE6+SDRAM+VGA) 实现功能: 模拟摄像头输出的视频信号为模拟信号,AV 同轴线缆输出,通过转接线接 到 TVP5150 模块,FPGA 控制 TVP5150 模块,…

C语言学习分享(第八次)------初阶指针

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 初阶指针 1. 前言🚩2. …

TypeScript 之 Lambda 函数

本文作者为 360 奇舞团前端开发工程师 TypeScript 之 Lambda 函数 Lambda 函数 又称箭头函数 箭头函数表达式语法比函数表达式语法更简短,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方&#xff0…

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时…