大规模语言模型从理论到实践目录和个人总体观后感合集
[复制链接]
# 本书一共九章
本书一共九章,循序渐进,但是个人阅读过程中,很多地方都卡壳,知识面过于单薄,一些专有名词和计算公式的表达难以消化理解,一头雾水。学习过程中,深刻认识到自己的不足之处,产生了畏难情绪,查阅资料,又不知道从哪里下手,论坛和资料,大多搜索不尽人意。本书作者和功底也确实认真有深刻,先下一番笨功夫,从尽力复刻一遍开始
## 第一章绪论
本章深入浅出介绍了大语言模型的基本概念、发展历程和构建流程。交代了本书的内容安排,把行文结构说明一番。
## 第二章大语言模型基础
本章令我困惑不已,本书的代码工具和编译器是什么?怎么构建结构?编码器和解码器是什么?可能这些问题很入门,但我确实事第一次接触大语言模型,这些问题想不明白,检索这些也是广告业务,代码更是看到云里雾里。
本章讲解了Transformer结构,生成式预训练语言模型GPT和大预言模型结构。代码部分我还在努力尝试看懂和复刻。
## 第三章大语言模型预训练数据
本章介绍了数据来源,数据处理数据影响分析和开源数据集部分。
一些专有名词还很细致的讲解。
## 第四章分布式训练
分布式训练是指是指将机器人学习或者深度学习模型训练任务分解成多个子任务,并在多个计算机上并行的进行训练。分布四训练的并行策略有数据并行、模型并行和混合并行。这些策略同时要注意计算设备内存优化。分布式训练的集群架构属于高性能计算集群。参数服务器架构有两种服务角色:训练服务器和参数服务器。去中心化构架采用集合通信实现分布式训练系统。再去中心化架构中没有中央服务器或者控制节点,而是节点之间进行直接通信和协调。
本章大头和重点DeepSpeed实践,由于本人资源有限,没办法复刻,很多流程和说明也看不懂,所以在日后专题部分在做说明。
## 第五章有监督微调
有监督微调又称指令微调,是指在已经训练好的语言模型的基础上,通过使用有标注的特定 任务数据进行进一步的微调,使模型具备遵循指令的能力。经过海量数据预训练后的语言模型虽然具备了大量的“知识”,但是由于其训练时的目标仅是进行下一个词的预测,因此不能够理解并 遵循人类自然语言形式的指令。为了使模型具有理解并响应人类指令的能力,还需要使用指令数据对其进行微调。如何构造指令数据,如何高效低成本地进行指令微调训练,以及如何在语言模型基础上进一步扩大上下文等问题,是大语言模型在有监督微调阶段的核心。
本章介绍了大语言模型的提示学习和语境学习,在此基础上介绍高效模型微调及模型上下文 窗口扩展方法,最后介绍指令数据的构建方式,以及有监督微调的代码实践。
提示学习(Prompt-BasedLearning)不同于传统的监督学习,它直接利用了在大量原始文本
上进行预训练的语言模型,并通过定义一个新的提示函数,使该模型能够执行小样本甚至零样本
语境学习,也称上下文学习,其概念随着GPT-3的诞生而被提出。语境学习是指模型可以从
上下文中的几个例子中学习:向模型输入特定任务的一些具体例子〔也称示例(Demonstration)〕
及要测试的样例,模型可以根据给定的示例续写测试样例的答案。。语境学习的关键思想是从类比中学习,整个过程并不需要对模型进行参数更新,
仅执行前向的推理。大语言模型可以通过语境学习执行许多复杂的推理任务。
由于大语言模型的参数量十分庞大,当将其应用到下游任务时,微调全部参数需要相当高的
算力(全量微调的具体流程将在5.5节详细介绍)。为了节省成本,研究人员提出了多种参数高
效(ParameterEfficient)的微调方法,旨在仅训练少量参数就使模型适应下游任务。
随着更多长文本建模需求的出现,多轮对话、长文档摘要等任务在实际应用中越来越多,这些 任务需要模型能够更好地处理超出常规上下文窗口大小的文本内容。尽管当前的大语言模型在处理 短文本方面表现出色,但在支持长文本建模方面仍存在一些挑战,这些挑战包括预定义的上下文窗口大小限制等。这会限制模型对长文本的理解和表达能力。当涉及长时间对话或长文档摘 要时,传统的上下文窗口大小可能无法捕捉到全局语境,从而导致信息丢失或模糊的建模结果。
为了更好地满足长文本需求,有必要探索如何扩展现有的大语言模型,使其能够有效地处理
更大范围的上下文信息。具体来说,主要有以下方法来扩展语言模型的长文本建模能力。
- 增加上下文窗口的微调:采用直接的方式,即通过使用一个更大的上下文窗口来微调现有的预训练Transformer,以适应长文本建模需求。
- 位置编码:改进的位置编码,如ALiBi[68]、LeX[156]等能够实现一定程度上的长度外推。这意味着它们可以在小的上下文窗口上进行训练,在大的上下文窗口上进行推理。
- 插值法:将超出上下文窗口的位置编码通过插值法压缩到预训练的上下文窗口中。
因为指令数据的质量会直接影响有监督微调的最终效果,所以指令数据的构建应是一个非常
精细的过程。从获得来源上看,构建指令数据的方法可以分为手动构建指令和利用大语言模型的
生成能力自动构建指令两种。
手动构建指令和自动构建指令
DeepSpeed-ChatSFT实践在专题部份再说明
## 第六章强化学习
强化学习是将模型输出文本作为一个整体进行考 其优化目标是使模型生成高质量回复。此外,强化学习方法不依赖于人工编写的高质量回复。而是根据指令生成回复,奖励模型针对所生成的回复给出质量判断。模型也可以生成多个答案,同时模型对输出文本质量进行排序。模型通过生成回复并接收反馈进行学习。强化学习方法更适合生成式任务,也是大语言模型构建中必不可少的关键步骤。本章介绍基于人类反馈的强化学习基础概念、奖励模型及近端策略优化方法,并在此基础
强化学习(ReinforcementLearning,RL)研究的是智能体与环境交互的问题,其目标是使智能体在复杂且不确定的环境中最大化奖励。强化学习基本框架主要由两部分组成:智能体和环境。在强化学习过程中,智能体与环境不断交互。智能体在环境中获取某个状态后,会根据该状态输出一个动作,也称为决策(Decision)。动作会在环境中执行,环境会根据智能体采取的动作,给出下一个状态及当前动作带来的奖励。智能体的目标就是尽可能多地从环境中获取奖励。本章讲解了强化学习的基本概念、强化学习与有监督学习的区别,以及在大语言模 型中基于人类反馈的强化学习流程。奖励模型在强化学习中起着至关重要的作用,它决定了智能体如何从与环境的交互中学习并优化策略,以实现预定的任务目标。数据收集、模型训练和开源数据三个方面介绍大语言型奖励模型的实现。
## 第七章大语言模型应用
这章干货太多,代码太多,新知识点太多,我看不太懂。和前面的还是有不小的跳跃性。在此简述概括一下。
语言模型在推理规划、综合应用框架、智能代理及多模态大模型等方面的 有重要意义和不可估量用处。
推理规划方面,随着语言模型规模的不断扩大其也具备了丰富的知识和强大的语境学习能力。然而,仅通过扩大语言模型的规模,并不能显著提升推理(Reasoning)能力,如常识推理、逻辑推理、数 学推理等。通过示例(Demonstrations)或者明确指导模型在面对问题时如何逐步思考,促使模 型在得出最终答案之前生成中间的推理步骤,可以显著提升其在推理任务上的表现。这种方法被 称为**思维链提示**(Chain-of-ThoughtPrompting)。同样地,面对复杂任务或问题时,大语言模型可以展现出良好的规划(Planning)能力。通过引导模型首先将复杂的问题分解为多个较为简单的子问题,然后逐一解决这些子问题,可使模型得出最终解答,这种策略被称为**由少至多提示**
**综合应用框架**则是实现数据感知和环境交互。
实现通用类人智能都是人类不懈追求的目标,智能代理也称为智能体,也是在该背景下被提出的。早期的智能代理主要是基于强化学习实现的,不仅计算成本高,需要用大量的数据训练,而且难以实现知识迁移。随着大语言模型的发展,**智能代理**结合大语言模型实现了巨
大突破,基于大语言模型的智能代理开始占据主导地位。智能代理核心模块组成思考模块、记忆模块、工具调用模块。
多模态大模型方面大规模预训练视觉模型在图像编码、视觉感知等方面也取得了显著的进步,促进了大语言模型和其他模态基础模型的交互融合。探究多模态数据的处理与生成,也是当前的研究热点。24年3月14日,GPT-4的推出增加了对视觉模态输入的支持,这意味着它能够理解图像并进行相应的自然语言生成.
语言模型的推理过程遵循自回归模式(AutoregressivePattern)。例如,针对输入“复旦大学位”,模型预测“于”的概率比“置”的概率高。因此,在第一次迭代后,“于”字被附加到原始输入中,并将“复旦大学位于”作为一个新的整体输入模型以生成下一个词元。这个生成过程持续进行,直到生成表示序列结束的<eos>标志或达到预定义的最大输出长度为止。
大语言模型的推理过程与其他深度学习模型(如BERT、ResNet等)非常不同,BERT的执行时
间通常是确定且高度可预测的。但是,在大语言模型的推理过程中,虽然每次迭代执行的时间仍然具有确定性,但迭代次数(输出长度)是未知的,这使得一个大语言模型推理任务的总执行时间是不可预测的。
## 第八章大语言模型评估
如何评估大语言模型我们需要在技术和任务层面对大语言模型之间的优劣加以判断,也需要在社会层面对大语言模型可能带来的潜在风险进行评估。大语言模型与以往仅能完成单一任务的自然语言处理算法不同,它可以通过单一模型执行多种复杂的自然语言处理任务。因此,之前针对单一任务的自然语言处理算法评估方法并不适用于大语言模型的评估。如何构建大语言模型评估体系和评估方法是一个重要的研究问题。
大语言模型评估的基本概念和难点是基石,并在此基础上从大语言模型评估体系、
大语言模型评估方法,以及大语言模型评估实践三个方面分别展开介绍。
模型评估(ModelEvaluation),也称模型评价,目标是评估模型在未见过的数据(Unseen
Data)上的泛化能力和预测准确性,以便更好地了解模型在真实场景中的表现。模型评估是在模 型开发完成之后的一个必不可少的步骤。目前,针对单一任务的自然语言处理算法,通常需要构造独立于训练数据的评估数据集,使用合适的评估函数对模型在实际应用中的效果进行预测。由于并不能完整了解数据的真实分布,因此简单地采用与训练数据独立同分布的方法构造的评估数据集,在很多情况下并不能完整地反映模型的真实情况。如图8.1所示,针对相同的训练数据,采用不同的算法或者超参数得到4个不同的分类器,可以看到,如果不能获取数据的真实分布,或者测试数据采样不够充分,分类器在真实使用中的效果就不能很好地通过上述方法进行评估。在模型评估的过程中,通常会使用一系列评估指标(EvaluationMetrics)来衡量模型的表现,如准确率、精确率、召回率、F1分数、ROC曲线和AUC等。这些指标根据具体的任务和应用场景可能会有所不同。例如,在分类任务中,常用的评估指标包括准确率、精确率、召回率、F1分数等;而在回归任务中,常用的评估指标包括均方误差和平均绝对误差等。但是对于文本生成类任务(例如机器翻译、文本摘要等),自动评估仍然是亟待解决的问题。
传统的自然语言处理算法通常需要针对不同任务独立设计和训练。而大语言模型则不同,它
采用单一模型,却能够执行多种复杂的自然语言处理任务。例如,同一个大语言模型可以用于机器翻译、文本摘要、情感分析、对话生成等多个任务。因此,在大语言模型评估中,首先需要解决的就是构建评估体系的问题。从整体上可以将大语言模型评估分为三个大的方面:知识与能力、伦理与安全,以及垂直领域评估。
在大语言模型评估体系和数据集构建的基础上,评估方法需要解决如何评估的问题,包括采
用哪些评估指标,以及如何进行评估等。。
大语言模型的评估伴随着大语言模型研究同步飞速发展,大量针对不同任务、采用不同指标
和方法的大语言模型评估不断涌现。本章前面几节分别针对大语言模型评估体系、评估指标和评 估方法从不同方面介绍了当前大语言模型评估面临的问题,试图回答要从哪些方面评估大语言模型,以及如何评估大语言模型这两个核心问题。针对大语言模型构建不同阶段所产生的模型能力的不同,本节将分别介绍当前常见的针对基础模型、SFT模型和RL模型的整体评估方案。本人接触不到。只能苦笑。
|