前言
刷题,是面试前的必备环节。想要入职大厂可谓是千军万马过独木桥。为了通过层层考验,刷题肯定是必不可少的。鉴于此大厂多年经验技术面试官总结根据BAT AI大模型面试1000题系列,结合各个大厂的面试题型整理了一份《AI大模型面试刷题宝典》,为了阅读体验,面试题都按知识点整理好了,可谓非常用心了。
每一章节都是站在企业考察思维出发,作为招聘者角度回答。从考察问题延展到考察知识点,再到如何优雅回答一面俱全,可以说是求职面试的必备宝典,每一部分都有上百页内容
一、基础篇
1、目前主流的开源模型体系有哪些?
Transformer体系:由Google提出的Transformer 模型及其变体,如BERT、GPT 等。
PyTorch Lightning:一个基于PyTorch的轻量级深度学习框架,用于快速原型设计和实验。
TensorFlow Model Garden:TensorFlow官方提供的一系列预训练模型和模型架构。
Hugging Face Transformers:一个流行的开源库,提供了大量预训练模型和工具,用于NLP 任务。
2、prefix LM 和 causal LM 区别是什么?
prefix LM(前缀语言模型):在输入序列的开头添加一个可学习的任务相关的前缀,然后使用这个前缀和输入序列一起生成输出。这种方法可以引导模型生成适应特定任务的输出。
causal LM (因果语言模型):也称为自回归语言模型,它根据之前生成的 token
预测下一个token。在生成文本时,模型只能根据已经生成的部分生成后续部分,不能访问未来的信息。
3、涌现能力是啥原因?
涌现能力 (Emergent Ability):是指模型在训练过程中突然表现出的新的、之前未曾预料到的能力。这种现象通常发生在大型模型中,原因是大型模型具有更高的表示能力和更多的参数,可以更好地捕捉数据中的模式和关联。
随着模型规模的增加,它们能够自动学习到更复杂、更抽象的概念和规律,从而展现出涌现能力。
二、进阶篇
1、llama输入句子长度理论上可以无限长吗?
LLaMA(Large Language Model Adaptation)模型的输入句子长度受到硬件资源和模型设计的限制。
理论上,如果硬件资源足够,模型可以处理非常长的输入句子。然而,实际上,由于内存和处理能力的限制,输入句子长度通常是有限制的。在实际应用中,开发者会根据具体需求和硬件配置来确定合适的输入句子长度。
2、什么是LLMs复读机问题?
LLMs复读机问题是指在某些情况下,大型语言模型在生成文本时会重复之前已经生成的内容,导致生成的文本缺乏多样性和创造性。
3、为什么会出现LLMs复读机问题?
LLMs复读机问题可能由多种因素引起,包括模型训练数据中的重复模式、模型在处理长序列时的注意力机制失效、或者模型在生成文本时对过去信息的过度依赖等。
4、如何缓解LLMs复读机问题?
数据增强:通过增加训练数据的多样性和复杂性,减少重复模式的出现。
模型改进:改进模型的结构和注意力机制,使其更好地处理长序列和避免过度依赖过去信息。
生成策略:在生成文本时采用多样化的策略,如抽样生成或引入随机性,以增加生成文本的多样性。
5、什么情况用Bert模型,什么情况用LLaMA、ChatGLM类大模型?
BERT模型通常用于需要理解文本深层语义的任务,如文本分类、命名实体识别等。
LLaMA和
ChatGLM类大模型则适用于需要生成文本或进行更复杂语言理解的任务,如对话系统、文本生成等。选择哪种模型取决于任务的需求和可用资源。
三、大模型 (LLMs)
1、LangChain什么是LangChain?
LangChain是一个用于构建和运行大型语言模型应用的开源框架。它提供了一套工具和组件,帮助开发者将大型语言模型(如
GPT-3)与其他工具和API结合,以完成更复杂的任务。
2、LangChain包含哪些核心概念?
Components:可重用的模块,例如API调用、数据库查询等。
Chains:将多个Components链接在一起以完成特定任务的流程。
Prompt Templates: 用于指导语言模型生成输出的文本模板。
Output Parsers:解析语言模型输出的工具。
Indexes and Retrievers: 用于存储和检索信息的索引和数据检索器。
Agents and Toolkits:提供特定领域功能的代理和工具集。
3、什么是LangChain Agent?
LangChain
Agent是一种可以执行一系列操作以完成复杂任务的程序。它可以根据给定的输入和上下文,选择合适的工具和策略来生成响应或执行操作。
4、如何使用LangChain?
定义Components: 创建或集成各种API和工具。
构建Chains: 将Components组合成完成特定任务的流程。
设置Prompt Templates: 定义用于指导语言模型的文本模板。
配置Output Parsers: 解析和提取语言模型的输出。
部署和运行:将构建的应用部署到服务器或云平台,并进行测试和优化。
5、LangChain支持哪些功能?
集成和调用外部API。
查询和操作数据库。
文本生成和编辑。
信息检索和问答。
多步骤任务执行和决策。
6、什么是 LangChain model?
LangChain
model指的是在LangChain框架中使用的大型语言模型,如GPT-3或类似的模型。这些模型通常用于生成文本、回答问题或执行特定的语言任务。
四、大模型分布式训练
1、大模型进行训练,用的是什么框架?
TensorFlow是一个由Google开发的开源机器学习框架,它提供了强大的分布式训练功能。
TensorFlow支持数据并行、模型并行和分布式策略等多种分布式训练方法。PyTorch是一个由Facebook的Al研究团队开发的流行的开源机器学习库。它提供了分布式包(torch.distributed),支持分布式训练,并且可以通过使用torch.nn.parallel.DistributedDataParallel(DDP)或torch.nn.DataParallel来实现数据并行。
Horovod是由Uber开源的分布式训练框架,它基于MPI(Message Passing Interface)并提供了一种简单的方法来并行化TensorFlow 、Keras 、PyTorch和Apache
MXNet等框架的训练。Horovod特别适合于大规模的深度学习模型训练。Ray是一个开源的分布式框架,用于构建和运行分布式应用程序。Ray提供了Ray Tune(用于超参数调优)和RayServe(用于模型服务),并且可以与TensorFlow、PyTorch和MXNet等深度学习库集成。
HuggingFace的Accelerate库是为了简化PyTorch模型的分布式训练而设计的。它提供了一个简单的API来启动分布式训练,并支持使用单个或多个GPU以及TPU。
DeepSpeed是微软开发的一个开源库,用于加速PyTorch模型的训练。它提供了各种优化技术,如ZeRO(Zero Redundancy Optimizer)和模型并行性,以支持大规模模型的训练。
2、业内常用的分布式AI框架?
Horovod:由Uber开发,基于MPI的分布式训练框架。
Ray:用于构建和运行分布式应用程序的开放源代码框架。
DeepSpeed:由微软开发,用于加速深度学习训练的库,它提供了数据并行、张量并行和模型并行等多种并行策略。
FairScale:由Facebook开发,提供了类似于DeepSpeed的功能。
3、数据并行、张量并行、流水线并行的原理及区别?
数据并行:在数据并行中,模型的不同副本在不同的设备上运行,每个设备处理输入数据的不
同部分。每个设备独立地进行前向传播和反向传播,但参数更新是同步的。数据并行的主要优点是简单且易于实现。张量并行:在张量并行中,模型的单个层或参数被切分成多个部分,每个部分在不同的设备上运行。
张量并行通常用于训练非常大型的模型,因为它可以减少每个设备的内存需求。
流水线并行:在流水线并行中,模型的不同层被放置在不同的设备上,每个设备负责模型的一部分。
输入数据在设备之间按顺序流动,每个设备完成自己的计算后将数据传递给下一个设备。流水线并行可以减少每个设备的内存需求,并提高训练速度。
4、推理优化技术Flash Attention的作用是什么?
Flash Attention是一种用于加速自然语言处理模型中自注意力机制的推理过程的优化技术。它通过减少计算量和内存需求,使得在有限的资源下能够处理更长的序列。Flash Attention使用了一种有效的矩阵乘法算法,可以在不牺牲准确性的情况下提高推理速度。
五、大模型(LLMs)推理
1、为什么大模型推理时显存涨的那么多还一直占着?
模型大小:大模型本身具有更多的参数和计算需求,这直接导致了显存的增加。推理过程中的激活和梯度:在推理时,模型的前向传播会产生激活,这些激活需要存储在显存中,尤其是在执行动态计算或需要中间结果的情况下。
优化器状态:即使是在推理模式下,某些框架可能会默认加载优化器状态,这也会占用显存空间。
内存泄漏:有时代码中的内存泄漏会导致显存一直被占用,而不是在推理完成后释放。
要解决显存占用问题,可以采用的技术包括使用内存分析工具来检测泄漏,优化模型结构,或者使用如TensorFlow
的内存管理功能来显式释放不再需要的内存。
2、大模型在GPU和CPU上推理速度如何?
大模型在GPU 上的推理速度通常远快于CPU, 因为GPU 专门为并行计算设计,具有更多的计算
核心和更高的浮点运算能力。例如,NVIDIA的GPU使用CUDA核心,可以同时处理多个任务,这使得它们在执行深度学习推理时非常高效。CPU虽然也可以执行深度学习推理任务,但由于其核心数量和浮点运算能力通常不及GPU, 因 此速度会慢得多。然而, CPU
在处理单线程任务时可能更高效,且在某些特定场景下,如边缘计算设备上,CPU 可能是唯一可用的计算资源。
3、推理速度上, int8和fp16比起来怎么样?
INT8(8位整数)和FP16(16 位浮点数)都是低精度格式,用于减少模型的大小和提高推理速度。
INT8 提供更高的压缩比,可以显著减少模型的内存占用和带宽需求,但由于量化过程中的
信息损失,可能会对模型的准确性产生一定影响。FP16提供比INT8 更高的精度,通常对模型的准确性影响较小,但相比INT16或FP32,
它的速度和内存效率仍然有所提高。在实际应用中, INT8和FP16的推理速度取决于具体的模型和硬件。一般来说,INT8可能会提供
更高的吞吐量,但FP16可能会提供更好的延迟和准确性。例如,NVIDIA 的Tensor Cores支持FP16和INT8
运算,可以显著提高这两种格式的推理性能。