一、LoRA相关问题

Q: 介绍LoRA的原理,什么是低秩分解?

答案:

LoRA(Low-Rank Adaptation) 是微软2021年提出的参数高效微调(PEFT)技术。

核心原理:

h=W0x+ΔWx=W0x+αr(BA)xh = W_0x + ΔWx = W_0x + \frac{α}{r} (BA) x

  • W₀:预训练模型的冻结权重矩阵(d×k)
  • ΔW:权重更新量,分解为两个低秩矩阵 B(d×r) 和 A(r×k)
  • r:秩,远小于d和k(通常r=8, 16, 32)

为什么"低秩"有效:

  1. 经验观察:大模型微调时的权重更新矩阵本质上是低秩的
  2. 参数效率:可训练参数减少100-1000倍
  3. 推理无开销:训练后可将BA合并回W₀,不增加推理延迟

初始化方法:

  • 矩阵A:随机高斯分布初始化(均值0,标准差σ)
  • 矩阵B:全零初始化
  • 目的:训练开始时BA=0,模型行为与原始预训练模型完全一致

缩放因子: 使用 α/r 缩放(α通常为16或32),稳定训练


二、模型架构对比(Qwen vs LLaMA vs DeepSeek)

Q: Qwen、LLaMA、DeepSeek模型架构有什么区别?

答案:

特性 LLaMA Qwen DeepSeek
Attention GQA GQA MLA(多头潜在注意力)
架构类型 Dense Dense MoE(混合专家)
归一化 RMSNorm RMSNorm RMSNorm
激活函数 SwiGLU SwiGLU SwiGLU
位置编码 RoPE RoPE(支持YaRN扩展) RoPE
中文支持 一般 优秀(tokenizer优化) 优秀

核心差异:

  1. DeepSeek MLA:压缩KV Cache,显存更高效,适合超长上下文
  2. DeepSeek MoE:细粒度专家+共享专家设计,提升训练稳定性和效果
  3. Qwen:在中文场景优化更好,使用YaRN和窗口注意力扩展上下文

三、DeepSpeed ZeRO优化

Q: ZeRO-1、ZeRO-2、ZeRO-3分别做了哪些优化?

答案:

阶段 分片对象 显存节省 通信开销 适用场景
ZeRO-1 优化器状态 ~4倍 模型可放入单卡
ZeRO-2 优化器+梯度 ~8倍 模型+梯度可放入单卡
ZeRO-3 优化器+梯度+参数 ~N倍(N为GPU数) 超大模型训练

核心原理:

  • 传统DDP问题:N张卡存储N份完整模型状态(参数+梯度+优化器)
  • ZeRO方案:将模型状态分片到不同GPU,消除冗余
  • ZeRO-3动态获取:前向/反向传播时通过AllGather按需获取参数分片

四、精度格式(FP32/FP16/BF16/INT8)

Q: FP16和BF16有什么区别?训练时怎么选择?

答案:

精度 位数构成 动态范围 精度 适用场景
FP32 1+8+23位 中等 最高 训练基准、小规模模型
FP16 1+5+10位 小(易溢出) 中等 推理、混合精度训练
BF16 1+8+7位 (同FP32指数) 较低 大模型训练首选
INT8 8位整数 有限 推理量化加速

选择建议:

  • 训练:优先BF16混合精度(动态范围大,不易溢出)
  • 推理:FP16或INT8量化(显存受限场景)
  • 边缘设备:INT4量化

INT8表示范围: -128 到 127(有符号)


五、RLHF/PPO/DPO

Q: 讲一下RLHF流程,PPO和DPO的Loss表达式

答案:

RLHF流程:

  1. SFT(监督微调):用指令数据微调预训练模型
  2. 训练奖励模型(RM):用人类偏好数据训练
  3. PPO优化:用奖励模型指导策略模型优化

PPO Loss:

