1. 项目概述
作为一名在AI领域深耕多年的从业者,我经常被问到关于大语言模型(LLM)面试准备的问题。最近整理了一套"LLM面试100题"系列,首篇聚焦预训练与微调这个核心主题。这25道题目不是简单的QA集合,而是基于真实面试场景设计的深度考察点,涵盖从基础概念到前沿实践的完整知识体系。
预训练与微调是LLM技术栈的基石,也是面试中必问的"硬通货"。这套题目特别适合三类人群:准备AI岗位面试的求职者、需要系统梳理知识体系的从业者,以及希望深入理解LLM技术原理的爱好者。通过这些问题,你不仅能应对面试,更能建立对LLM工作机理的立体认知。
2. 核心知识体系解析
2.1 预训练基础概念
预训练的本质是让模型从海量文本中学习通用语言表示。这个过程就像教婴儿认识世界——不需要特定任务指导,而是通过大量观察建立基础认知能力。在技术实现上,有几个关键点需要注意:
-
数据预处理流程:包括文本清洗、分词(tokenization)、序列化等步骤。以BERT为例,其WordPiece分词器需要特别注意处理稀有词和子词组合。
-
训练目标设计:主流的掩码语言建模(MLM)和下一句预测(NSP)各有特点。MLM通常采用15%的掩码比例,其中80%替换为[MASK],10%随机替换,10%保持不变,这种设计能有效平衡学习难度和效果。
-
硬件资源配置:预训练对计算资源要求极高。以175B参数的GPT-3为例,需要数千张GPU卡并行训练数周时间。实际面试中常被问到如何优化分布式训练效率。
提示:解释预训练概念时,建议结合具体模型架构和训练细节,避免停留在抽象描述层面。
2.2 微调技术详解
微调是将预训练模型适配到特定任务的关键步骤。与预训练相比,微调阶段有几个显著差异:
-
数据规模:微调数据通常比预训练数据小几个数量级,这就要求我们特别注意防止过拟合。常用的正则化技术包括:
- 早停(Early Stopping)
- 权重衰减(Weight Decay)
- 分层学习率(Layer-wise Learning Rate)
-
参数更新策略:不是所有层都适合微调。底层通常保留预训练权重,只调整上层参数。实践中可以采用渐进式解冻(Progressive Unfreezing)策略。
-
损失函数设计:根据不同任务需要定制损失函数。例如:
- 分类任务:交叉熵损失
- 生成任务:负对数似然
- 多任务学习:加权组合
下表对比了三种主流微调方法的优缺点:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 全参数微调 | 性能最优 | 计算成本高,易过拟合 | 数据量充足 |
| 适配器(Adapter) | 参数高效 | 增加推理延迟 | 资源受限 |
| 提示微调(Prompt Tuning) | 极简参数 | 需要设计提示模板 | 少样本学习 |
3. 面试题目深度解析
3.1 基础理论题
-
解释预训练和微调的区别与联系
预训练是在大规模无标注数据上学习通用表示,微调是在特定任务的小规模标注数据上调整模型。两者关系如同"通才"与"专才"——预训练获得广泛能力,微调实现特定领域优化。 -
为什么预训练模型能有效提升下游任务性能?
核心在于迁移学习:预训练捕获的语言知识(语法、语义、常识等)具有普适性。从表示学习角度看,预训练模型提供的初始化点位于损失函数的平坦区域,更容易微调收敛。 -
对比MLM和自回归语言建模的优劣
MLM(BERT式)允许双向上下文编码,适合理解类任务;自回归(GPT式)保持生成连贯性,适合文本生成。现代模型如T5尝试统一二者框架。
3.2 实践应用题
-
如何处理微调时的过拟合问题?
除了常规正则化,领域自适应预训练(DAPT)是有效方案:先在任务相关领域的无标注数据上继续预训练,再进行微调。实践表明这能提升约5-15%的性能。 -
如何选择微调时的学习率?
建议采用分层学习率:底层使用较小学习率(1e-5~1e-6),上层逐渐增大(1e-4~1e-3)。可采用三角形学习率调度(Triangular LR Schedule),初始值为1e-5,峰值设为3e-5。 -
解释适配器(Adapter)的工作原理
适配器是在Transformer层间插入的小型瓶颈结构,包含降维-非线性-升维操作。微调时冻结主干网络,只训练适配器参数。典型配置:将768维隐藏层降至64维,使用GeLU激活。
3.3 前沿趋势题
-
参数高效微调(PEFT)有哪些最新进展?
当前主流方向包括:- LoRA:低秩分解注入可训练矩阵
- Prefix-Tuning:学习连续提示向量
- Compacter:参数化超复杂乘法
其中LoRA在保持98%性能的同时,仅需训练0.1%参数。
-
如何评估预训练模型的质量?
超越传统困惑度指标,现代评估框架包含:- 探针任务(Probing Tasks):测试特定语言属性
- 少样本评估:5~10个示例下的表现
- 任务不可知评估:如GLUE、SuperGLUE基准
4. 实操技巧与避坑指南
4.1 预训练实践要点
-
数据管道优化
使用Apache Beam或Spark构建高效数据流水线。关键技巧:- 实现并行化分词
- 采用TFRecord格式存储
- 预计算样本长度实现动态batching
-
混合精度训练配置
在NVIDIA GPU上推荐配置:bash复制export TF_ENABLE_AUTO_MIXED_PRECISION=1 export AMP_ENABLE_CUDA=1同时设置梯度缩放(gradient scaling)防止下溢。
-
内存优化技巧
- 激活检查点(Activation Checkpointing):牺牲计算换内存
- 梯度累积(Gradient Accumulation):模拟更大batch size
- 模型并行:如TensorFlow的Mesh-TensorFlow
4.2 微调常见问题
-
损失震荡不收敛
典型解决方案流程:- 检查数据shuffle是否充分
- 降低学习率并增加warmup步数
- 尝试更小的batch size(如16→8)
- 添加梯度裁剪(阈值设为1.0)
-
GPU利用率低下
使用Nsight Systems分析发现:- 数据加载常是瓶颈→预取(prefetch)优化
- 内核启动开销→增大batch size
- 通信延迟→优化AllReduce策略
-
跨框架迁移问题
PyTorch与TF模型转换时注意:- 位置编码实现差异
- LayerNorm的epsilon默认值不同
- 注意力掩码处理逻辑
5. 高阶面试题解析
5.1 理论深度题
-
预训练目标的演进趋势是什么?
从单一目标(MLM)走向多任务统一:- Span Corruption(T5)
- 替换token检测(ELECTRA)
- 对比学习(SimCSE)
最新趋势是结合生成与理解的统一目标。
-
解释灾难性遗忘现象及解决方案
微调会覆盖预训练获得的通用知识。缓解方法:- 弹性权重固化(EWC)
- 知识蒸馏保留原始行为
- 多任务联合训练
5.2 系统设计题
-
设计一个支持多任务的微调系统
关键组件:- 共享特征提取器
- 任务特定头部网络
- 梯度路由机制
- 动态权重平衡算法
-
优化预训练模型的推理延迟
技术路线:- 量化(8bit/4bit)
- 知识蒸馏到小模型
- 结构化剪枝
- 编译器优化(XLA/TensorRT)
5.3 开放思考题
-
预训练模型的极限在哪里?
从三个维度分析:- 计算效率:规模收益递减
- 数据质量:清洁数据耗尽
- 架构创新:注意力机制改进空间
-
如何实现可持续的模型迭代?
构建技术闭环:- 自动化数据清洗
- 增量式预训练
- 在线学习机制
- 模型健康度监控
在实际面试中,除了准备标准答案,更重要的是展示思考过程。遇到开放性问题时,可以采用"问题拆解-多角度分析-权衡总结"的回答框架。例如讨论预训练数据策略时,可以分别从质量、多样性、领域覆盖等维度展开,最后给出平衡建议。