赞
踩
本文分享自华为云社区《【云驻共创】华为云之昇思MindSpore大模型专题(第二期)-第一课:ChatGLM》,作者: 愚公搬代码。
昇思MindSpore是华为公司推出的一款全场景AI计算框架。它提供了自动微分、分布式训练和推理、模型部署等功能,支持多种硬件平台,包括CPU、GPU和Ascend AI 处理器。MindSpore采用图和算子相结合的编程模型,能够高效地处理复杂的深度学习任务。它具有灵活的设计、高效的性能和易于使用的接口,使开发者能够更快地开发和部署AI应用。MindSpore还支持自定义操作和算法,可以满足不同场景下的需求。
大模型是指具有数百万到数十亿个参数的深度学习模型。这些模型通常用于处理大规模数据集,并能够在各种任务上取得出色的性能。大模型通常需要大量的计算资源进行训练,并且需要更长的时间来收敛。然而,由于其具有更多的参数,大模型可以更好地捕捉数据中的复杂关系,从而提升模型的预测性能。大模型的应用范围非常广泛,包括自然语言处理、计算机视觉、语音识别等领域。
ChatGLM是一种生成式语言模型,用于聊天和对话任务。它是基于OpenAI的GPT模型框架构建的,采用了大规模的预训练数据集来学习语言模式和生成文本的能力。ChatGLM可以理解上下文并生成连贯、自然的回复。它可以用于构建对话系统、智能客服、聊天机器人等应用,能够提供更加交互性和人性化的对话体验。ChatGLM模型的训练和优化过程需要大量的计算资源和数据,而且模型的生成性质也需要进行适当的监督和过滤,以确保生成的回复符合预期的行为准则和标准。
Evolution Tree of LLMs(Language Model Megasuite的演化树)是指由OpenAI发布的一系列语言模型的历史和演化关系图。
OpenAI的LLMs系列是一系列基于深度学习的语言模型,旨在生成人类语言的自然文本。这些模型中的每一个都是通过对大量文本进行训练而得到的,可以用于自动回答问题、生成文章、翻译文本等自然语言处理任务。
Evolution Tree of LLMs图中展示了这些模型的发展历程。从最早的模型开始,每个后续模型都是在前一个模型的基础上进行改进和扩展。这些改进可能涉及模型的规模增加、训练数据的增加、架构的改进等。通过不断地改进和提升模型,OpenAI致力于推动语言模型的发展,使其在各种自然语言处理任务上表现更加出色。
Evolution Tree of LLMs图不仅展示了各个模型之间的关系,还反映了OpenAI在不同时间点的研究重点和技术进展。这个图可以帮助研究人员和开发者了解LLMs系列的发展历程,从而更好地理解和应用这些语言模型。
“Autoregressive”、"Autoencoding"和"Encoder-Decoder"是三种常见的神经网络模型结构,用于处理序列数据或生成模型。
自然语言处理领域的GPT(Generative Pre-trained Transformer)系列模型是由OpenAI开发的一系列强大的自然语言处理模型。下面是GPT系列模型的发展历程:
Autoregressive Blank Infilling(ABI)是一种用于填充时间序列数据中缺失值的方法。在时间序列数据中,由于种种原因,可能会存在一些缺失值,这些缺失值会影响数据的完整性和准确性。ABI方法通过基于自回归模型,利用其他已有的数据来预测并填补缺失值。
ABI方法的基本思想是根据时间序列数据的自相关性,使用已有的数据点来逐个预测缺失值。具体来说,ABI方法使用AR模型(自回归模型)来建模时间序列数据中的缺失值和非缺失值之间的关系。然后,根据该模型,利用其他已有的数据点来预测缺失值的数值。
ABI方法在填充缺失值时,通常还会考虑一些其他因素,如数据的趋势、季节性和周期性等。通过综合考虑这些因素,ABI方法能够更准确地填充缺失值,从而提高数据的完整性和可靠性。
案例片段介绍如下:
顺序分为A部分和B部分:
如果多个跨度被遮罩,它们将在B部分中被打乱
B部分中的每个跨度都以[S]作为输入,以[E]作为输出。
该模型自回归生成B部分——它基于前一部分预测下一个令牌。
A部分可以自行处理,但不能处理B部分
B部分可以关注A及其在B中的经历
Multi-Task Pretraining是一种多任务预训练的方法。在传统的预训练方法中,语言模型通过在大规模文本数据上进行训练来学习语言的通用模式和表示。然而,在Multi-Task Pretraining中,模型同时在多个任务上进行训练,这些任务需要不同类型的语言理解能力。
Multi-Task Pretraining的思想是通过在多个任务上训练语言模型,可以学习到更加通用和鲁棒的语言表示。这是因为不同的任务需要不同的语言技能,如句法分析、语义理解或文档级连贯性。通过让模型接触多样化的任务,它可以学习捕捉不同任务之间的共同语言模式,并利用这些模式更好地泛化到新任务上。
Multi-Task Pretraining已被证明可以提高语言模型在下游任务上的性能。例如,预训练在多个任务上的模型在各种自然语言处理基准测试中取得了最先进的结果,如问答、文本分类和命名实体识别。
其中一种常见的Multi-Task Pretraining方法是基于Transformer的模型,如BERT(双向编码器表示来自Transformer的方法)和RoBERTa(经过优化的鲁棒BERT方法)。这些模型在掩码语言建模、下一个句子预测和其他辅助任务上进行预训练。
案例片段介绍如下:
通过改变遮盖内容的长度和数量,从而使模型能够基于natural language understanding, conditional generation, unconditional generation三类任务进行预训练,实现“三合一”
改变缺失跨度的数量和长度:
Finetuning是指在预训练的基础上,将模型进一步调整和优化以适应特定任务或特定数据集的过程。在机器学习中,预训练模型通常在大规模的数据上进行训练,学习到通用的模式和特征表示。然而,这些预训练模型可能不直接适用于特定的任务或数据集。
通过Finetuning,可以利用预训练模型的通用知识和特征表示来快速适应特定的任务或数据集。这通常涉及解冻预训练模型的一部分或全部层,并在目标任务上进行进一步的训练。通过在目标任务上微调模型参数,可以使其更好地适应任务的特定要求和数据特征。
Finetuning的过程通常包括以下步骤:
Finetuning可以大大减少在特定任务上的训练时间和样本需求,同时利用预训练模型的知识提供了更好的初始参数和特征表示。它已经被广泛应用于自然语言处理、计算机视觉和其他领域中的许多任务,如文本分类、问答、命名实体识别等。
案例片段介绍如下:
GLM将NLG和NLU类下游任务统一为完型填空的生成式任务,如对于分类任务,将输入x写成一个填空问题c(x),后将生成的答案v(y)映射至标签y
LLM(Large Language Model)是指一种非常大的语言模型,它由数十亿个参数组成,具有强大的语言理解和生成能力。大模型LLM可以实现诸如问答、摘要、对话生成等任务,被广泛应用于自然语言处理领域。
LLM Reversal Curse(逆转诅咒)是指在使用大模型LLM进行任务生成时,其生成结果出现明显的逆转或反转现象。具体而言,当模型用于生成某个任务的结果时,相比原始输入,生成的结果可能会出现与原始意图相反的内容或表达。
例如,在问答任务中,当用户提出一个问题时,大模型LLM应该生成一个准确且与问题相符的答案。然而,由于模型的复杂性和训练数据的特点,有时候模型会出现生成与问题相反甚至荒谬的答案的情况。
这种逆转诅咒可能是由于模型在训练过程中接触到了大量的噪声数据、错误标注的数据或具有偏见的数据,导致模型在生成过程中出现了一些意料之外的结果。
为了解决大模型LLM的逆转诅咒问题,需要进一步优化模型的训练数据、标注过程和生成算法,以提高模型的生成质量和准确性。
案例片段介绍如下:
2D positional encoding是一种将2D网格或图像中元素的位置信息进行编码的技术。位置编码通常在自然语言处理任务中使用,例如机器翻译或语言建模,来表示句子中单词的顺序或位置。然而,它也可以应用于2D网格或图像。
对于2D网格或图像,位置编码可以用于编码每个元素的空间位置。这样,模型可以有一种对元素之间的相对位置的感知,并捕捉它们之间的空间关系。
一个常见的2D位置编码的方法是使用不同频率的正弦和余弦函数。其思想是创建一个根据网格或图像内位置而变化的正弦信号。然后将这个位置编码作为每个元素在网格或图像中的额外输入或特征。
位置编码可以使用以下公式定义:
- PE(x,2i) = sin(x / (10000^(2i / d_model)))
- PE(x,2i+1) = cos(x / (10000^(2i / d_model)))
其中,PE(x, i)表示位置i处元素x的位置编码,d_model是模型的维度。
通过使用正弦和余弦函数的不同频率,位置编码可以捕捉位置信息中的不同模式或关系。
案例片段介绍如下:
模型输入的position ids分为两种,从而使得模型可以学习到片段生成的长度
Position 1: Part A中token的绝对位置
Position 2:intra-span position,masked span内部的相对位置
GLM-130B是一个稳定训练方法,它是机器学习中的一种算法。GLM代表广义线性模型,130B表示这个算法的特定版本。
稳定训练方法是指通过一定的技巧和策略来增强模型的稳定性和鲁棒性,使其能够更好地处理噪声和异常数据。在训练过程中,稳定训练方法会对输入样本或特征进行一些改变或调整,以减少模型对于噪声的敏感性。
GLM-130B的稳定训练方法可能包括以下几个方面:
案例片段介绍如下:
Attention score 层:Softmax in 32 避免上下溢出
调小 Embedding 层梯度,缓解前期梯度爆炸问题
word_embedding = word_embedding * alpha + word_embedding .detach() * (1 ‒ alpha)
有时候需要进行多次实验来确定最佳的架构设计。这些实验可能包括调整不同的参数、添加或移除不同的组件,以及测试不同的配置选项。GLM-130B是根据这些实验的结果和分析,确定出的最佳架构。
案例片段介绍如下:
DeepNorm:稳定训练 1000 层 Post-LN 的方法
旋转位置编码(RoPE):适用于 GLM 的相对位置编码
门控注意单元(GLU):FFN 层的替换,稳定提升模型性能
Post LayerNorm(后层归一化)是一种神经网络层归一化的方法,用于解决深层神经网络中梯度消失和梯度爆炸问题。传统的 LayerNorm(层归一化)是在每个神经网络层的输入上进行归一化操作,而 Post LayerNorm 是在每个神经网络层的输出上进行归一化操作。
具体来说,在每个神经网络层的输入和激活函数之间,先进行 LayerNorm 的归一化操作,然后再进行激活函数的计算。这样可以使得每个神经网络层的输出都在相似的尺度上,避免了梯度消失和梯度爆炸的问题。
与之相比,传统的 LayerNorm 在每个神经网络层的输入上进行归一化操作,但在深层网络中,由于每层的输入分布不稳定,因此归一化操作的效果可能会下降。而 Post LayerNorm 能够在每个神经网络层的输出上进行归一化操作,保证了归一化的效果,提高了网络的稳定性和训练效果。
Post LayerNorm 是在 Transformer 网络中被提出的,并在各个任务上取得了显著的性能提升。它被认为是一种更加有效和稳定的归一化方法,在大规模深层网络的训练中具有重要的作用。
案例片段介绍如下:
重新排列层规范化和剩余连接的顺序
GLU(Gated Linear Unit)是一种门控线性单元,用于增强神经网络的表示能力。通过将GLU应用于MindSpore框架中的大型模型,可以进一步提升模型的性能和效果。
GLU的核心思想是将输入进行分割成两部分,然后通过门控机制控制两部分的信息传递。这种门控机制可以帮助模型更好地理解输入数据中的相关性,从而提高模型的表达能力和泛化能力。
在MindSpore框架中,GLU可以被用于各种任务,包括自然语言处理、计算机视觉和语音识别等。通过使用MindSpore大模型GLU,研究人员和开发人员可以更轻松地构建和训练复杂的模型,并获得更好的结果。
案例片段介绍如下:
用GeLU替换ReLU激活
存下 GPT-3 模型需要 2.8T 显存存放训练状态 + 中间激活函数值
挑战:远超单卡显存(40GB),采取何种并行方式高效训练?
远超单卡显存,如何高效训练?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。