第4章 大模型技术基础:从BERT到GPT,我们经历了什么?

各位风电行业的同仁,大家好。我是老张,干风电运维有些年头了。今天咱们聊点新鲜的——大模型。别一听就觉得是搞IT的事,其实跟我们风电运维关系大了去了。

我记得2020年那会儿,我第一次接触BERT模型,当时就觉得这东西不简单。后来GPT-3出来,我直接懵了——这玩意儿能写代码?能写报告?那咱们运维日志是不是也能让它帮忙整理?

好,咱们不扯远,直接进入正题。

4.1 大模型发展历程:从BERT到GPT再到LLaMA

大模型的发展,说白了就是一场「规模竞赛」。我把它分成三个阶段来讲。

4.1.1 预训练时代的开启:BERT(2018年)

BERT是Google在2018年发布的。它的核心思想很简单:双向编码器。什么意思?就是模型在理解一个词的时候,会同时看它左边和右边的上下文。

举个例子,句子「这台风机振动异常」。BERT会同时看「这台风机」和「异常」来理解「振动」这个词。这在当时是个突破。

我个人习惯把BERT比作一个「阅读理解高手」。它特别擅长理解文本的含义,但不擅长生成文本。所以BERT在分类任务、命名实体识别上表现很好,但你要让它写一段运维报告,它就抓瞎了。

关键点:BERT是Encoder-only架构,擅长理解,不擅长生成。

4.1.2 生成式AI的爆发:GPT系列(2018年至今)

GPT跟BERT几乎是同时期出来的,但走的是完全不同的路子。GPT是单向解码器,它只看左边的上下文,然后预测下一个词。

你想想看,这就像一个人写文章,只能看前面写过的内容,不能回头改。但神奇的是,当模型规模足够大时,这种「笨办法」反而产生了惊人的效果。

GPT-3(2020年)有1750亿参数,那时候我试了一下,让它写一份风机故障分析报告,写得有模有样。我当时就在想:这玩意儿要是接入SCADA系统,是不是能自动生成运维日志?

模型 发布时间 参数量 核心特点
GPT-1 2018年6月 1.17亿 证明无监督预训练可行
GPT-2 2019年2月 15亿 文本生成质量大幅提升
GPT-3 2020年5月 1750亿 零样本学习能力惊人
GPT-4 2023年3月 未公开 多模态、推理能力大幅提升

4.1.3 开源的力量:LLaMA(2023年)

LLaMA是Meta(原Facebook)发布的。它的厉害之处在于:用更少的参数,达到更好的效果。LLaMA-13B(130亿参数)在很多任务上能跟GPT-3(1750亿参数)掰手腕。

为什么这对我们风电行业很重要?因为我们可以自己部署!不用把数据送到云端,不用担心数据安全。我去年就在一台服务器上跑了LLaMA-7B,用来做故障代码的智能匹配,效果还不错。

我的建议:如果你刚开始接触大模型,先从LLaMA或ChatGLM这类开源模型入手。成本低,可控性强。

4.2 Transformer架构核心:大模型的「心脏」

不管是BERT、GPT还是LLaMA,它们的底层都是Transformer。2017年Google提出的这个架构,彻底改变了NLP领域。

Transformer的核心就两个东西:自注意力机制位置编码

4.2.1 自注意力机制:模型如何「看」文本

自注意力机制,说白了就是让模型知道:在一句话里,哪些词跟哪些词有关系。

比如这句话:「3号风机齿轮箱温度过高,已经运行了2000小时。」

模型需要知道「它」指的是「3号风机」还是「齿轮箱」。自注意力机制就是干这个的——计算每个词跟其他所有词的相关性。

我画了一张图,帮你理解这个过程:

自注意力机制示意图 输入序列: 3号风机 齿轮箱 温度 运行 注意力权重计算 输出表示: 「它」→ 更关注「3号风机」(权重0.6)和「齿轮箱」(权重0.3) 说明:模型通过计算每个词与其他词的相关性(注意力权重), 来理解「它」在上下文中的具体指代对象。 核心公式:Attention(Q,K,V) = softmax(QK^T/√d)V Q=查询向量,K=键向量,V=值向量,d=向量维度

4.2.2 位置编码:让模型知道「顺序」

Transformer跟RNN不同,它不按顺序处理文本。这就带来一个问题:模型怎么知道「风机振动」和「振动风机」不是一回事?

答案就是位置编码。给每个词加上一个位置信号,告诉模型这个词在句子中的位置。

嗯,这里要注意:位置编码不是简单的1,2,3...而是用正弦和余弦函数生成的。为什么?因为这样能保证不同长度的句子都能处理,而且能捕捉相对位置关系。

避坑指南:我曾经在项目中直接用整数做位置编码,结果模型训练不收敛。后来才发现,位置编码需要归一化到一定范围,否则梯度会爆炸。

