大语言模型基础:Transformer架构、预训练与微调的区别、常见开源模型简介

在正式进入LoRA微调实战之前,我们必须先建立对大语言模型(LLM)底层机制的系统认知。LoRA(Low-Rank Adaptation)并非一个独立于模型之外的魔法工具,它是在预训练模型权重基础上进行参数高效修改的技术。因此,理解Transformer的核心计算逻辑、预训练与微调的本质差异,以及主流开源模型的架构特点,将直接决定你在后续章节中能否正确选择微调策略、设置超参数并诊断训练异常。本章将围绕这三块基石展开,帮助你构建一个清晰的“模型世界观”。

大语言模型基础架构与训练范式全景图 Transformer 架构 输入 Embedding + 位置编码 多头自注意力 (MHA) 前馈网络 (FFN) 层归一化 + 残差连接 输出 Softmax 层 训练范式对比 预训练 (Pre-training) 海量语料 · 自监督 · 通用能力 微调 (Fine-tuning) 任务数据 · 有监督 · 特定能力 LoRA 介入点 冻结原权重 · 注入低秩矩阵 主流开源模型 LLaMA 系列 Meta · 学术友好 · 生态完善 Mistral 系列 法国 · 高效推理 · 滑动窗口 Qwen 系列 阿里 · 中英双语 · 工具调用 选择依据 显存 · 语言 · 许可 · 生态

上图展示了本章的核心知识框架:Transformer作为底层引擎,预训练与微调作为两种训练范式,以及开源模型作为具体载体。LoRA微调正是作用于“预训练→微调”这一转换过程中的高效桥梁。下面我们逐一深入拆解。

2.1 Transformer架构:自注意力机制与堆叠结构

Transformer架构由Vaswani等人在2017年提出,彻底取代了RNN/LSTM成为大语言模型的标准骨架。其核心创新在于自注意力机制(Self-Attention),它允许模型在处理每个词元()时,直接计算该词元与序列中所有其他词元的相关性权重,从而捕捉长距离依赖关系。这种并行计算能力使得训练效率大幅提升,也为后续的规模扩展(Scaling Law)奠定了基础。

核心原理:多头注意力与位置编码

自注意力的计算过程可以概括为三个步骤:首先,将输入词向量分别乘以三个权重矩阵(W_Q、W_K、W_V),得到查询(Query)、键(Key)、值(Value)向量;然后,计算Query与所有Key的点积,经过缩放(除以√d_k)和Softmax归一化,得到注意力权重;最后,用权重对Value进行加权求和。多头注意力(MHA)则是将这一过程并行执行多次(例如8头或32头),每个头关注不同的子空间信息,最后拼接并线性变换。此外,由于Transformer没有循环结构,必须通过位置编码(Positional Encoding)注入词元的位置信息,常见的有正弦编码和可学习位置嵌入。

关键公式(单头注意力):

Attention(Q, K, V) = softmax(QK^T / √d_k) V

其中 d_k 为键向量的维度。除以 √d_k 是为了防止点积结果过大导致Softmax梯度消失。

堆叠结构与工程实现

一个标准的Transformer层由两个子层组成:多头注意力子层和前馈网络(FFN)子层。每个子层后都跟随残差连接(Residual Connection)和层归一化(LayerNorm)。FFN通常包含两个线性变换,中间使用ReLU或GELU激活函数。大语言模型(如LLaMA)通常堆叠32层、40层甚至更多这样的Transformer块。在工程实现中,KV Cache是推理阶段的重要优化手段——它将历史的Key和Value缓存下来,避免重复计算,但这也意味着微调时需要考虑缓存带来的显存开销。

组件 作用 微调时的影响
多头自注意力 捕捉词元间长距离依赖 LoRA通常作用于Q、K、V、O矩阵
前馈网络 (FFN) 非线性特征变换 LoRA也可作用于FFN的权重矩阵
层归一化 稳定训练过程 通常冻结,不参与LoRA微调
残差连接 缓解梯度消失 保持原样,不修改

实战经验:在后续LoRA实验中,如果你发现模型在特定任务上表现不佳,可以尝试将LoRA的秩(Rank)分配到FFN层而非仅注意力层。FFN层存储了大量知识性记忆,对领域适配同样重要。

2.2 预训练与微调:从通用到专用的范式跃迁

预训练与微调是两种截然不同的训练阶段,理解它们的差异是掌握LoRA的前提。预训练阶段,模型在海量无标注文本(如数万亿)上进行自监督学习,目标是预测下一个词元(Next Prediction)。这一阶段需要数千张GPU和数周时间,成本极高,但赋予了模型强大的语言理解与生成能力。微调阶段,模型在特定任务的有标注数据上进行有监督学习,例如指令遵循、情感分类或代码生成。传统微调会更新全部参数,而LoRA则只更新少量新增参数。

