模型相关知识

一、模型压缩(Model Compression)

是什么

在尽量不损失模型精度的前提下,减小模型的体积 / 内存占用 / 推理延迟,使其能在手机、边缘设备或低算力服务器上运行。核心矛盾是 精度 vs 体积

主要子技术

子技术 原理 典型做法
剪枝(Pruning) 删掉"不重要"的权重或整个神经元/通道 权重绝对值小 → 置零;结构化剪枝删整个 filter/channel
量化(Quantization) 用低位宽整数代替 FP32 权重 FP32 → INT8(PTQ 训练后量化);QAT 量化感知训练
低秩分解 把大矩阵拆成两个小矩阵相乘 SVD 分解全连接层
权重共享 多个权重共用一个值 HashedNet、Product Quantization
紧凑网络设计 直接设计小网络 MobileNet(深度可分离卷积)、ShuffleNet

需要掌握的知识

  • 线性代数(矩阵分解、SVD)
  • 深度学习基础(CNN / Transformer 结构、反向传播)
  • 某一框架的量化/剪枝工具链:PyTorch 的 torch.quantization、TensorRT、ONNX Runtime
  • 硬件基础:了解 GPU / NPU / CPU 对 INT8 / FP16 的支持差异
  • 评估指标:精度损失、FLOPs、延迟、模型大小

二、模型蒸馏(Knowledge Distillation)

是什么

模型蒸馏是模型压缩的一种重要方法,由 Hinton 2015 年提出。核心思想:用一个大而强的教师模型(Teacher)指导一个小而快的Student 模型(Student),让 Student 学习 Teacher 的"暗知识(soft labels)",而非只学硬标签。

工作原理

scss 复制代码
Teacher (大模型)  ──→  soft logits (温度 T 软化)
                          │
Student (小模型)  ──→  soft logits  ──→  KL 散度损失
        │
        └──→  hard labels ──→  交叉熵损失

总 Loss = α * KL(student_soft || teacher_soft) + (1-α) * CE(student, hard_label)

温度参数 T 软化概率分布,使 Student 能学到类间相似度等"暗知识"。

变体

变体 说明
特征蒸馏 Student 对齐 Teacher 的中间层特征(FitNets)
注意力蒸馏 对齐 Teacher 的 attention map
Logit 蒸馏 经典 Hinton 方法
多教师蒸馏 多个 Teacher 共同指导
自蒸馏 Teacher 和 Student 是同一网络的不同深度

需要掌握的知识

  • 信息论基础:KL 散度、交叉熵、softmax 温度
  • 深度学习训练流程:前向/反向传播、损失函数设计
  • 框架实操:PyTorch / TensorFlow 实现自定义 loss
  • 了解不同蒸馏策略的适用场景(CV / NLP / 多模态)
  • 大模型时代:用 GPT-4 蒸馏小模型(如 Alpaca、Vicuna 的思路)

三、分布式模型训练(Distributed Training)

是什么

单机单卡放不下或训练太慢时,用多机多卡协同训练一个大模型。核心挑战是通信开销同步一致性

两大范式

1. 数据并行(Data Parallelism)

  • 每张卡持有完整模型副本,各卡处理不同 batch
  • 前向各自算,反向梯度 AllReduce 求平均后同步更新
  • 代表:PyTorch DDP、Horovod
  • 问题:模型太大单卡放不下 → 需要模型并行

2. 模型并行(Model Parallelism)

方式 说明
张量并行(Tensor Parallelism) 把单个矩阵乘法切到多卡(Megatron-LM 的列并行/行并行)
流水线并行(Pipeline Parallelism) 按层切分到不同卡,用 micro-batch 填充流水线(GPipe、PipeDream)
序列并行 按序列长度切分(长上下文场景)

3. 混合并行(3D Parallelism)

大模型训练通常组合:数据并行 + 张量并行 + 流水线并行(如 Megatron-DeepSpeed)。

关键技术点

  • 通信原语:AllReduce、AllGather、ReduceScatter、Broadcast(NCCL / Gloo)
  • 梯度同步策略:同步 SGD(等所有卡)vs 异步 SGD(不等待,有 staleness)
  • ZeRO 优化 (DeepSpeed):将优化器状态 / 梯度 / 参数分片到多卡,逐级省显存
    • ZeRO-1:分片优化器状态
    • ZeRO-2:+ 分片梯度
    • ZeRO-3:+ 分片模型参数(相当于模型并行)
  • 混合精度训练:FP16/BF16 前向 + FP32 主权重
  • 梯度累积:小 batch 多次累积再更新,等效大 batch

