LLM | 训练与推理过程

文章目录

大语言模型训练与推理流程

一、整体架构基础:Transformer

现代 LLM(如 GPT、LLaMA、Claude)均基于 Transformer 架构,核心是自注意力机制(Self-Attention)

复制代码
输入 Token → Embedding → N × (Attention + FFN) → 输出概率分布

关键概念:

  • Token:文本的最小单元,一个汉字 ≈ 1-2 tokens
  • Embedding:将 token 映射为高维向量(如 4096 维)
  • Attention:每个 token 与其他所有 token 计算相关性权重
  • FFN(前馈网络):对每个位置独立做非线性变换

二、训练流程(三阶段)

阶段 1:预训练(Pre-training)

目标:让模型学习语言的统计规律和世界知识

项目 说明
数据 互联网文本、书籍、代码,数TB级
任务 自回归语言建模:预测下一个 token
损失函数 交叉熵:`Loss = -log P(token_t
规模 GPT-3:175B 参数,300B tokens;LLaMA-3:数十T tokens
耗时 数千张 GPU 跑数月,成本百万到千万美元级别
复制代码
输入: "大语言模型的核心是"
预测: "Transformer"  ← 计算损失,反向传播更新参数

优化器:AdamW + 学习率 Warmup + Cosine 衰减


阶段 2:监督微调(SFT, Supervised Fine-Tuning)

目标:让模型学会"对话"和"遵循指令"

  • 数据:人工标注的高质量问答对(指令-回答格式)

  • 模型在预训练权重基础上继续训练

  • 数据量小(万到十万级),但质量要求极高

    指令: "帮我写一个冒泡排序"
    回答: "以下是冒泡排序的实现..." ← 模型学习这种格式


阶段 3:RLHF(基于人类反馈的强化学习)

目标:让模型输出更符合人类偏好(有用、无害、诚实)

三步流程:

复制代码
① 人类对同一问题的多个回答进行排序
         ↓
② 训练奖励模型(Reward Model)学习人类偏好
         ↓
③ 用 PPO 算法优化 LLM,最大化奖励模型打分

现代替代方案:DPO(Direct Preference Optimization) --- 无需单独训练奖励模型,更简洁稳定


三、推理流程(Inference)

自回归生成

LLM 推理是逐 token 串行生成的过程:

复制代码
输入: [你好] → 输出词表上的概率分布 → 采样得到 [,]
输入: [你好,] → 输出概率分布 → 采样得到 [我]
输入: [你好,我] → ... 直到生成 <EOS>

每步都要过一遍整个模型,计算量大、延迟高


KV Cache(推理核心优化)

问题:每次生成新 token,历史 token 的 K/V 矩阵都要重新计算,浪费严重

方案:将历史 token 的 Key、Value 矩阵缓存起来,新 token 只计算自己的 KV 并追加

复制代码
无 Cache:第 N 步计算量 = O(N²)
有 Cache:第 N 步计算量 = O(N)    ← 每步只增量计算

代价:显存占用大,长上下文时 KV Cache 可占用数 GB 显存


采样策略

模型输出的是词表上的概率分布,如何选 token?

策略 说明 效果
Greedy 每步取概率最大的 确定但死板
Temperature 调整概率分布的"平坦度" 控制创意度
Top-k 只从概率最高的 k 个中采样 避免低概率噪声
Top-p (nucleus) 从累积概率 ≥ p 的最小集合中采样 更自然,常用

四、工程优化(面试加分项)

训练侧

  • 混合精度训练(FP16/BF16):减少显存,加快计算
  • 梯度检查点(Gradient Checkpointing):用时间换显存,重算前向代替存储中间激活
  • 分布式训练
    • 数据并行(DDP):每卡一份模型,数据切片
    • 流水线并行:模型按层切分到不同卡
    • 张量并行:单层矩阵切分到多卡(Megatron-LM)

推理侧

  • 量化(Quantization):FP16 → INT8/INT4,显存减半,速度提升
  • FlashAttention:重写 Attention 的 CUDA kernel,减少 HBM 读写,提速 2-4x
  • 连续批处理(Continuous Batching):动态合并请求,提高 GPU 利用率(vLLM 的核心)
  • PagedAttention(vLLM):像操作系统管理内存一样管理 KV Cache,解决显存碎片问题

五、面试常见问题速答

Q:LLM 为什么不能修改已生成的内容?

自回归生成,每个 token 只依赖之前的,无法回头修改

Q:上下文窗口变长为什么难?

Attention 计算复杂度是 O(N²),长度翻倍,计算量翻 4 倍;KV Cache 显存线性增长

Q:训练和推理对硬件要求有何不同?

训练需要存储梯度和优化器状态(参数量 × ~16 字节),显存需求是推理的 3-4 倍;推理侧重低延迟、高吞吐

Q:为什么 LLM 会幻觉(Hallucination)?

模型本质是预测概率最高的 token,没有真正的"知识库"查询机制,当训练数据不足或问题超出分布时,就会生成听起来合理但错误的内容

Q:RAG 是什么,解决什么问题?

检索增强生成:推理时先从外部知识库检索相关文档,拼入上下文,弥补模型知识截止日期和幻觉问题


六、一句话总结

LLM 训练 = 海量文本自监督预训练 + 指令微调 + 人类偏好对齐;推理 = 自回归逐 token 生成 + KV Cache 加速;核心挑战是算力、显存和延迟的工程权衡。

相关推荐
冬奇Lab13 小时前
Agent 系列(一):Agent 是什么——不只是「会调工具的 LLM」
人工智能·llm·agent
冬奇Lab13 小时前
RAG 系列(二十四):代码 RAG——让 AI 理解你的代码库
人工智能·llm
创世宇图17 小时前
【AI入门知识点】LLM 原理是什么?为什么 ChatGPT 看起来像“会思考”?
人工智能·ai·llm·token
创世宇图20 小时前
【AI入门知识点】Function Calling 是什么?为什么 AI 开始会“调用工具”了?
人工智能·ai·llm·functioncalling
deephub1 天前
告别脆弱的单体应用,用多智能体网络构建稳定的生产力工具
人工智能·python·大语言模型·多智能体
BeforeEasy1 天前
关于大模型工具调用技术的总结
llm·agent·工具调用·function_call·tool_use
龙骑士baby1 天前
重建 AI 认知第 1 篇:基础认知——一张地图看懂 AI Landscape
深度学习·ai·大模型·llm·ai生态
龙侠九重天1 天前
Embedding 模型深度使用——语义搜索与聚类
人工智能·深度学习·数据挖掘·大模型·llm·embedding·聚类
吴佳浩1 天前
炸裂!一家创业公司声称打破了 Transformer 七年魔咒
人工智能·llm
冬奇Lab2 天前
RAG 系列(二十三):多模态 RAG——图片、表格也能检索
人工智能·llm