第一步:筑基——“数字藏经阁”的广博与精纯
怎么获取?
一般来说就是使用机器人或爬虫从网站提取数据的自动化网络抓取,以及访问在线平台提供的应用程序编程接口(API)以检索结构化数据。
另外,Kaggle或UCI机器学习存储库等公开数据集和存储库也作为宝贵来源。
此外,像Amazon Mechanical Turk这样的众包平台,会雇佣人工标注员来收集或标注数据,从而增加数据集的多样性和丰富性。
未经处理的原始数据很少是纯净的;
它通常包含不准确、不一致和不相关的信息。
还可能有一些有害的信息,这个就不展开说了。
懂得都懂,除非家里没有通网。
因此,数据清洗成为LLM有效训练的关键但具有挑战性的先决条件。
数据清洗,也不是完全的去除有害信息。
所以数据清洗的动作包括:
1:数据去重:
识别并删除相同或近似重复的内容对于防止冗余训练和“过拟合”至关重要,过拟合是指模型过度记忆训练数据,导致在新、未见过的信息上表现不佳的现象。为此,采用了MinHash或局部敏感哈希(LSH)等技术。
此步骤确保内容仅为所需语言,丢弃嘈杂的多语言数据或与目标语言无关的内容。
系统地消除低质量内容,例如垃圾邮件、重复文本或因过多语法错误或不完整句子而损坏的文档。
N-gram分析或启发式规则(例如,基于字数或标点密度)等自动化方法有助于识别此类内容。
为了确保模型获得平衡的学习体验,此技术避免了常见主题的过度表示。
这可能涉及按数据集多样性比例采样数据,或为来自特定来源的相似文档设置阈值。
LLM训练数据集的巨大规模(通常达到TB甚至PB级别)使得手动数据质量检查几乎不可能。这需要强大的自动化数据清洗系统,以防止错误和偏见在模型中传播,否则可能会损害其准确性和可靠性。
这个一步的目标是确保LLM从准确、相关且无偏见的信息中学习,从而产生更准确、公正和灵活的输出。
第二步:“经脉重塑”——Transformer架构
在此架构中,有三种主要变体:仅编码器(Encoder)、仅解码器(Decoder)和编码器-解码器(也称为序列到序列)模型。
以GPT系列为例,是“自回归”模型,仅根据前面的单词预测序列中的下一个单词。它们的注意力层是因果掩码的,这意味着它们只能“看到”已经生成或在序列中位于其左侧的标记。
如BART和T5,结合了Transformer的两个部分。编码器双向处理输入序列,而解码器单向生成输出序列,仅关注先前的输出标记和编码器的输出。这些模型非常适合涉及将一个序列转换为另一个序列的任务,例如机器翻译或摘要。
仅解码器
大多数现代LLM,包括广为人知的GPT模型,都采用这种仅解码器架构,因为它简单、可扩展,并且能够高效地在大量无监督数据上进行预训练。
这可是当今的“主流心法”,就像deepseek那样,专长就是“妙语连珠”,适合生成文本。
这种设计简化了训练过程,并避免了编码器-解码器模型中随着层数加深可能出现的信息瓶颈。
这种机制通过直接从输入序列生成上下文感知向量来操作。
它可以使用涉及查询(Q)、键(K)和值(V)的数据库类比来概念化。
想象一下句子中的每个单词都是一个“查询”,试图找到相关的“键”(句子中的其他单词)。
注意力权重量化了每个键与查询的匹配程度。
一旦确定了这些匹配,就根据这些注意力分数对“值”(单词向量本身)进行加权并求和,为每个单词创建新的、富含上下文的表示。
这个过程允许模型动态地关注输入序列中与每个单词最相关的部分,显著增强了其理解单词上下文含义的能力。
同时计算所有单词的注意力进一步加快了处理速度,与旧的顺序方法相比。
这些标记可以是单个单词、子词,甚至是字符,具体取决于所选择的方法。
对于LLM,通常使用子词分词方法,如字节对编码(BPE)、WordPiece和SentencePiece。
这些方法之所以受到青睐,是因为它们在词汇量和序列长度之间取得了平衡。
如果每个独特的单词都是一个标记,词汇量将非常庞大,使模型计算成本高昂。
如果每个字符都是一个标记,序列将非常长,使Transformer的固定上下文窗口更难捕获长距离依赖关系。
子词分词通过将罕见词分解为常见的子词单元(例如,“unhappiness”分解为“un”、“happi”、“ness”)来解决这个问题,从而使模型能够处理未见过的单词并提高泛化能力,同时保持词汇量可管理且序列长度合理。
然后,每个标记被分配一个唯一的整数ID。
这些向量是高维数值表示,捕获输入的语义和句法含义。
想象一下,具有相似含义或语法角色的单词被映射到这个多维空间中彼此靠近的点。
这些向量属性在训练过程中学习,使模型能够以数学方式理解单词之间的关系。
因为Transformer架构由于其并行处理的性质,本身不按顺序处理序列数据。
没有位置编码,模型将丢失句子中单词顺序的信息。
位置编码为每个标记的嵌入添加独特的数值信号,指示其在序列中的位置。
这使得模型能够保留标记的顺序并理解序列上下文,这对于语言生成等任务至关重要,因为词序至关重要。
分词与嵌入: 把文章拆成一个个小“零件”(Token),然后给每个零件赋予一个数学上的“内力值”(向量)。
位置编码: 这就像给每个“零件”编号,告诉模型它们在句子里的相对位置。
不然,模型就不知道“我爱你”和“你爱我”有什么区别了。
第三步:内功修炼——“闭关苦修”的预训练
我们所说的大模型的训练,一般就是指的这一步。
预训练阶段是LLM教育的初始阶段,也是资源最密集阶段。
涉及将模型暴露于大量未标记的文本数据集,本质上是让它“阅读”大量的书籍、文章和网站。
在这个自监督学习过程中,模型处理数十亿个单词,学习基本模式、语法、语义和世界知识。
预训练有两个主要目标,具体取决于模型的架构:
因果语言建模(CLM):
主要由GPT等仅解码器模型使用,CLM训练模型在给定所有前置标记的情况下预测序列中的下一个标记。
这种单向方法模仿了人类自然生成语言的方式,使这些模型在文本生成任务中非常有效。
模型通过迭代预测下一个单词来提高生成连贯和相关响应的能力。
掩码语言建模(MLM):
由BERT等仅编码器模型采用,MLM涉及掩盖输入序列中一定百分比的标记,并训练模型根据周围上下文预测这些被掩盖的标记。
这种方法提供了“双向”理解,允许模型在进行预测时考虑前置和后继单词。MLM对于需要深入上下文理解的任务特别有效,例如情感分析或信息检索。
就像给模型一道完形填空题,“郭靖[ ]了降龙十八掌”,让它猜是“学会”了还是“修炼”了。
在这两种情况下,模型的参数(权重)最初是随机的,并通过无数次迭代进行调整,以反映训练数据中的统计模式。
模型输出可能下一个标记的概率分布,并且“正确”的标记以自回归方式反馈到网络中,继续生成过程。
这种广泛的暴露使模型能够学习语言的工作原理,包括语法、语义和事实知识,而无需对每个数据片段进行显式的人工标注。
训练LLM需要大量的钱和计算资源。
这主要源于对强大硬件的需求,特别是高端图形处理单元(GPU)或专用AI加速器,如张量处理单元(TPU),这些设备购置和运行成本高昂。
例如,虽然2017年原始Transformer模型的训练成本约为900美元。
但2020年训练GPT-3(1750亿参数)的计算成本估计在50万美元到460万美元之间。更
近期的模型将这些成本推得更高。
GPT-4的估计成本超过1亿美元。
谷歌的Gemini Ultra训练计算成本估计为1.91亿美元。
费用不仅仅是GPU本身,还包括CPU、内存、存储和分布式设置所需的高速网络等支持资源。
漫长的训练运行,通常持续数月,意味着这些成本会显著累积,尤其是在对大量数据集进行多次迭代的情况下。
这种在硬件和能源消耗方面的巨额投资,对于许多希望从头开始训练LLM的组织来说,是一个主要的进入壁垒。
第四步:融会贯通——“招式精修”的微调与对齐
微调涉及获取一个预训练的LLM,并在一个更小、更专业的数据集上对其进行进一步训练,以使其能力适应特定目标。
可以将其视为将广泛的技能提炼为特定主题的专业知识。
例如,一个通用LLM可能会生成通用的法律条款。通过在法律文件、案例研究和法规数据集上进行微调,该模型在起草法律特有的法律准确文件方面会显著提高。
此过程调整模型的预训练权重,使其能够“内化”新的、特定于任务的信息和模式。
当使用规模证明前期训练成本合理时,微调是理想的选择,因为它将所需信息直接编码到模型中,确保一致且高效的响应,而无需在推理过程中进行外部检索。
这是一种直接训练方法,其中预训练模型在由人类专家整理的高质量、标记数据集(包含输入-输出对)上进行进一步训练。
就像得到高人指点,针对某个特定武功招式进行集中训练。
比如,你想让模型擅长写诗,就用大量的诗歌作为“训练教材”,让模型学会作诗的韵律和意境。
这是一种直接且高效的训练方法。
它通常比其他方法更简单,计算成本更低,并且由于直接在标记数据上进行训练,因此更稳定。在高质量数据的情况下,SFT在某些场景下可以实现与更复杂方法相当甚至更优的结果,使其成为一个直接且高效的选择。
这是一种更复杂、迭代的方法,在训练过程中将人类反馈作为奖励信号。
该过程通常从初始SFT阶段开始,为模型提供一个坚实的起点。
首先,人类专家对模型的输出进行评估和排名。
然后,利用这些人类反馈训练一个“奖励模型”,它能判断模型的输出好坏
最后,模型根据“奖励模型”的反馈,不断调整自身行为,使其生成的内容更符合人类的偏好——有用、诚实且无害。
微调是让大模型从“通才”变为“专才”的关键。它让模型的通用能力落地生根,解决具体的实际问题。
RLHF更是赋予模型“人性”,使其输出更符合人类的价值观和偏好。
第五步:华山论剑——“武功考核”的评估与基准测试
“绝世神功”练成后,最终要通过“华山论剑”来检验。
大模型也是如此,需要通过各种评估与基准测试来衡量其“武功”高低。
LLM如何被评判
评估大型语言模型的性能对于理解其能力和指导其发展至关重要。
这主要通过LLM基准测试来完成
基准测试一系列技能,包括语言理解、问答、数学问题解决和编码任务。
示例包括HellaSwag、BigBench、TruthfulQA和用于编码的HumanEval。模型通过不同的方法引入这些基准测试:
LLM在没有任何先验示例的情况下被提示完成任务,揭示其理解新概念和适应新场景的能力。
2:少样本学习:
LLM在被提示之前提供少量相关的训练示例,给出少量例子,模型就能迅速掌握,考验其“触类旁通”能力。
3:微调:
模型已在与基准测试使用的数据集相似的数据集上进行了专门训练,旨在优化其在该特定任务上的性能。
测试完成后,基准测试会计算模型输出与预期解决方案或“真实”答案的相似程度,生成一个分数,通常在0到100之间。
常用指标包括准确率(正确预测的百分比)、召回率(真阳性数量)和F1分数(结合两者)。对于翻译或问答等任务,“精确匹配”是一个有价值的标准。
评估并非万能。
我们需要警惕:
数据污染:
就像考前泄题,如果模型在训练时就接触过考题,成绩会虚高。
模型可能已经在它们后来被测试的数据上进行了训练。这种重叠可能会人为地夸大性能指标,从而难以衡量模型的真实泛化能力。
偏见与幻觉:
模型可能会像走火入魔般产生虚假信息或带有偏见的输出,需要持续关注和修正。
评估不是考试,
考完就结束了。
评估是不断完善模型的重要环节。它帮助我们发现模型的长处和短板,指导我们如何进一步“精进武功”,使其变得更强大、更可靠。
结语:你的“大模型之路”才刚刚开始
从零开始训练大型语言模型是一项艰巨的任务,
需要巨大的计算资源、海量且精心策划的数据集以及深厚的技术专业知识。
此过程中固有的挑战,谁也没有办法绕过。
但是有一种捷径。
就是利用别人开源预训练的结果进行微调。
但是开源有开源的规则,要标注好引用。
但是,
和从零开始打造出属于自己的大模型相比,那种成就感将是无与伦比的。
预训练大模型这一步,是练就童子功。
预训练的童子功不是用来打架的。
但没有童子功,后面的精妙招式都是空中楼阁。