需要掌握的知识

  • 计算机网络基础:带宽、延迟、拓扑结构
  • MPI / NCCL 通信原语
  • PyTorch Distributed(torch.distributed、DDP、torchrun
  • DeepSpeed / Megatron-LM / FSDP 框架使用
  • GPU 架构基础:显存层次、SM、NVLink
  • 性能分析:计算/通信比、scaling efficiency

四、大模型微调(Fine-Tuning)

是什么

在预训练大模型(如 LLaMA、GPT、GLM)基础上,用特定领域数据继续训练,使其适配下游任务。预训练赋予通用能力,微调注入领域知识或对齐人类偏好。

微调方式谱系

css 复制代码
全量微调(Full FT)  ──→  更新所有参数,效果最好但成本高
       │
    PEFT(参数高效微调)
       ├── LoRA        ──→  冻结原权重,旁路低秩矩阵 A·B
       ├── QLoRA       ──→  LoRA + 4bit 量化基座
       ├── Adapter     ──→  在层间插入小 MLP
       ├── Prefix-Tuning ──→  学习虚拟前缀向量
       └── P-Tuning v2  ──→  每层加可训练 prefix
       │
    对齐微调
       ├── SFT(监督微调)      ──→  指令-回答对训练
       ├── RLHF(人类反馈强化学习)──→  RM + PPO
       └── DPO(直接偏好优化)  ──→  无需 RM,直接用偏好对训练

LoRA 详解(当前最主流)

css 复制代码
原始:  h = W·x          (W ∈ R^{d×k}, 参数量 d×k)
LoRA:  h = W·x + B·A·x  (A ∈ R^{r×k}, B ∈ R^{d×r}, r << d)

训练时只更新 A、B,推理时可将 B·A 合并回 W,无额外延迟

需要掌握的知识

  • Transformer 架构深入理解(Self-Attention、KV Cache、RMSNorm)
  • 预训练 vs 微调 vs 对齐的定位差异
  • 损失函数:SFT 的 causal LM loss、DPO 的 Bradley-Terry loss
  • 框架工具:HuggingFace Transformers + PEFT + TRL + Datasets
  • 显存管理:梯度检查点(gradient checkpointing)、混合精度、CPU offload
  • 数据工程:指令数据构造、数据清洗、过拟合防范
  • 评估方法:perplexity、BLEU/ROUGE、人工评估、LLM-as-Judge

四者关系总览

scss 复制代码
                    ┌──────────────┐
                    │  预训练大模型  │
                    └──────┬───────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
        分布式训练      大模型微调    模型蒸馏
     (训练阶段加速)   (适配下游任务)  (大→小迁移知识)
              │            │            │
              │            ▼            ▼
              │     全量/LoRA/QLoRA   Student 小模型
              │                        │
              └────────────────────────┤
                                       ▼
                                 模型压缩
                           (剪枝/量化/低秩)
                                       │
                                       ▼
                                 部署推理
技术 解决什么问题 阶段
分布式训练 模型太大,单卡训不动 训练
大模型微调 通用模型不适配特定任务 训练后
模型蒸馏 大模型推理太慢/太大 训练→压缩
模型压缩 部署体积/延迟过大 压缩→部署
相关推荐
小小小小宇1 小时前
模型相关知识二
前端
IT_陈寒1 小时前
Python装饰器竟然偷偷改了函数名?这个坑我爬了三天
前端·人工智能·后端
Momo__2 小时前
Vite 8.1 打包开发模式——10000 组件冷启动 15 倍,"No Bundle Dev" 七年后被自己终结
前端·vue.js·vite
YHL2 小时前
🤖 Agent 智能体开发实战 · 第一课:Tool Use —— 让大模型自动干活
前端·javascript·人工智能
Monki2 小时前
AI 规范式 UI 设计,一键批量出页,高效落地不翻车
前端
山河木马2 小时前
渲染管线-计算得到gl_FragColor(片元着色器)之后续GPU流程
前端·webgl·计算机图形学
不想说话的麋鹿2 小时前
「项目实战」我用 Codex + GPT-5.5 + Trellis "氛围编程",独立做了一个情侣厨房小程序
前端·agent·全栈
接着奏乐接着舞。3 小时前
【2026年7月最新】69道RAG面试题
前端·人工智能·后端·aigc·embedding·rag
以和为贵3 小时前
前端也能搞懂 Agent:从 Function Calling 到自主编排
前端·人工智能·架构