判断方法:何时需要微调?

并非所有场景都需要微调。你可以通过以下问题快速判断:

  1. 任务是否超出了预训练知识范围?例如,让模型学习一种全新的专有名词体系或特定格式输出。
  2. 是否需要改变模型的输出风格?例如,从通用对话风格转变为严谨的法律文书风格。
  3. 是否有足够的标注数据?微调至少需要数百条高质量样本,否则效果可能不如提示工程。

如果以上答案均为“是”,则微调是必要的。而LoRA正是为了降低微调门槛而设计的。

案例拆解:从通用助手到金融客服

假设你是一家金融科技公司的算法工程师,需要将Qwen-7B模型改造成一个专业的金融客服助手。初始现象是:模型虽然能回答通用问题,但对“年化收益率计算”、“风险等级分类”等专业问题回答模糊,且输出格式不符合公司规范。

关键输入数据:你收集了5000条历史客服对话,每条包含用户问题、标准答案、意图标签(如“账户查询”、“理财推荐”)。

分析判断过程:直接使用全量微调需要更新70亿参数,单卡A100(80GB)无法承载,且容易过拟合。因此选择LoRA方案:冻结Qwen-7B全部原始权重,在注意力层的Q、V矩阵上注入秩为16的低秩分解矩阵。

实际操作步骤:

# 伪代码示例
from peft import LoraConfig, get_peft_model
config = LoraConfig(
    r=16,               # 秩
    lora_alpha=32,      # 缩放系数
    target_modules=["q_proj", "v_proj"],  # 只作用于Q和V
    lora_dropout=0.1
)
model = get_peft_model(base_model, config)
# 训练3个epoch,学习率2e-4

结果对比:训练后,模型在金融意图分类准确率从68%提升至92%,回答格式合规率达到95%。训练耗时仅2小时(单卡A100),显存占用从70GB降至45GB。

风险与代价:LoRA微调后模型可能出现“灾难性遗忘”的轻微版本——对通用闲聊能力略有下降。复盘经验是:在训练数据中混入10%的通用对话数据,可有效缓解该问题。

常见误区:不要认为LoRA是万能的。如果任务需要模型学习全新的语言(如从零学习编程语言),LoRA的低秩假设可能不足以表达复杂的权重变化。此时应考虑继续预训练或使用更大的秩。

2.3 常见开源模型:LLaMA、Mistral与Qwen的选型指南

当前开源社区最活跃的三大家族分别是Meta的LLaMA、法国的Mistral以及阿里的Qwen。它们各有侧重,选型直接影响微调效果和部署成本。

核心差异对比

模型 参数规模 架构特点 许可证 中文能力 生态工具
LLaMA 2/3 7B/13B/70B 标准Transformer,GQA(分组查询注意力) LLaMA License(商用需申请) 较弱,需中文微调 HuggingFace生态最全
Mistral 7B 7B/8x7B 滑动窗口注意力(SWA),推理速度快 Apache 2.0(宽松) 一般,支持多语言 vLLM支持极佳
Qwen 1.5/2 0.5B-72B 标准架构,强化中文语料 Apache 2.0(部分版本) 强,原生中文优化 ModelScope支持好

选型判断流程

面对具体业务,你可以按照以下路径决策:

  • 第一步:评估语言需求。若业务以中文为主,优先考虑Qwen系列,可减少大量中文微调成本。
  • 第二步:评估推理性能。若对延迟敏感(如实时聊天),Mistral的滑动窗口注意力在长文本场景下显存占用更低。
  • 第三步:评估生态与合规。若需要商用且避免法律风险,Apache 2.0协议的Mistral或Qwen更安全。
  • 第四步:评估硬件资源。7B模型在FP16精度下需要约14GB显存,LoRA微调可降低至8GB左右。

实战场景:假设你需要在低配GPU(如RTX 3090 24GB)上微调一个中文法律问答助手。推荐选择Qwen-7B + LoRA。原因:Qwen原生中文分词器对法律术语切分更准确;LoRA将显存需求控制在20GB以内,且训练速度比全量微调快3倍。

总结复盘:模型不是越新越好

很多初学者盲目追求最新发布的模型,但忽略了两个关键点:一是新模型可能缺乏成熟的微调工具链支持;二是模型参数量越大,LoRA微调时需要的秩和训练步数也相应增加。建议在课程实战中,优先使用Qwen-7B或Mistral-7B作为练习对象,它们对LoRA的兼容性最好,且社区案例丰富,便于排错。

经验提醒:在开始任何微调项目前,先使用模型的原始权重跑通一次推理(Inference),确认模型加载、分词器配置无误。这一步能帮你区分“模型本身问题”和“微调引入的问题”。