大模型面试常见问答

大模型面试 常见问答

电话面可直接背诵;现场面可展开白板推导。每题均给出:

① 面试官想听什么 ② 完整推导/代码 ③ 常见追问 & 反向提问


1. 什么是「大模型」?它与 2015 年的「大」CNN 有何本质区别?

面试官想听

不是参数数量级,而是「训练目标统一 + 涌现能力」带来的范式迁移。

完整回答

  1. 参数规模:>10 B 是行业约定,但关键在「训练数据量」与「参数线性正比」------Kaplan 律(2020):

    L ∝ (Nα)(Dβ), α≈0.34, β≈0.28

    即 10× 参数只需 3× 数据就能维持同样 loss。

  2. 目标函数统一:

    2015 的「大」CNN 仍用任务相关损失(分类 CE、检测 Smooth-L1);大模型全部用自回归 LM 目标

    max_θ Σ_t log P_θ(x_t | x_<t)

    好处:① 无需标注 ② 任意任务可转成「续写」

  3. 涌现能力(Emergent Ability)定义:Wei et al. 2022

    • 在 10^22 FLOPs 附近突然出现的 ICL、CoT、Instruction Following
    • 非线性跳跃:10× 参数 → 100× 任务准确率
  4. 工程边界:

    • 显存:单卡 80 GB → 模型权重 < 40 B(Adam 2 倍 + 梯度 1 倍 + 激活 0.5 倍)
    • 计算:训练 1 T token 需 10^24 FLOPs ≈ 1 万 A100×30 天

常见追问

Q:涌现是度量 artifact 吗?

A:用 bits per parameter 归一化后依旧跳跃;且在不同下游任务同时出现,排除单指标假象。

反向提问

贵司业务指标到达多少 token 后出现非线性提升?


2. Transformer 自注意力为什么 work?请给出数学表达 + 可视化。

面试官想听

「全局感受野 + 可并行 + 表达下界」三板斧,最好现场画注意力矩阵。

完整推导

  1. 全局依赖:任意两位置距离=1

    A = softmax( (QK^⊤) / √d_k ) ∈ R^{n×n}

    每行是合法概率:Σ_j A_{i,j} = 1

  2. 并行性:

    RNN 时间步依赖 → O(n) 顺序

    Attention 矩阵乘法 → O(1) 常数深度(实际受 memory wall 限制)

  3. 表达下界(Yun et al. 2020, ICML)

    单头 + ReLU 前馈 → 在 L^2§ 空间稠密

    即:∀ε>0, ∃ Transformer T s.t. ||T − f||_{L^2}<ε 对任意连续 f 成立

  4. 可视化技巧

    画 4×4 矩阵:

    • 对角亮 → 指代消解
    • 上三角亮 → 未来信息泄露(Decoder 需 mask)

代码级

python 复制代码
def show_attn(attn, tokens):  # attn: [n_heads, len, len]
    import seaborn as sns
    for h in range(attn.size(0)):
        sns.heatmap(attn[h].cpu().numpy(),
                   xticklabels=tokens,
                   yticklabels=tokens,
                   cmap='Blues')
        plt.title(f'head {h}')
        plt.show()

追问

Q:self-attention 与卷积的等价性?

A:CNN = 稀疏 + 共享 + 局部;attention = 全连接 + 动态权重 + 全局。

Wang & Isola 2022 证明:softmax attention ≈ 归一化卷积当核大小→n。


3. 多头 attention 是精度更高还是正则化?请用矩阵秩解释。

面试官想听

低秩分解 + 噪声视角,而非「多头看得更全面」这种文学描述。

数学

设单头输出 O = softmax(QK^⊤/√d_k)V ∈ R^{n×d}

多头拼接 [O_1;...;O_h] = [V_1;...;V_h] · diag(A_1,...,A_h)

= W_O · [A_1V_1; ...; A_hV_h]

等价于 块对角低秩近似 原全秩矩阵,秩 ≤ h·d_k

→ 1. 参数共享 2. 引入头间噪声 = 正则化

实验证据

h=1 → h=16 BLEU↑ 2.0;h>16 下降(正则化过度)

追问

Q:head 间 cosine 相似度通常多少?

A:训练后期 0.3~0.4;>0.7 说明冗余 → 可剪枝 30 % 头。


4. 位置编码:ROPE 为什么能外推 2× 长度不掉点?手推旋转矩阵。

面试官想听

复数旋转 → 线性插值无参数;现场写 2×2 块矩阵。

手推

把 q,k 当成复数向量:

q_m = (q_{2m} + i q_{2m+1})

旋转 R_θ = e^{i m θ} = cos mθ + i sin mθ

实部虚部展开:

\[cos mθ, −sin mθ\], \[sin mθ, cos mθ\]\] · \[x, y\]\^⊤ 外推时 θ' = θ · (L'/L) → **角度线性拉伸**,无新参数。 **代码验证** ```python def rotate_half(x): x1, x2 = x[..., ::2], x[..., 1::2] return torch.cat((-x2, x1), dim=-1) def apply_rope(x, seq_len, base=10000): dim = x.size(-1) inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2).float() / dim)) t = torch.arange(seq_len, device=x.device).type_as(inv_freq) freqs = torch.outer(t, inv_freq) # [seq, dim/2] emb = torch.cat((freqs, freqs), dim=-1) # [seq, dim] cos, sin = emb.cos(), emb.sin() return x * cos + rotate_half(x) * sin ``` **追问** Q:NTK-RoPE 与线性插值区别? A:NTK 动态放大底数 base → 高频分量不衰减,**长波保留**。 *** ** * ** *** ### 5. 优化器:Adam vs AdamW vs Lion,大模型到底选谁? **面试官想听** 权重衰减 vs L2 正则 + Lion 的二阶更新可视化。 **完整对比** | 优化器 | 等价于 | 大模型 10 B+ 经验 | |-------|-----------------|--------------------------------------| | Adam | β1=0.9 β2=0.999 | 需 **WD 解耦** | | AdamW | WD ≠ λ·‖θ‖² | 默认选择,λ=0.1 | | Lion | 符号动量 | **省 25 % 内存** ,lr×3,**跑 1.5× epoch** | **代码级** ```python # AdamW (PyTorch 2.0 原生) optimizer = torch.optim.AdamW(model.parameters(), lr=3e-4, weight_decay=0.1) # Lion (谷歌官方) from lion_pytorch import Lion optimizer = Lion(model.parameters(), lr=1e-4, weight_decay=0.01) ``` **追问** Q:Lion 为什么内存省? A:仅保存一阶动量;**符号操作**让梯度 1-bit 化 → 优化器状态减半。 *** ** * ** *** ### 6. 长序列 OOM:FlashAttention 的 3 个核心 trick 是什么? **面试官想听** Tiling + Recompute + Softmax 数值稳定,最好现场画 GPU 内存瀑布图。 **trick 1 Tiling** 把 Q 分 Br 行块,K,V 分 Bc 列块 → 把 O(n²d) 显存 → **O(Br·d)** Br=128, Bc=128 → A100 上 8 k 长度显存 \< 16 GB **trick 2 Softmax 局部修正** online softmax 算法: m_i = max(m_{i-1}, x_i) f_i = exp(x_i - m_i) + exp(m_{i-1} - m_i) \* f_{i-1} → **无需整张 n×n 得分矩阵** **trick 3 反向重计算** 只保存每块归一化常数,不保存得分 → **激活内存↓ 50 %** **追问** Q:与 Memory Efficient Attention 区别? A:MEA 用同样的 online softmax,但 **Tiling 尺寸固定**;Flash 针对 A100 SRAM 80 KB 手动调 Br,Bc → 带宽利用率 \> 90 %。 *** ** * ** *** ### 7. INT8 量化:校准 512 条样本够吗?KL 散度怎么算? **面试官想听** 校准集大小、长尾分布、KL 分段 → 现场写 numpy。 **步骤** 1. 收集激活 x ∈ ℝ\^N 2. 建直方图 H(bin)=count,归一化 P=H/N 3. 候选量化尺度 s ∈ \[0.95,0.98,0.999

  1. 对每 s 生成量化分布 Q:
    Q(i) = ∑_{x∈bin_i} 1{|x|≤s}
  2. KL(P‖Q)=∑ P(i) log(P(i)/Q(i))
  3. 选最小 KL 的 s → 截断长尾 0.1 %

代码

python 复制代码
def kl_calibration(tensor, n_bins=2048, num_s=100):
    hist, edges = np.histogram(tensor, bins=n_bins)
    P = hist / hist.sum()
    s_candidates = np.linspace(0.90, 0.999, num_s)
    best_s, min_kl = None, np.inf
    for s in s_candidates:
        q_edges = [-s, s]
        Q = np.histogram(tensor, bins=n_bins, range=q_edges)[0]
        Q = Q / Q.sum() + 1e-12
        kl = np.sum(P * np.log(P / Q + 1e-12))
        if kl < min_kl:
            min_kl, best_s = kl, s
    return best_s

追问

Q:INT4 为什么不用 KL?

A:4-bit 区间只有 16 档 → 直方图太粗 ;改用 MSE 网格搜索learned scale(LLM.int8() 2023)。


8. 小样本:每类 100 条如何做到 90 % 全量效果?

面试官想听

两阶段:continual pre-train → prompt-tune + 数据增强 MixUp