LPPO=Et[min(rtAt,clip(rt(θ),1ε,1+ε)At)]βKL(πθπref)L_{PPO} = \mathbb{E}_t[min(r_t·A_t, clip(r_t(\theta), 1-ε, 1+ε)·A_t)] - β·KL(π_{\theta}||π_{ref})

  • r_t:策略比率 π(a|s)/π_old(a|s)
  • A_t:优势函数
  • KL约束:防止策略偏离参考模型太远

DPO Loss:

LDPO=Ex,yw,yl[logσ(βlogπθ(ywx)πref(ywx)βlogπθ(ylx)πref(ylx))]L_{DPO} = \mathbb{E}_{x,y_w,y_l}[ \log σ(β·\log\frac{π_{\theta}(y_w|x)} {π_{ref}(y_w|x)} - β·\log\frac{π_{\theta}(y_l|x)} {π_{ref}(y_l|x)})]

  • 直接优化偏好,无需奖励模型
符号 含义 说明
x,yw,ylx,y_w,y_l 偏好数据三元组 x: 提示词, y_w: 偏好回答, y_l: 非偏好回答
πθπ_{\theta} 当前策略模型 待优化的模型
πrefπ_{ref} 参考模型 SFT后的冻结模型
β 温度/正则系数 控制偏离参考模型的程度,通常0.1-0.5
σ Sigmoid函数 σ(z)=11+ezσ(z)=\frac 1 {1+e^{−z}}
logπθπref\log\frac{π_{\theta}}{π_{ref}} 隐式奖励 相当于奖励模型的输出

对比:

维度 PPO DPO
流程复杂度 高(3-4阶段) 低(类SFT)
计算成本 约PPO的1/3
训练稳定性 较差 较好

六、幻觉问题缓解

Q: 怎么缓解大模型的幻觉问题?

答案:

多层次缓解策略:

阶段 方法 说明
训练期 数据治理 高质量标注数据,减少错误标注
RLHF对齐 通过人类反馈校正错误倾向
事实监督 加入事实性验证数据
系统工程 RAG 外部知识库检索增强,提供实时事实支撑
工具调用 让模型调用计算器、搜索引擎等
推理期 低温度采样 降低softmax温度,减少随机性
引用溯源 要求模型提供信息来源
拒答机制 不确定时让模型说"不知道"
Verifier Agent 用验证模型检查输出

最佳实践: 多技术协同(RAG+CoT+RLHF+主动检测)可降低幻觉率96%


七、长上下文处理

Q: 对于超长上下文业界一般是怎么做的?Qwen是怎么做的?

答案:

业界方案:

  1. RoPE变体:YaRN、NTK-aware插值
  2. 滑动窗口注意力:只关注局部窗口
  3. 稀疏注意力:只计算部分token的注意力
  4. KV Cache压缩:如DeepSeek MLA

Qwen方案:

  • YaRN:改进的RoPE扩展方法
  • 窗口注意力:结合局部和全局注意力
  • 支持上下文:Qwen2.5支持128K+上下文

八、Flash Attention

Q: Flash Attention做法?

答案:

核心思想: IO感知的高效注意力实现

传统Attention瓶颈:

  • 需存储N×N注意力矩阵,显存O(N²)
  • 频繁读写HBM(高带宽内存),GPU利用率低

Flash Attention优化:

  1. 分块计算:将Q、K、V按块加载到GPU SRAM(共享内存)
  2. 算子融合:在块内完成Q·Kᵀ、softmax、加权求和
  3. 重算技术:反向传播时重计算注意力分数,减少显存占用

效果:

  • 显存占用降低5-20倍(从O(N²)到O(N))
  • 训练速度提升2-10倍
  • 保持数学结果完全精确(无近似)

九、多模态融合

Q: 多模态大模型如何融合文本与图像信息?

答案:

两种主流方案:

方案 原理 代表模型 优点 缺点
投影到统一embedding 用MLP将图像特征投影到文本embedding空间 LLaVA、BLIP-2 简单高效,架构改动小 模态交互有限
Cross-Attention 在Transformer层插入交叉注意力,让文本query attend视觉key/value Flamingo、Llama 3.2 Multimodal 视觉信息按需融合,更高效 架构复杂,训练成本高

差异:

  • 投影方案:图像token和文本token拼接后一起输入,底层融合
  • Cross-Attention:视觉信息作为外部memory,语言模型按需查询

十、Attention Scaled

Q: Attention为什么要做scaled,不做会怎么样,为什么用根号d_k?

答案:

Scaled Attention公式:

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

为什么要scaled:

  1. 防止softmax饱和:QK^T的点积值随d_k增大而增大
  2. 梯度消失问题:不做scaled时,softmax输入过大导致梯度接近0

为什么是√d_k:

  • Q和K的每个元素方差假设为1
  • QK^T的每个元素是d_k个独立变量的和,方差为d_k
  • 除以√d_k后,方差恢复为1,保持稳定的梯度流

十一、显存计算

Q: 4B模型部署需要多少显存?怎么算的?

答案:

显存组成:

1
总显存 = 模型权重 + 优化器状态 + 梯度 + 激活值 + KV Cache

4B模型推理显存估算:

  • FP16权重:4B × 2字节 = 8GB
  • KV Cache:约2-4GB(取决于上下文长度)
  • 激活值:约1-2GB
  • 总计:约12-14GB

训练显存估算(ZeRO-3):

  • 权重:4B × 2字节 = 8GB(分片后更少)
  • 梯度:8GB(分片)
  • 优化器:16GB(Adam,分片)
  • 激活值:随batch size变化
  • 总计:约40-60GB(多卡分片后单卡约10-15GB)

十二、MoE结构

Q: 大模型MoE结构相比于Dense结构,训练难点主要是什么?

答案:

MoE训练难点:

  1. 负载均衡:专家间负载不均,部分专家过载
  2. 训练不稳定:专家选择波动大,收敛困难
  3. 通信开销:token路由增加跨设备通信
  4. 稀疏梯度:部分专家更新频率低

DeepSeek MoE效果好的原因:

  1. 细粒度专家:更多小专家,提高专家利用率
  2. 共享专家:所有token共享部分专家,稳定训练
  3. 辅助损失:负载均衡损失约束专家使用率
  4. 动态路由:改进的token路由策略

十三、模型评估

Q: 如何评估大语言模型的性能?

答案:

常见评测指标:

  • 准确率/Accuracy:分类任务
  • BLEU/ROUGE:生成任务
  • Perplexity:语言建模
  • Win Rate:模型对比胜率

基准数据集:

类型 数据集 评测能力
通用 MMLU 多领域知识
推理 GSM8K 数学推理
代码 HumanEval 代码生成
对话 MT-Bench 对话质量
长文本 Needle In Haystack 长上下文检索

内部评估体系设计:

  1. 自动化评测:构建测试集+自动化脚本
  2. 人工评测:关键场景人工抽查
  3. A/B测试:线上流量对比
  4. 监控指标:幻觉率、拒答率、用户满意度

十四、开放题

Q: 目前大模型发展的上限可能在哪里?有哪些突破方向?

答案:

潜在上限:

  1. 数据瓶颈:高质量训练数据即将耗尽
  2. 算力瓶颈:训练成本指数增长
  3. 架构瓶颈:Transformer可能不是最优架构
  4. 对齐瓶颈:价值观对齐难以量化

突破方向:

  1. 新架构:状态空间模型(Mamba)、混合架构
  2. 高效训练:MoE、课程学习、合成数据
  3. 多模态融合:统一感知-认知-行动框架
  4. 推理优化:测试时计算、思维链优化
  5. 具身智能:与物理世界交互学习
  6. 小模型大能力:知识蒸馏、模型压缩