广告

不抄袭开源模型的情况下,从零训练一个大模型5个步骤

2025-07-09 歪睿老哥 阅读:
从零开始训练大型语言模型是一项艰巨的任务,需要巨大的计算资源、海量且精心策划的数据集以及深厚的技术专业知识。
我们都知道训练一个大模型都是家里有矿的人才能干的事情。
但是到底需要多少张GPU卡?
训练规模从千卡到万卡,到十万卡。
例如:马斯克的grok就是十万卡H100训练出来的。
而deepseek v3则是2048张H800训练出来的。
所以从零开始训练,我们需要有个大的炼丹炉(万卡的智算集群)。
毕竟大代表着“算力高”。
有了大的炼丹炉(智算集群),才是训练大模型的基础。
而接下来才是展示真正技术的时刻

第一步:筑基——“数字藏经阁”的广博与精纯BUMednc

大模型的全称叫做,LLM(Large Language Model)
顾名思义,这就是处理语言的模型。
而训练LLM的第一步就是收集原始材料,获取海量文本
这些海量高质量数据,训练LLM的基础,这些通常称为“语料库”
这些原始材料不可或缺,因为它教会模型语法的复杂性、事实知识和常见的语言模式
数据从哪里来,坦白来说,
来源极其多样,包括维基百科、Common Crawl(一个庞大的网页档案)、GitHub(用于代码)和古腾堡计划(用于公共领域书籍)等公共存储库
对于专业的大模型,例如对于为法律或医疗应用等专业领域设计的LLM,纳入法律文件、案例研究或医疗记录等领域特定数据至关重要  

怎么获取?BUMednc

一般来说就是使用机器人或爬虫从网站提取数据的自动化网络抓取,以及访问在线平台提供的应用程序编程接口(API)以检索结构化数据BUMednc

另外,Kaggle或UCI机器学习存储库等公开数据集和存储库也作为宝贵来源BUMednc

此外,像Amazon Mechanical Turk这样的众包平台,会雇佣人工标注员来收集或标注数据,从而增加数据集的多样性和丰富性BUMednc

未经处理的原始数据很少是纯净的;BUMednc

它通常包含不准确、不一致和不相关的信息BUMednc

还可能有一些有害的信息,这个就不展开说了。BUMednc

懂得都懂,除非家里没有通网。BUMednc

因此,数据清洗成为LLM有效训练的关键但具有挑战性的先决条件BUMednc

数据清洗:确保质量、消除偏见和道德考量BUMednc

数据清洗,也不是完全的去除有害信息。BUMednc

所以数据清洗的动作包括:BUMednc

1:数据去重:BUMednc

识别并删除相同或近似重复的内容对于防止冗余训练和“过拟合”至关重要,过拟合是指模型过度记忆训练数据,导致在新、未见过的信息上表现不佳的现象。为此,采用了MinHash或局部敏感哈希(LSH)等技术  BUMednc

把那些重复啰嗦的“套路”给删掉,免得模型学僵了,老是说车轱辘话。BUMednc

2:语言过滤:BUMednc

此步骤确保内容仅为所需语言,丢弃嘈杂的多语言数据或与目标语言无关的内容  BUMednc

3:内容质量过滤:BUMednc

系统地消除低质量内容,例如垃圾邮件、重复文本或因过多语法错误或不完整句子而损坏的文档。 BUMednc

这一步那些没营养的“街头小报”内容,直接扔掉,咱只要“真传”。BUMednc

N-gram分析或启发式规则(例如,基于字数或标点密度)等自动化方法有助于识别此类内容BUMednc

4:冗余过滤:BUMednc

为了确保模型获得平衡的学习体验,此技术避免了常见主题的过度表示。BUMednc

这可能涉及按数据集多样性比例采样数据,或为来自特定来源的相似文档设置阈值  BUMednc

5:数据标准化:
这涉及标准化文本格式以确保统一性。常见的标准化步骤包括将所有文本转换为小写(如果不需要区分大小写)、标准化Unicode字符以及标准化引号、破折号和撇号  
6:删除敏感信息:
检测和删除个人身份信息(PII),例如姓名、地址或电话号码,否则,你在deepseek上问你想要的人的身份证或者电话就有可能拿得到,以及敏感的财务或医疗数据。
更重要的是,得把里头的什么个人隐私啊,或者带着歧视性的“歪理邪说”给剔除干净,免得你的“神功”练成了“歪门邪道”,惹人诟病。