阶段 1 Continual LM pre-train

  • 数据:任务领域 100 M token
  • 目标:同自回归 LM
  • 超参:lr=2e-5, 1 epoch, batch=1 M token
    领域适配,PPL ↓ 30 %

阶段 2 Prompt-tuning

  • 仅训练 20 个 virtual token
  • 学习率 0.1(比全模型高 1000×)
  • 早停:验证 loss 连续 3 次不降
    参数量 < 0.1 %,收敛 10 min

数据增强

  • 隐藏层 MixUp:
    z = λ z₁ + (1−λ) z₂, λ~Beta(0.4,0.4)
  • 反向翻译(同义句)+ EDA 同义词
    指标↑ 2~3 点

实验结果

AGNews 4-class, 每类 100 样本

全量微调 94.2 % → Prompt 91.7 % → 两阶段 93.8 %


9. 模型并行 vs 数据并行 vs 张量并行,现场画图。

面试官想听

把 GPU 画成方块,标箭头;给出通信量公式。

复制代码
数据并行:同一模型,不同 batch
[G0] ←→ [G1] ←→ [G2] ←→ [G3]
   ↕ All-Reduce gradient 4×

模型并行:同一 batch,不同层
[G0] → [G1] → [G2] → [G3]
   ↕ 激活传递 2×

张量并行:同一层,不同列
[G0] ←→ [G1]   # QK 列切
[G2] ←→ [G3]   # V  列切
   ↕ All-Reduce 2×

通信量

数据并行:bytes = 2 × model_size × n_gpu

张量并行:bytes = 2 × activation_size × seq_len × n_layer

长序列用张量并行更划算


10. 线上 4-bit 量化落地:TensorRT-LLM 全流程

面试官想听

校准 → 量化 → 引擎 → 服务,给出延迟/吞吐数字。

步骤

  1. 校准:512 条业务 query → KL 选 scale
  2. 量化
    • 权重:GPTQ W4A16, group-size 128
    • 激活:smoothQuant α=0.5
  3. 引擎
    trtllm-build --quantization gptq --max_batch_size 64 --max_input_len 2048
  4. 服务
    • inflight-batching + continuous batching
    • 首 token 延迟 380 ms → 190 ms
    • 吞吐 1200 → 3100 req/s

追问

Q:4-bit 后如何再微调?

A:QLoRA -- 量化 backbone + LoRA adapter 16-bit,lr=1e-4,不掉点


11. 注意力变体:为什么 Sparse/Sparse-Trans 仍打不过 Dense?

面试官想听

稀疏度-带宽-实现三角债:理论 FLOPs↓ 10×,实际 wall-time 只↓ 2×。

原因

  1. GPU 内存带宽 主导:随机稀疏 → gather/scatter 耗时
  2. block sparse 需 mask 对齐 16×16 → 仍大量无效计算
  3. flash attn 优化后 dense 带宽已 > 70 % 理论峰值

结论:除非 sparsity > 95 % 且 模式固定(Longformer sliding window),否则 dense 更香。


12. 反向提问面试官(收割 offer 手势)

  1. 贵司线上最大长度是多少?首 token P99 目标多少毫秒?
  2. 长文本场景有试过 NTK-RoPE 吗?与 ALiBi 相比体验如何?
  3. 量化方案是 PTQ 还是 QAT?W4A16 vs W8A8 在业务指标差多少?
  4. 模型并行用 Megatron 还是 DeepSpeed-Ulysses?通信瓶颈在哪个 All-Reduce?

祝各位反向收割 offer,薪资 double!

相关推荐
Java后端的Ai之路2 小时前
【AI大模型开发】-RAG 技术详解
人工智能·rag
墨香幽梦客2 小时前
家具ERP口碑榜单,物料配套专用工具推荐
大数据·人工智能
鹿角片ljp2 小时前
力扣7.整数反转-从基础到边界条件
算法·leetcode·职场和发展
java修仙传2 小时前
力扣hot100:前K个高频元素
算法·leetcode·职场和发展
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-考试系统DDD(领域驱动设计)实现步骤详解
java·数据库·人工智能·spring boot
敏叔V5872 小时前
从人类反馈到直接偏好优化:AI对齐技术的实战演进
人工智能
琅琊榜首20202 小时前
AI赋能短剧创作:从Prompt设计到API落地的全技术指南
人工智能·prompt
测试者家园2 小时前
Prompt、Agent、测试智能体:测试的新机会,还是新焦虑?
人工智能·prompt·智能体·职业和发展·质量效能·智能化测试·软件开发和测试
嗷嗷哦润橘_2 小时前
从萝卜纸巾猫到桌游:“蒸蚌大开门”的设计平衡之旅
人工智能·算法·游戏·概率论·桌游