4.3 预训练与微调:从「通才」到「专家」

大模型就像一个新入职的运维工程师。预训练相当于大学教育——学的是通用知识。微调相当于岗前培训——学的是咱们风电场的具体业务。

4.3.1 预训练:让模型「读书」

预训练阶段,模型会读海量的文本数据——整个互联网的网页、书籍、论文等等。它学的是语言的基本规律:语法、语义、常识。

比如,模型会学到:「风机」通常跟「叶片」、「齿轮箱」、「发电机」这些词一起出现。「振动」通常跟「异常」、「故障」、「监测」这些词一起出现。

这个阶段不需要人工标注数据,模型自己就能学。所以叫「自监督学习」。

4.3.2 微调:让模型「干活」

微调阶段,我们用风电领域的专业数据来「调教」模型。比如:

  • 风机故障案例库(1000条故障描述+解决方案)
  • 运维操作手册(标准作业流程)
  • SCADA历史数据(带标签的正常/异常数据)

我去年做了一个项目,用500条风电故障案例微调了一个BERT模型。原来模型识别「齿轮箱点蚀」的准确率只有60%,微调后提升到了92%。

关键点:微调不需要太多数据。几百到几千条高质量数据,就能让模型在特定任务上表现优秀。

4.3.3 微调的两种方式

方式 说明 适用场景 计算资源需求
全参数微调 更新模型所有参数 数据量大、任务差异大 高(需要多GPU)
LoRA微调 只更新少量参数(低秩适配) 数据量小、资源有限 低(单GPU即可)

我个人习惯用LoRA。为什么?因为咱们风电行业的数据量通常不大,而且LoRA可以在单张显卡上跑,成本低很多。

4.4 提示工程入门:跟大模型「对话」的艺术

提示工程(Prompt Engineering),说白了就是怎么跟大模型说话,它才能听懂

你想想看,如果你问模型:「风机坏了怎么办?」它可能给你一个很笼统的回答。但如果你说:「3号风机齿轮箱温度85度,振动值12mm/s,请分析可能原因并给出处理建议。」它就能给出很具体的答案。

4.4.1 提示工程的核心原则

  1. 明确角色:告诉模型它是什么角色。「你是一名资深风电运维工程师」
  2. 提供上下文:给出足够的信息。「风机型号:GW150,运行时间:5000小时」
  3. 指定输出格式:告诉模型你想要的格式。「请用列表形式列出3个可能原因」
  4. 给出示例:如果可能,给一个例子。「例如:原因1:齿轮箱润滑油不足」

4.4.2 实战示例:风电故障诊断提示词

提示词模板:

你是一名资深风电运维工程师,有10年现场经验。
请根据以下信息分析故障原因:

风机型号:GW150
故障现象:齿轮箱温度85度,振动值12mm/s
运行时间:5000小时
最近维护记录:2000小时前更换过润滑油

请按以下格式输出:
1. 可能原因(列出3个,按可能性从高到低排序)
2. 建议检查步骤
3. 紧急程度评估(高/中/低)

我试过这个提示词,GPT-4给出的分析跟咱们老师傅的判断基本一致。第一个原因就是「齿轮箱轴承磨损」,跟实际情况吻合。

小技巧:提示词要反复调试。同一个问题,换一种说法,模型给出的答案可能完全不同。我一般会准备3-5个版本的提示词,对比效果后选最优的。

4.4.3 提示工程的进阶技巧

  • 链式思考(Chain-of-Thought):让模型一步步推理。「请先分析温度数据,再分析振动数据,最后综合判断」
  • 少样本学习(Few-shot):给2-3个例子,让模型模仿。「以下是3个故障案例的分析方式,请按相同方式分析第4个」
  • 温度参数调整:控制模型的「创造性」。故障诊断用低温度(0.1-0.3),报告生成用中等温度(0.5-0.7)

嗯,这里要注意:温度参数不是越高越好。我见过有人把温度设到0.9,结果模型开始「编造」故障原因,把「齿轮箱磨损」说成「外星人干扰」——这就离谱了。

本章小结

好,咱们把这一章的内容串一下:

  • 大模型发展:从BERT(理解)到GPT(生成)再到LLaMA(开源高效),这条路走了5年
  • Transformer核心:自注意力机制让模型知道「谁跟谁有关系」,位置编码让模型知道「谁先谁后」
  • 预训练与微调:预训练让模型成为「通才」,微调让模型成为「风电专家」
  • 提示工程:跟大模型对话要「说人话、给例子、定格式」

下一章,咱们会把这些技术落地到风电运维场景中,看看大模型到底能帮咱们解决什么实际问题。


公众号:蓝海资料掘金营,微信deep3321