最近好多朋友都在问:有面过xx大模型开发平台的吗?想取一下经。
于是乎,我就整理了这篇文章,替大家整理了一些AI大模型可能会被问到的面试题。
下面是我在网上找到的一些AI大模型相关的岗位要求:
- 某哈游
- 某里巴巴
可以看到一些很常见的名词:SFT (监督微调)、RLHF (基于人类反馈的强化学习)、Reward Model (奖励模型)、AI Agent、RAG等等。
下面是我整理的一些面试题,大家可以学习一下。
encoder-only、decoder-only、encoder-decoder 不同架构在实际应用的使用场景
答案:在实际应用中,不同Transformer架构的选择取决于任务需求。
- Encoder-only架构(如BERT、RoBERTa):主要用于理解型任务,因为它能高效编码输入序列的上下文信息。典型应用场景包括文本分类(如情感分析)、命名实体识别(NER)、问答系统(如提取式问答),因为这些任务需要深度理解输入文本的语义和关系。例如,在客户服务聊天机器人中,用于意图识别。
- Decoder-only架构(如GPT系列、Llama):专注于生成型任务,因为它通过自回归方式逐个生成输出token。典型应用场景包括文本生成(如故事创作)、摘要生成、代码补全和聊天机器人响应,因为这些任务需要模型基于上下文预测后续内容。例如,在内容创作工具中生成营销文案。
- Encoder-decoder架构(如T5、BART):适用于序列到序列(seq2seq)任务,因为它结合了编码输入的上下文和解码生成输出。典型应用场景包括机器翻译(如英译中)、文本摘要(输入长文本输出摘要)、语音识别转文本,因为这些任务需要同时理解输入和生成结构化输出。例如,在翻译服务中处理多语言文档。
总体而言,encoder-only适合“输入分析”,decoder-only适合“输出生成”,encoder-decoder适合“输入-输出转换”;选择时需考虑计算效率(encoder-only通常更轻量)和任务复杂度(encoder-decoder更灵活但资源密集)。
llama2 网络架构?使用了哪些注意力机制
答案:Llama 2基于Transformer的decoder-only架构,由Meta AI开发,旨在高效处理大规模语言任务。
网络架构:
- 核心组件包括多个Transformer块(层数可配置,如7B参数模型有32层),每层包含多头自注意力机制和前馈神经网络。
- 输入通过token嵌入层,后加位置编码;输出经LayerNorm和残差连接,最终通过线性层生成预测。
- 关键特点:使用RMSNorm(Root Mean Square Layer Normalization)替代LayerNorm以提升稳定性,并采用SwiGLU激活函数增强非线性能力。模型支持上下文长度达4096 tokens。
注意力机制:
- 主要使用多头自注意力(Multi-Head Self-Attention):每个头独立计算query、key、value的点积注意力,然后拼接结果,允许模型并行关注不同子空间。
- 具体实现:采用缩放点积注意力(Scaled Dot-Product Attention),其中注意力分数通过softmax归一化,并添加了因果掩码(causal mask)确保自回归属性(即当前token仅依赖左侧上下文)。
- 优化机制:Llama 2引入了分组查询注意力(Grouped Query Attention, GQA) 的变体(尤其在较大模型如70B参数版本中),通过共享key和value投影减少计算开销,提升推理效率,而不牺牲性能。
llama2 的位置编码了解吗? 讲讲几种位置编码的异同
答案:Llama 2使用旋转位置编码(Rotary Position Embedding, RoPE),它是一种高效的位置编码方法。以下详述RoPE及与其他编码的异同:
Llama 2的位置编码:RoPE:
- 原理:通过旋转query和key向量来编码位置信息。具体来说,对每个位置索引,应用一个旋转矩阵到query和key的嵌入中,从而在注意力计算中注入相对位置关系。公式为:将token嵌入与旋转矩阵相乘,其中旋转角度基于位置差。
- 优点:能处理长序列(如4096 tokens),因旋转操作保持向量范数不变,避免数值不稳定;且支持相对位置感知,无需额外参数,计算高效。
几种位置编码的异同:
绝对位置编码(如Sinusoidal):
- 原理:使用预定义的正余弦函数生成固定位置向量,直接添加到token嵌入(如原始Transformer)。
- 异同:与RoPE相比,它简单但缺乏灵活性——RoPE动态编码相对位置,而Sinusoidal是静态的;两者都无学习参数,但RoPE在长序列任务中表现更好(如困惑度更低)。
相对位置编码(如ALiBi):
- 原理:在注意力分数中添加基于位置差的偏置项(如线性衰减偏置),不修改嵌入本身。
- 异同:与RoPE都关注相对位置,但RoPE通过几何旋转实现,而ALiBi是启发式偏置;RoPE通常泛化性更强(适合多种任务),而ALiBi更易扩展到超长序列(如100k tokens),但RoPE在Llama 2中平衡了效率和性能。
学习式位置编码(如BERT的嵌入层):
- 原理:位置向量作为可学习参数,通过训练优化。
- 异同:与RoPE相比,它更灵活但增加模型大小和过拟合风险;RoPE无额外参数,更适合资源受限场景。RoPE和ALiBi在近年大模型中更流行,因它们避免位置嵌入的局限性。
- 总结:RoPE在Llama 2中被选用,因其在自回归生成任务中高效、稳定,优于Sinusoidal和简单学习式编码;ALiBi更适合极端长上下文,但RoPE是当前decoder-only模型的主流选择。
基础大模型训练流程及资源使用情况
答案:基础大模型(如Llama 2或GPT)的训练流程涉及多阶段优化,资源消耗巨大,需分布式计算。
训练流程:
- 数据准备:收集大规模文本数据(如Web文本、书籍),进行清洗、去重、分词(使用Byte Pair Encoding或SentencePiece)。数据量通常达TB级(例如Llama 2使用2 trillion tokens)。
预训练:
- 核心阶段:采用自监督学习,如causal language modeling(预测下一token)或masked language modeling。
- 过程:初始化模型权重(随机或迁移学习),在分布式集群上迭代训练;使用优化器(AdamW)和学习率调度(cosine decay)。
- 时长:数周至数月,例如Llama 2 70B模型训练需约21天。
- 微调(可选):针对特定任务(如聊天或安全对齐),使用监督数据(如指令数据集)进行fine-tuning,可能包括RLHF(Reinforcement Learning from Human Feedback)来对齐人类偏好。
- 评估与部署:在held-out数据集上评测指标(如困惑度、准确率),并通过量化或蒸馏优化后部署。
资源使用情况:
- 计算资源:依赖GPU集群(如NVIDIA A100/H100),训练Llama 2 7B模型需约1,720 GPU天(使用2,000 A100 GPUs),70B模型需约1.7 million GPU小时。计算以PFLOPS(petaflops)衡量,峰值达数百PFLOPS。
- 显存需求:模型参数和优化器状态占用大量显存(例如70B模型需>1TB显存),通过模型并行(如tensor parallelism)和数据并行(如ZeRO优化)分摊。
- 存储与网络:训练数据需PB级存储;分布式训练中,GPU间通信带宽(如InfiniBand)是关键瓶颈。
- 成本:训练一个70B模型可耗资数百万美元,涵盖硬件、电力和冷却。优化方法包括混合精度训练(FP16/FP32)以减少显存。
了解 langchain 吗? 讲讲主要结构和主要组件,处理复杂任务链时有哪些优势
答案:LangChain是一个开源框架,用于构建基于大语言模型(LLM)的应用程序,支持链式、代理式任务处理。
主要结构和组件:
- 模型(Models):接口连接LLMs(如GPT-4或Llama 2)或嵌入模型,用于文本生成或语义理解。
- 提示(Prompts):模板化管理输入提示(prompt templates),支持动态变量插入,提升可复用性。
- 链(Chains):核心组件,将多个步骤组合成序列(如“获取数据→分析→生成报告”);类型包括简单链(SequentialChain)和转换链(TransformChain)。
- 代理(Agents):高级结构,使用LLM作为“大脑”调用工具(tools),如搜索引擎或API,实现动态决策(如ReAct框架)。
- 内存(Memory):存储对话历史或状态(如ConversationBufferMemory),支持上下文感知应用(如多轮聊天)。
- 索引(Indexes):集成外部数据源(如向量数据库),通过检索增强生成(RAG)访问私有知识。
- 其他:回调系统(logging)、输出解析器(结构化响应)。
处理复杂任务链时的优势:
- 模块化与可组合性:组件如链和代理可嵌套,轻松构建多步任务(例如,先检索文档再总结),避免单一LLM的局限。
- 动态适应:代理能基于实时反馈调用工具(如计算器或网络搜索),处理开放式问题(如市场分析),提升鲁棒性。
- 状态管理:内存组件维护会话历史,支持长期依赖任务(如用户咨询流),优于无状态LLM调用。
- 效率与扩展性:通过索引集成外部数据,减少幻觉;链式处理可并行化步骤,加速复杂pipeline(如数据分析报告生成)。
- 开发友好:抽象化底层复杂性,开发者专注业务逻辑,快速迭代应用(如用少量代码实现问答系统)。
显存不够时,一般怎么解决的,有哪些常见的优化方法
答案:显存不足是大模型训练或推理的常见问题,解决方法包括算法优化和系统级技术,旨在减少显存占用或分摊负载。
常见优化方法:
- 梯度检查点(Gradient Checkpointing):在反向传播时只存储部分激活值,而非全部,通过重计算节省显存(牺牲时间换空间)。例如,在训练中可减少50%显存,但增加约20%计算时间。
- 混合精度训练(Mixed Precision Training):使用FP16或BF16浮点数存储参数和梯度,结合FP32 master copy避免精度损失(通过NVIDIA AMP库)。可降低显存占用50%并加速计算。
模型并行(Model Parallelism):将模型拆分到多个GPU:
- Tensor Parallelism:层内拆分(如注意力头分布)。
- Pipeline Parallelism:层间拆分(不同GPU处理不同层)。
例如,Megatron-LM或DeepSpeed实现,适合超大模型(如>10B参数)。
- 数据并行(Data Parallelism):每个GPU持有完整模型副本,但处理不同数据分片;结合ZeRO(Zero Redundancy Optimizer) 优化器(如DeepSpeed),将优化器状态、梯度和参数分区存储,极大减少冗余(ZeRO-Offload可进一步卸载到CPU内存)。
- 量化(Quantization):将模型权重从FP32转换为INT8或INT4,减少存储大小;分训练后量化(PTQ)和量化感知训练(QAT)。例如,INT8量化可压缩模型75%,但可能损失少量精度。
- 卸载(Offloading):将不活跃数据移至CPU RAM或NVMe存储(如Hugging Face Accelerate或DeepSpeed-Infinity),使用智能调度在需要时加载回GPU。
- 修剪(Pruning):移除冗余权重(如小幅度参数),结构化修剪(如移除整个神经元)可压缩模型大小。
- 蒸馏(Distillation):训练小模型模仿大模型输出,减少推理显存。
- 实际应用:优先组合方法(如ZeRO + 混合精度),使用框架(DeepSpeed、PyTorch FSDP);在推理时,量化+卸载是首选。例如,Llama 2推理可通过4-bit量化在单消费级GPU运行。
7. 几种主流大模型的 loss了解过吗? 有哪些异同?
答案:主流大模型如GPT系列、BERT、T5和LLaMA等,都基于自监督学习设计损失函数,核心目标是优化模型的语言表示能力。以下是关键点:
常见loss类型:
- GPT系列(如GPT-3、GPT-4):使用自回归语言建模损失(Autoregressive Language Modeling Loss),通常是交叉熵损失(Cross-Entropy Loss)。模型基于序列预测下一个token,损失计算为预测概率与实际token的交叉熵。公式表示为:$L = -\sum_{t} \log P(x_t | x_{<t})$,其中 $x_t$ 是当前token,$x_{<t}$ 是历史序列。
- BERT:使用掩码语言建模损失(Masked Language Modeling Loss, MLM) 和 下一句预测损失(Next Sentence Prediction Loss, NSP)。MLM损失随机掩码部分输入token,模型预测被掩码的token,使用交叉熵损失;NSP损失判断两个句子是否连贯,使用二元交叉熵损失。
- T5:统一为文本到文本框架,损失基于序列到序列的交叉熵损失。模型输入输出都是文本,损失函数类似于自回归损失,但支持多任务(如翻译、摘要)。
- LLaMA(Meta):类似GPT,使用纯自回归语言建模损失,但优化了训练效率和规模。
异同点:
- 相同点:所有模型都依赖交叉熵损失作为基础,因为它高效处理分类任务;都通过自监督学习预训练,减少对标注数据的依赖;目标都是最小化预测错误,提升语言理解能力。
不同点:
- 预测方向:GPT和LLaMA是单向(自回归),只使用历史信息;BERT是双向,利用全上下文信息;T5是序列到序列,可处理双向任务。
- 任务设计:GPT专注生成任务,损失简单;BERT引入NSP增强句间关系;T5统一损失支持多任务,更灵活。
- 效率:自回归损失(如GPT)训练慢但生成质量高;MLM损失(如BERT)训练快但需额外掩码步骤。
- 实际影响:选择loss取决于模型架构——GPT类适合生成式应用,BERT类适合理解任务。异同源于模型设计哲学:GPT追求生成连贯性,BERT强调上下文捕捉。
8. 了解半精度训练吗? 展开讲讲原理和优点,在实际应用中有哪些挑战。
答案:这是一种优化深度学习训练的技术,使用16位浮点数(FP16)代替传统的32位浮点数(FP32)。下面详细展开:
原理:
- 核心机制:半精度训练利用GPU硬件支持(如NVIDIA的Tensor Cores),将权重、激活值和梯度存储在FP16格式中,减少内存占用和计算带宽。计算过程保持FP16,但关键操作(如梯度累积)可能混合FP32(称为混合精度训练)以维持数值稳定性。流程包括:前向传播用FP16计算损失,反向传播用FP16计算梯度,然后通过Loss Scaling放大梯度(避免下溢出),最后更新权重时可能转换为FP32进行高精度优化。
- 数学基础:FP16范围较小(约 $10^{-5}$ 到 $10^4$),精度较低(约4位小数),相比FP32(范围 $10^{-38}$ 到 $10^{38}$,精度约7位小数)。这导致计算更快,但需处理数值误差。
优点:
- 内存节省:FP16占用内存仅为FP32的一半(2字节 vs 4字节),允许训练更大模型或batch size,提升吞吐量。
- 速度提升:GPU对FP16计算优化,运算速度可提高2-3倍,减少训练时间。
- 能耗降低:数据传输和计算更高效,节省功耗,对大规模集群训练尤为重要。
实际应用中的挑战:
- 数值不稳定:FP16易导致梯度下溢出(接近零时精度丢失)或上溢出(值过大),引发训练发散。解决方法包括Loss Scaling(放大梯度后再计算)和混合精度(关键部分用FP32)。
- 精度损失:模型输出可能略降质量,需精细调参(如学习率调整)补偿。
- 兼容性问题:旧硬件或框架支持不足,需依赖库如PyTorch AMP或TensorFlow Mixed Precision。
- 调试难度:梯度异常难追踪,增加开发成本。实践中,需结合梯度裁剪和监控工具。
总体而言,半精度训练在LLM训练中广泛应用(如GPT-3),但需平衡效率与稳定性。
9. deepspeed 用过吗? 分布式训练中如何提升效率。
答案:DeepSpeed(由Microsoft开发),它是一个高效的大规模分布式训练库,常用于训练LLM(如Megatron-Turing)。在分布式训练中,DeepSpeed提升效率主要通过以下方式:
核心优化技术:
- ZeRO(Zero Redundancy Optimizer):这是DeepSpeed的核心,分三个阶段(ZeRO-1, ZeRO-2, ZeRO-3)减少内存冗余。例如,ZeRO-3将优化器状态、梯度和权重分区到不同GPU上,避免全复制,可将内存占用降低数倍,支持更大模型。
- 梯度检查点(Gradient Checkpointing):牺牲计算时间换取内存节省,通过只存储关键激活值,在反向传播时重新计算中间值,减少GPU内存压力。
- 混合精度训练集成:DeepSpeed内置支持FP16/混合精度,结合Loss Scaling,加速计算同时控制数值稳定性。
- 管道并行(Pipeline Parallelism):将模型层拆分到多个GPU上,流水线执行,减少通信开销。DeepSpeed优化了气泡(bubble)问题,提升吞吐量。
- 高效通信:使用NCCL或自定义通信库优化All-Reduce操作,减少GPU间数据传输延迟。
- 效率提升效果:在实践(如训练10B+参数模型)中,DeepSpeed可将训练速度提升2-5倍,内存需求降低多达10倍。例如,ZeRO-Offload允许将部分数据卸载到CPU,进一步扩展模型规模。
- 使用经验:我部署DeepSpeed时,需配置JSON文件定义优化策略(如设置ZeRO stage),并监控资源利用率。挑战包括调参复杂性和集群配置,但整体显著加速分布式训练。
10. 解释SFT的基本原理及其在大模型训练中的作用,并说明SFT数据集的标准格式要求?
答案:SFT(Supervised Fine-Tuning)是监督微调的缩写,核心原理是在预训练大模型基础上,使用有标注数据进行针对性优化,以适配特定任务。
- 基本原理:SFT基于迁移学习。预训练模型(如GPT)已学习通用语言表示,SFT阶段输入任务特定数据,通过标准监督学习更新模型权重。损失函数通常为交叉熵损失,目标是最小化预测输出与真实标签的差异。例如,在对话任务中,模型学习生成符合人类响应的文本。
在大模型训练中的作用:
- 任务适应:将通用模型转化为领域专家(如客服、代码生成),提升准确性和相关性。
- 性能提升:相比预训练,SFT能快速收敛(只需少量数据),改善输出质量和可控性。
- 安全基础:作为RLHF的前置步骤,为后续人类反馈训练奠定基础。
SFT数据集的标准格式要求:
通用格式:数据集通常为文本对形式,常见于JSON或CSV文件。标准结构包括:
- 输入(prompt):用户查询或上下文,字段名如
"prompt"
或"input"
。 - 输出(completion):期望的模型响应,字段名如
"completion"
或"response"
。 - 可选字段:
"system"
(系统指令)、"label"
(类别标签)或"id"
(样本ID)。
- 输入(prompt):用户查询或上下文,字段名如
示例格式(JSON):
[ { "prompt": "解释机器学习的概念。", "completion": "机器学习是AI的子领域,通过数据训练模型进行预测。" }, { "prompt": "写一首关于春天的诗。", "completion": "春风轻拂,花开满园..." } ]
- 质量要求:数据需高质量、多样性覆盖任务场景;避免偏见和噪声;规模通常数千到百万样本。常用数据集如Alpaca或自定义收集。
11. 详细描述RLHF的训练流程,并分析其如何解决SFT模型的有害性和幻觉问题?
答案:RLHF(Reinforcement Learning from Human Feedback)训练流程通过人类偏好优化模型,解决SFT模型的局限性如有害性(生成有害内容)和幻觉(输出不实信息)。流程分四步:
详细训练流程:
- 预训练(Pretraining):训练基础大模型(如GPT)使用大规模无监督数据,建立语言能力。
- SFT微调(Supervised Fine-Tuning):在预训练模型上,使用有监督数据微调,获得初始策略模型(如用于对话生成)。
- 奖励模型训练(Reward Model Training):收集人类偏好数据(例如,标注员对模型输出的好坏排序),训练一个奖励模型(RM)。RM是神经网络,输入为prompt和completion对,输出标量奖励值;训练目标为偏好排序(如使用Bradley-Terry模型和交叉熵损失)。
- 强化学习优化(Reinforcement Learning Optimization):使用SFT模型作为初始策略,通过RL算法(如PPO-Proximal Policy Optimization)优化。环境由RM模拟:策略模型生成输出,RM给出奖励,RL更新策略以最大化累积奖励。关键点包括KL散度约束(防止偏离SFT太远)和多次迭代。
解决有害性和幻觉问题:
- 针对有害性:在RM训练中,人类标注员显式标记有害输出(如暴力、偏见)为低奖励,引导RL策略避免生成此类内容。RL的探索-利用机制学习安全边界,而KL约束确保不激进偏离SFT基础。
- 针对幻觉:RM通过偏好数据奖励事实性输出(如基于真实知识),惩罚虚构信息。RL流程强化可信来源的生成,减少不确定性。实验证明(如InstructGPT),RLHF能显著降低幻觉率(高达30-50%)。
- 机制分析:RLHF引入人类价值观作为优化目标,直接纠偏SFT的过拟合或数据偏差。相比纯SFT,RLHF提供动态反馈,使模型更对齐人类意图。挑战包括标注成本和RM偏差,但整体提升安全性和真实性。
12. 奖励模型的训练目标是什么?
答案:奖励模型(Reward Model, RM)的训练目标是学习一个函数,能准确预测人类对模型输出的偏好程度,从而为强化学习阶段提供优化信号。具体目标如下:
- 核心目标:RM被训练为二分类或排序模型,输入包括prompt(用户输入)和completion(模型输出),输出为一个标量奖励值。该值表示人类偏好的相对质量(例如,高分表示更好输出)。
训练目标数学表述:基于偏好数据(如标注员提供的输出对 $(y_w, y_l)$,其中 $y_w$ 是偏好输出,$y_l$ 是次优输出),目标是最小化偏好排序的损失。常用Bradley-Terry模型:
- 损失函数为交叉熵损失:$L = -\log \sigma(r(y_w) - r(y_l))$,其中 $r(\cdot)$ 是RM输出的奖励值,$\sigma$ 是sigmoid函数。这鼓励RM为更好输出分配更高奖励。
实现细节:RM训练使用监督学习,数据集来自人类标注(如成对比较)。目标确保RM泛化到未见数据,为RL提供稳定、高效的奖励信号。最终,RM的目标是充当“人类代理”,指导策略模型生成安全、有用、真实的输出。
欢迎关注 ❤
我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。
没准能让你能刷到自己意向公司的最新面试题呢。
感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。