LLM训练数据集的巨大规模(通常达到TB甚至PB级别)使得手动数据质量检查几乎不可能。这需要强大的自动化数据清洗系统,以防止错误和偏见在模型中传播,否则可能会损害其准确性和可靠性BUMednc

这个一步的目标是确保LLM从准确、相关且无偏见的信息中学习,从而产生更准确、公正和灵活的输出BUMednc

这一步,是筑基。BUMednc

地基不牢,再高的楼也盖不起来。BUMednc

数据就是大模型的“内力之源”,源头不净,迟早要出大问题。BUMednc

第二步:“经脉重塑”——Transformer架构BUMednc

有了“藏经阁”,接下来得给你的模型“重塑经脉”了。
它得有一套高效的运行机制,能把那些散乱的文字,变成能理解的、能生成的“内功真气”。
这套“经脉”,在现代大模型里,就叫Transformer架构
现代LLM的核心是Transformer架构,这是一种神经网络,旨在通过学习上下文和跟踪组件之间的关系,将输入序列转换为输出序列

在此架构中,有三种主要变体:仅编码器(Encoder)、仅解码器(Decoder)和编码器-解码器(也称为序列到序列)模型  BUMednc

仅编码器(Encoder)模型
例如BERT,仅使用Transformer的编码器部分。它们的注意力层可以同时访问输入句子中的所有单词,提供“双向”注意力。这些模型擅长需要深入理解整个输入的任务,例如句子分类、命名实体识别和抽取式问答  

仅解码器(Decoder)模型BUMednc

以GPT系列为例,是“自回归”模型,仅根据前面的单词预测序列中的下一个单词。它们的注意力层是因果掩码的,这意味着它们只能“看到”已经生成或在序列中位于其左侧的标记BUMednc

BUMednc

编码器(Encoder)-解码器(Decoder)模型BUMednc

如BART和T5,结合了Transformer的两个部分。编码器双向处理输入序列,而解码器单向生成输出序列,仅关注先前的输出标记和编码器的输出。这些模型非常适合涉及将一个序列转换为另一个序列的任务,例如机器翻译或摘要  BUMednc

仅解码器(Decoder)模型这种单向处理使其非常适合文本生成任务BUMednc

大多数现代LLM,包括广为人知的GPT模型,都采用这种仅解码器架构,因为它简单、可扩展,并且能够高效地在大量无监督数据上进行预训练BUMednc

这可是当今的“主流心法”,就像deepseek那样,专长就是“妙语连珠”,适合生成文本。BUMednc

这种设计简化了训练过程,并避免了编码器-解码器模型中随着层数加深可能出现的信息瓶颈  BUMednc

自注意力机制是Transformer架构的创新核心,它允许模型在处理每个单词时权衡序列中不同单词的重要性
这是Transformer的“武学精髓”。
它能让模型在理解一个词的时候,眼睛不光盯着这一个词,而是能同时“看到”句子里的其他词,并且判断哪个词对这个词的理解最重要。
自注意力机制不是按严格顺序处理数据,而是使模型能够同时查看序列的不同部分,并确定哪些部分彼此最相关
这对于理解上下文至关重要。
例如,
在句子“The animal didn't cross the street because it was too tired”(动物没有过马路,因为它太累了)中,自注意力机制帮助模型理解“it”指的是“animal”而不是“street”。  

这种机制通过直接从输入序列生成上下文感知向量来操作BUMednc

它可以使用涉及查询(Q)、键(K)和值(V)的数据库类比来概念化BUMednc

想象一下句子中的每个单词都是一个“查询”,试图找到相关的“键”(句子中的其他单词)。BUMednc

注意力权重量化了每个键与查询的匹配程度。BUMednc

一旦确定了这些匹配,就根据这些注意力分数对“值”(单词向量本身)进行加权并求和,为每个单词创建新的、富含上下文的表示BUMednc

这个过程允许模型动态地关注输入序列中与每个单词最相关的部分,显著增强了其理解单词上下文含义的能力BUMednc

同时计算所有单词的注意力进一步加快了处理速度,与旧的顺序方法相比  BUMednc

