本文目录导航:
预训练语言模型:GLM
近期,大语言模型(LLMs)引发了全球热议,尤其在国内,开源模型不断涌现。
尽管大多数模型以接口形式提供服务,但清华大学开源的ChatGLM系列令人眼前一亮。
其安装便捷,易于调整以适应个人数据集,成为了我训练自定义大模型的理想选择。
ChatGLM的基础模型是GLM,它的一大创新在于自回归空白填充的自监督训练方法。
通过调整空白区域的大小,GLM既能像encoder-only模型处理NLU(文本分类),又能像decoder-only模型进行NLG(文本生成),还能像seq-to-seq模型进行条件NLG(如对话、机器翻译)。
这种预训练方式实现了编码器、解码器和序列到序列结构的融合,效率非凡。
现有的预训练语言模型大致分为三种:encoder-only(如BERT)、decoder-only(如GPT)和seq-to-seq(如BART)。
GLM的目标是设计一个通用架构,GLM通过自回归空白填充,结合跨度洗牌和2D位置编码,实现了这些模型功能的统一。
空白填充类似于BERT的掩码语言模型,但GLM处理的是句子片段,通过自回归预测内容,相比其他模型,GLM在连续性和长度生成上更具优势。
2D位置编码赋予每个token额外的片段间和片段内位置信息,确保模型在预测时灵活处理不同长度的文本。
GLM采用decoder-only架构,对模型结构做了优化,能够进行多任务训练,如文档级别的长文本生成和句子级别的seq-to-seq任务。
此外,GLM还能通过填空生成的方式适应NLU任务,无需额外的[CLS]标志。
GLM的训练数据集丰富多样,参数量适中,虽未达到大模型的规模,但其开源特性使其成为研究和实践的宝贵资源。
随着ChatGLM系列的后续发展,如ChatGLM2,GLM无疑为预训练语言模型领域开辟了新的可能。
大型语言模型(LLM)训练指南🚀
近年来,大型语言模型的训练规模日益增长,以悟道 2.0 模型为例,其参数量达到 1.75T,是 GPT-3 的 10 倍。
然而,对于如何高效训练大型语言模型的信息却相对较少。
本文将整理出简单的训练指南,以助于深入了解这一过程。
以 BLOOM-175B 的训练为例,本文将分阶段介绍训练过程中的关键要素。
首先,硬件设施的选择至关重要。
BLOOM 的训练采用了一套硬件配置,具体细节可参考相关文档。
其次,模型训练涉及多个并行技术,包括数据并行、张量并行以及管道并行等。
在数据并行中,模型被复制到多个 GPU 上,并在每次迭代后同步状态。
通过在 N 台机器上复制模型,数据拆分以减少每台机器的工作量,并提高训练速度,前提是模型能够适应单个 GPU。
对于大规模模型,ZeRO 数据并行技术尤为有效,它通过优化器状态、梯度和参数的划分,显著减少显存冗余,使集群显存容量得到充分利用。
此技术在训练万亿参数模型时,仅需约 16GB 内存,大幅降低了内存需求。
张量并行则关注于权重矩阵的分割,以实现跨 GPU 的并行计算。
通过 Megatron-LM 论文中的实现,大型模型的并行计算得以高效进行,尤其是在 Transformer 架构中。
管道并行则通过将模型层分布在多个 GPU 上,实现数据的高效传输和计算,有效解决了 GPU 闲置问题。
通过调整超参数,如块大小,以实现 GPU 利用的最大化,从而减少通信开销。
将数据并行、张量并行和管道并行结合,形成 3D 并行,即在硬件层面实现三维的并行化,以达到更高的训练效率。
NCCL 库提供了高性能的多 GPU 通信支持,通过优化多 GPU 间的集体通信,如广播、聚合等操作,显著提升了训练速度。
在实际应用中,大型语言模型训练面临着 FP16 的局限性,特别是数值稳定性和精度问题。
BF16 格式被引入以解决这些挑战,它具有与 FP32 相同的指数位,能够避免溢出问题,同时保持较高的计算效率。
BF16Optimizer 的使用确保了在管道并行训练中的梯度累积能够保持精确性,从而实现高效的混合精度训练。
综上所述,本文整理了大型语言模型训练的关键步骤和策略,包括硬件设施的选择、并行技术的应用、通信库的优化等,为训练大规模模型提供了实用的指南。
通过采用这些方法,可以有效提高训练效率,降低资源消耗,实现高效、稳定的大型语言模型训练过程。
NTC训练是什么
NTC训练是一种神经语言模型训练方法,旨在通过大规模语料库的训练来提升模型的语言理解和生成能力。
具体来说,NTC训练采用了转移学习(Transfer Learning)的策略。
首先,模型在一个大规模的未标注语料库上进行预训练,学习语言的基本结构和规律。
这个预训练过程通常采用自监督学习(Self-Supervised Learning)的方式,比如通过预测被掩盖的词语或者预测整个句子的顺序等任务来训练模型。
在预训练的基础上,NTC训练会进一步采用有监督学习(Supervised Learning)的方式对模型进行微调(Fine-tuning)。
这一步通常需要使用带有标注信息的数据集,比如文本分类、情感分析、问答等任务的数据集。
通过在这些任务上进行训练,模型可以学习到更加具体和精确的语言理解和生成能力。
NTC训练的优势在于,它可以通过在大规模语料库上的预训练来学习到语言的基本结构和规律,从而为后续的有监督学习提供强大的基础。
同时,由于预训练过程中采用的是自监督学习的方式,因此不需要大量的标注数据,从而降低了训练成本。
另外,NTC训练还可以通过微调来适应不同的任务和数据集,使得模型在实际应用中更加灵活和高效。
举个例子,假设我们要训练一个用于文本分类的模型。
我们可以先在一个大规模的未标注语料库上进行NTC训练,让模型学习到语言的基本结构和规律。
然后,我们可以使用带有分类标签的文本数据集对模型进行微调,让模型学习到如何将文本分类到不同的类别中。
通过这样的训练过程,我们可以得到一个既具备语言理解能力又具备分类能力的模型,从而在实际应用中取得更好的效果。
总之,NTC训练是一种有效的神经语言模型训练方法,它通过在大规模语料库上的预训练和有监督学习的微调来提升模型的语言理解和生成能力。
这种方法不仅可以降低训练成本,还可以提高模型的灵活性和效率,使得模型在实际应用中更加出色。
评论(0)