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 加速;核心挑战是算力、显存和延迟的工程权衡。

相关推荐
用户9901930524518 小时前
Nano-vLLM-MS:基于 nano-vLLM ,支持 MoE 模型和 Speculative Decoding
pytorch·llm
libokaifa19 小时前
Claude Code 的工程化落地:省 Token 篇
llm·agent·ai编程
山科智能信息处理实验室20 小时前
(KDD-2025)STH-SepNet:轻量化大模型与自适应超图融合方法
大语言模型·交通流量预测·自适应超图
RockHopper202520 小时前
LLM 的“高概率合理性”vs“系统级可执行正确性”
llm·语义驱动·运行语义
薛定谔的猫3691 天前
DeepSeek-V3 模型架构与训练技术深度解析
深度学习·ai·llm·machine learning·moe·deepseek
.柒宇.1 天前
LangChain入门教程
ai·langchain·llm·agent·rag
AIFrontiers1 天前
transformer进阶之路:#1 整体概述
llm
Lazy_zheng1 天前
用 Python 接入大模型 API:从 0 到 1 实现文本分类/抽取/匹配
llm·openai·agent
薛定谔的猫3691 天前
基于 MCP (Model Context Protocol) 的智能 Agent 开发指南
ai·llm·agent·mcp·software engineering
Irissgwe2 天前
LangChain快速上手
ai·langchain·llm·ai编程