语言的DNA:嵌入和位置编码BUMednc

在任何文本被LLM处理之前,它必须被转换为算法可以理解的数字格式。这种转换发生在两个关键阶段:分词和嵌入,然后是位置编码。BUMednc

 分词(TokenizationBUMednc

分词是将文档或文本主体分解为称为“标记”(tokens)的更小单元的过程BUMednc

这些标记可以是单个单词、子词,甚至是字符,具体取决于所选择的方法BUMednc

对于LLM,通常使用子词分词方法,如字节对编码(BPE)、WordPiece和SentencePieceBUMednc

这些方法之所以受到青睐,是因为它们在词汇量和序列长度之间取得了平衡。BUMednc

如果每个独特的单词都是一个标记,词汇量将非常庞大,使模型计算成本高昂。BUMednc

如果每个字符都是一个标记,序列将非常长,使Transformer的固定上下文窗口更难捕获长距离依赖关系BUMednc

子词分词通过将罕见词分解为常见的子词单元(例如,“unhappiness”分解为“un”、“happi”、“ness”)来解决这个问题,从而使模型能够处理未见过的单词并提高泛化能力,同时保持词汇量可管理且序列长度合理BUMednc

然后,每个标记被分配一个唯一的整数ID  BUMednc

输入嵌入(Input Embeddings)BUMednc

输入嵌入将这些整数表示的标记转换为数学向量BUMednc

这些向量是高维数值表示,捕获输入的语义和句法含义BUMednc

想象一下,具有相似含义或语法角色的单词被映射到这个多维空间中彼此靠近的点。BUMednc

这些向量属性在训练过程中学习,使模型能够以数学方式理解单词之间的关系  BUMednc

位置编码(Positional EncodingBUMednc

因为Transformer架构由于其并行处理的性质,本身不按顺序处理序列数据BUMednc

没有位置编码,模型将丢失句子中单词顺序的信息。BUMednc

位置编码为每个标记的嵌入添加独特的数值信号,指示其在序列中的位置BUMednc

这使得模型能够保留标记的顺序并理解序列上下文,这对于语言生成等任务至关重要,因为词序至关重要  BUMednc

分词与嵌入: 把文章拆成一个个小“零件”(Token),然后给每个零件赋予一个数学上的“内力值”(向量)。BUMednc

位置编码: 这就像给每个“零件”编号,告诉模型它们在句子里的相对位置。BUMednc

不然,模型就不知道“我爱你”和“你爱我”有什么区别了。BUMednc

架构这一步,是打通任督二脉。
光有数据,没有好的架构,就像有再多内力也使不出来。

第三步:内功修炼——“闭关苦修”的预训练BUMednc

前面两步都到位了,接下来就是真刀真枪的“闭关苦修”了。
这可是最漫长、最烧钱、也最见真功夫的一步——预训练。

我们所说的大模型的训练,一般就是指的这一步。BUMednc

预训练阶段是LLM教育的初始阶段,也是资源最密集阶段。BUMednc

涉及将模型暴露于大量未标记的文本数据集,本质上是让它“阅读”大量的书籍、文章和网站BUMednc

在这个自监督学习过程中,模型处理数十亿个单词,学习基本模式、语法、语义和世界知识  BUMednc

预训练有两个主要目标,具体取决于模型的架构:BUMednc

因果语言建模(CLM):BUMednc

主要由GPT等仅解码器模型使用,CLM训练模型在给定所有前置标记的情况下预测序列中的下一个标记BUMednc

这种单向方法模仿了人类自然生成语言的方式,使这些模型在文本生成任务中非常有效BUMednc

模型通过迭代预测下一个单词来提高生成连贯和相关响应的能力BUMednc

比如你给模型一句话“华山论剑,五绝……”它就得努力猜下一个字是不是“齐”或者“会”。BUMednc

猜对了,内功就增一分。BUMednc

掩码语言建模(MLM):BUMednc

 由BERT等仅编码器模型采用,MLM涉及掩盖输入序列中一定百分比的标记,并训练模型根据周围上下文预测这些被掩盖的标记BUMednc

这种方法提供了“双向”理解,允许模型在进行预测时考虑前置和后继单词。MLM对于需要深入上下文理解的任务特别有效,例如情感分析或信息检索  BUMednc

就像给模型一道完形填空题,“郭靖[   ]了降龙十八掌”,让它猜是“学会”了还是“修炼”了。BUMednc

在这两种情况下,模型的参数(权重)最初是随机的,并通过无数次迭代进行调整,以反映训练数据中的统计模式BUMednc

模型输出可能下一个标记的概率分布,并且“正确”的标记以自回归方式反馈到网络中,继续生成过程BUMednc

这种广泛的暴露使模型能够学习语言的工作原理,包括语法、语义和事实知识,而无需对每个数据片段进行显式的人工标注  BUMednc

大型语言模型中的“大”直接指的是其预训练所需的数据和计算能力的巨大规模。BUMednc

这些模型在由数万亿个单词组成的数据集上进行训练,这些数据通常来源于整个互联网BUMednc

训练LLM需要大量的钱和计算资源。BUMednc

这主要源于对强大硬件的需求,特别是高端图形处理单元(GPU)或专用AI加速器,如张量处理单元(TPU),这些设备购置和运行成本高昂BUMednc

例如,虽然2017年原始Transformer模型的训练成本约为900美元。BUMednc

但2020年训练GPT-3(1750亿参数)的计算成本估计在50万美元到460万美元之间。更BUMednc

近期的模型将这些成本推得更高。BUMednc

GPT-4的估计成本超过1亿美元。BUMednc

谷歌的Gemini Ultra训练计算成本估计为1.91亿美元  BUMednc

费用不仅仅是GPU本身,还包括CPU、内存、存储和分布式设置所需的高速网络等支持资源BUMednc

漫长的训练运行,通常持续数月,意味着这些成本会显著累积,尤其是在对大量数据集进行多次迭代的情况下BUMednc

这种在硬件和能源消耗方面的巨额投资,对于许多希望从头开始训练LLM的组织来说,是一个主要的进入壁垒  BUMednc

这一步,可不是开玩笑的。BUMednc

几万亿个字,几百万上千万美金的投入,几个月甚至更长时间的“闭关”,才能练出像样的“内功”。BUMednc

那些高端的GPU、TPU,就是你的“练功房”,烧的电和钱,那都是实实在在的“香火钱”。BUMednc

第四步:融会贯通——“招式精修”的微调与对齐BUMednc

经过预训练,你的大模型已经有了深厚的内力,
就像一个武林新秀,虽然功力不凡,但尚未精通某项具体绝技。
此时,就需要进行微调,让它在特定任务上“招式精修”,甚至通过“高人指点”让其行为更符合预期。

微调涉及获取一个预训练的LLM,并在一个更小、更专业的数据集上对其进行进一步训练,以使其能力适应特定目标BUMednc

可以将其视为将广泛的技能提炼为特定主题的专业知识  BUMednc

例如,一个通用LLM可能会生成通用的法律条款。通过在法律文件、案例研究和法规数据集上进行微调,该模型在起草法律特有的法律准确文件方面会显著提高BUMednc

此过程调整模型的预训练权重,使其能够“内化”新的、特定于任务的信息和模式BUMednc

当使用规模证明前期训练成本合理时,微调是理想的选择,因为它将所需信息直接编码到模型中,确保一致且高效的响应,而无需在推理过程中进行外部检索  BUMednc

那么怎么进行微调?BUMednc

监督微调(SFT)与人类反馈强化学习(RLHF)BUMednc

1:名师指点,精进招式(监督微调SFT):BUMednc

这是一种直接训练方法,其中预训练模型在由人类专家整理的高质量、标记数据集(包含输入-输出对)上进行进一步训练BUMednc

就像得到高人指点,针对某个特定武功招式进行集中训练。BUMednc

比如,你想让模型擅长写诗,就用大量的诗歌作为“训练教材”,让模型学会作诗的韵律和意境。BUMednc

这是一种直接且高效的训练方法。BUMednc

它通常比其他方法更简单,计算成本更低,并且由于直接在标记数据上进行训练,因此更稳定。在高质量数据的情况下,SFT在某些场景下可以实现与更复杂方法相当甚至更优的结果,使其成为一个直接且高效的选择  BUMednc

2:高手过招,迭代提升(人类反馈强化学习RLHF):BUMednc

这是一种更复杂、迭代的方法,在训练过程中将人类反馈作为奖励信号BUMednc

该过程通常从初始SFT阶段开始,为模型提供一个坚实的起点。  BUMednc

RLHF是一种更高级的“修炼”方式,就像张三丰指导张无忌,通过不断的实战和纠正来完善武功。BUMednc

首先,人类专家对模型的输出进行评估和排名。BUMednc

然后,利用这些人类反馈训练一个“奖励模型”,它能判断模型的输出好坏BUMednc

最后,模型根据“奖励模型”的反馈,不断调整自身行为,使其生成的内容更符合人类的偏好——有用、诚实且无害。BUMednc

微调是让大模型从“通才”变为“专才”的关键。它让模型的通用能力落地生根,解决具体的实际问题。BUMednc

RLHF更是赋予模型“人性”,使其输出更符合人类的价值观和偏好。BUMednc

第五步:华山论剑——“武功考核”的评估与基准测试BUMednc

“绝世神功”练成后,最终要通过“华山论剑”来检验。BUMednc

大模型也是如此,需要通过各种评估与基准测试来衡量其“武功”高低。BUMednc

LLM如何被评判BUMednc

评估大型语言模型的性能对于理解其能力和指导其发展至关重要。BUMednc

这主要通过LLM基准测试来完成 BUMednc

基准测试一系列技能,包括语言理解、问答、数学问题解决和编码任务BUMednc

示例包括HellaSwag、BigBench、TruthfulQA和用于编码的HumanEval。模型通过不同的方法引入这些基准测试:  BUMednc

1:零样本学习:BUMednc

LLM在没有任何先验示例的情况下被提示完成任务,揭示其理解新概念和适应新场景的能力BUMednc

在不给任何例子的情况下,模型能解决新问题,考验其“顿悟”能力。BUMednc

2:少样本学习:BUMednc

 LLM在被提示之前提供少量相关的训练示例,给出少量例子,模型就能迅速掌握,考验其“触类旁通”能力。BUMednc

3:微调:BUMednc

 模型已在与基准测试使用的数据集相似的数据集上进行了专门训练,旨在优化其在该特定任务上的性能  BUMednc

测试完成后,基准测试会计算模型输出与预期解决方案或“真实”答案的相似程度,生成一个分数,通常在0到100之间BUMednc

常用指标包括准确率(正确预测的百分比)、召回率(真阳性数量)和F1分数(结合两者)。对于翻译或问答等任务,“精确匹配”是一个有价值的标准  BUMednc

评估并非万能。BUMednc

我们需要警惕:BUMednc

数据污染: BUMednc

就像考前泄题,如果模型在训练时就接触过考题,成绩会虚高。BUMednc

模型可能已经在它们后来被测试的数据上进行了训练。这种重叠可能会人为地夸大性能指标,从而难以衡量模型的真实泛化能力  BUMednc

偏见与幻觉: BUMednc

模型可能会像走火入魔般产生虚假信息或带有偏见的输出,需要持续关注和修正。BUMednc

评估不是考试,BUMednc

考完就结束了。BUMednc

评估是不断完善模型的重要环节。它帮助我们发现模型的长处和短板,指导我们如何进一步“精进武功”,使其变得更强大、更可靠。  BUMednc

结语:你的“大模型之路”才刚刚开始BUMednc

从零开始训练大型语言模型是一项艰巨的任务,BUMednc

需要巨大的计算资源、海量且精心策划的数据集以及深厚的技术专业知识。BUMednc

此过程中固有的挑战,谁也没有办法绕过。BUMednc

但是有一种捷径。BUMednc

就是利用别人开源预训练的结果进行微调。BUMednc

但是开源有开源的规则,要标注好引用。BUMednc

但是,BUMednc

和从零开始打造出属于自己的大模型相比,那种成就感将是无与伦比的。BUMednc

预训练大模型这一步,是练就童子功。BUMednc

预训练的童子功不是用来打架的。BUMednc

但没有童子功,后面的精妙招式都是空中楼阁。BUMednc

责编:Ricardo
文章来源及版权属于歪睿老哥,EDN电子技术设计仅作转载分享,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。如有疑问,请联系Demi.xia@aspencore.com
歪睿老哥
一个芯片设计行业老哥;忙时研发,闲时写作;聚焦芯片行业的那些事,唯武侠与芯片不可辜负。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了