万字长文 | 大模型基础面试知识

作者 | lym 编辑 | 自动驾驶之心

原文链接:https://zhuanlan.zhihu.com/p/690474151

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心大语言模型技术交流群

本文只做学术分享,如有侵权,联系删文

  1. 注意力的计算公式

MHA GQA MQA MLA

  1. 几种位置编码,几种norm,几种ffn

正弦位置编码,可学习位置编码,ROPE(旋转位置编码),都用在过qkv的linear之后,qk矩阵计算之前。

LayerNorm(PreNorm/PostNorm)、GroupNorm、RMSNorm(提升运行效率)

RMSNorm计算公式:

4d1700db9004132ed2187005051ac49f.png
class RMSNorm(torch.nn.Module):
    def __init__(self, dim: int, eps: float = 1e-6):
        super().__init__()
        self.eps = eps
        self.weight = nn.Parameter(torch.ones(dim))

    def _norm(self, x):
        return x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps)  ###RMS Norm公式"rsqrt" 是 "reciprocal square root" 的缩写,意为 "倒数平方根"。

    def forward(self, x):
        if rms_norm is not None and x.is_cuda:
            return rms_norm(x, self.weight, self.eps)
        else:
            output = self._norm(x.float()).type_as(x)
            return output * self.weight
  1. 为什么自回归是最主流的预训练方法,除此之外还有什么其他的预训练方法

和下游任务最接近,zero shot能力好,记忆能力强,低秩。最主要就是Openai跑通了,它没成功之前,就是Bert的天下,哈哈哈哈,OPT175B复现不出来GPT3,否则GPT范式会更早。

GLM(输入部分bert mask,输出部分gpt mask)、T5(encoder-decoder)

Bert填空,GLM、T5半填空半自回归

  1. 常见的微调方法,以及常见的下游任务

SFT:CFT(GPT4和GPT3对比学习)、CUT、ORPO(SFT加DPO loss)

RLHF:DPO(离线强化学习算法)、PPO(在线强化学习算法)、RLAIF

  1. Attention结构的几种变体

MHA GQA MQA (超长文本RingAttention Ulysses)flash attention

GQA:【全网首发】聊聊并写写GQA(Group Query Attention)

RingAttention :朱小霖:ring attention + flash attention:超长上下文之路

  1. flash attention的大致原理

(利用GPU SRAM比DRAM(GDDR/HBM)快,融合多个算子,省去softmax前用于反向梯度求导的激活值)

  1. 提升长文本性能的几种可行做法

ROPE、ROPE ntk外推、KV量化、(序列并行:超长文本RingAttention Ulysses)、增大预训练预料长度

  1. 如何在预训练阶段提升模型的性能

清洗高质量数据,丰富多样,去重复,无害化,低噪音,代码结构和数学结构更加合理。

用bert或小模型洗,尤其是互联网数据。

其余数据:github、百科、专利、arvix

数据格式:markdown->json

  1. 知识蒸馏

  2. 量化 AWQ(激活感知权重量化)[1] GPTQ(GPT量化方法)[2] GGUF(llama.cpp)[3]

4bit、8bit、16bit量化,一般都说W4A16,即参数为4bbit,激活值为16bit。推荐W8A8。临时常用bitsandbytes库,动态量化。

量化可以用open triton或者FasterTransformer重写算子作为支撑。

[1]https://qwen.readthedocs.io/en/latest/quantization/awq.html

[2]https://qwen.readthedocs.io/en/latest/quantization/gptq.html#

[3]https://qwen.readthedocs.io/en/latest/quantization/gguf.html

  1. 混合精度训练

fp16、bf16

amp(nvidia),torch amp(autocast),deepspeed(强制全部参数fp16)

混合精度训练节省的显存仅来源于激活值,而非参数值、梯度、优化器。

计算方法:fp32:4(参数)+4(梯度)+8(优化器)=16

fp16:2(参数)+2(梯度)+4(参数的fp32备份)+8(优化器)=16

  1. 分布式训练dp,mp,ddp,pp;zero的三个stage

dp、ddp:数据并行,dp几乎没人用了,DDP是分布式训练入门,可以用accelerate封装。多卡all_gather、all_reduce要会(这玩意好像叫通信原语,底层是nccl(GPU)或者Gloo(win))。

mp:模型并行,就是把模型劈成几份,要么按layer切分到不同卡上,要么叫tensor并行,就是把权重切分(Megatron威震天)。第一种慢的要死,不如pp。第二种必须有nvlink,要么PCIE满得要死,而且切分权重要改代码,得学,但大厂都这么搞。

pp:流水线并行,模型拆到几张卡,然后用小的batch弥合卡的计算中的“气泡”.参考刘聪NLP中的Qwen的deepspeed实现,或者参考良慕路程序员的torch实现,需要重新封装模型。

sp:序列并行,长文本,长视频专用。1M的token,1个多小时视频一张卡不够了,就切分到不同卡上,ringattention。Opensora就是这个东西。

zero1:切分优化器,优化器显存占用/并行卡数

zero2:优化器基础上切分梯度,梯度显存占用/卡数

zero3:zero2基础上把参数也切分了。

经典理解下,chatglm1为什么是6B?应该是有8卡a100 80g几台,做zero1或者zero2切分,正好加上激活值差不多就是80G。用点bert时代祖传数据集,再sft调下,就是chatglm1。试错成本低,迭代效率高。

  1. 多模态clip、blip2、minigpt4、llava、CogVLM

clip是图文对比预训练

blip2用clip做视觉backbone,中间加bert做对齐训练(Qformer)。再用一个MLP/linear接到LLM上,只更新MLP/linear浅层对齐。

minigpt4:换更好LLM

llava,clip输出的embedding过linear直接拼接到LLM的输入embedding中,两阶段训练,图文预训练和图文指令训练,均只训练浅对齐linear。可以只用指令数据集,不用预训练,前提指令数据集要够。

CogVLM:换更大的clip和LLM,LLM增加视觉专家部分(LLM部分copy然后微调)

  1. 多模态的实现方式(双流、单流、浅对齐)

看李沐视频去,CoCa、flamingo什么的,现在更多都是VLLM了,BLIP2那种浅对齐,CLIP和LLM分别快速发展,哪天要用了,浅对齐下。LLM模型越大越不好对齐,需要更多数据。更多参考Deepseek和Qwen的技术报告。

  1. Lora理解、QLora

每层都增加点可训练参数量,在主参数旁边增加个参数量很小,低秩的参数,(W+BA)x,A随机初始化,B输出0初始化。可以一定程度避免遗忘现象,但不能节省计算量。省显存主要省在优化器上,这对于LLM参数量大有明显影响,对视觉模型影响很小。一般LLM微调或者AIGC(diffusion)生成用。

原理:限制在一个较小的偏移空间中,请尽情发挥!

QLora:把参数量化了,这样进一步节省显存。

  1. Ptuning和全量微调的对比

Prompt Tuning:增加几个可学习的prompt token并调它们。省显存,不容易遗忘,不容易过拟和,效果没有全量微调好。

  1. 写出RLHF的目标公式

7c83324fad964abdfc77ee36699ca793.png

这个 loss 意思是希望 LLM 输出的回答的评分能尽可能高,同时不要偏离太多,保证它还能正常做回答,不要训成一个评分很高但是回答乱码的东西。

LLM语境中的RLHF:LLM生成token的过程是递归进行的。每次递归中,给定的上下文则是当前的状态,需要预测出的token则是行动,该token是从一个字典中选择的(编码的过程被称为tokenize),且该字典是有限的。这时,该问题被归类到离散动作空间的强化学习。

PPO(Proximal Policy Optimization)是强化学习中策略梯度法中的一个算法,可用于离散或连续动作空间(最初提出时被应用于连续动作空间)的强化学习问题。当策略函数是个神经网络,也就是可以用策略梯度法改进时,这样便可以应用 PPO 。此时,LLM本身便是 策略网络(在强化学习语境中,也被称为 actor,因为其产生行动 act)。李宇:从技术报告揭秘 InternLM2 尚未开源的部分——RLHF(二)奖励函数篇

  1. 目标公式中衰减因子的作用,取大取小有什么影响?

是我们在训练的 LLM,是训练的初始值。希望 LLM 输出的回答的评分能尽可能高,同时不要偏离太多,保证它还能正常做回答,不要训成一个评分很高但是回答乱码的东西。

取大了RLHF效果不明显,取小了容易偏离太多,遗忘知识。

  1. RLHF的目标公式中可以加入什么其他的项?

14074c3b30d345dfd4acffdc1ff1cdd2.png
  1. RLHF中的PPO比率相对什么来算?

  2. 其中对数概率的作用?

缩放损失函数,对数相除等于对数相减

  1. Reward model的训练loss是什么?

f6013075cffe987ed374d3278acbc538.png 854a38acb7ce5b64e048b147a1b1d567.png
  1. 文本数据处理到进入模型的整个过程?

经过byte2unicode转换,过tokenizer转换为数字,再查找embedding层转换为token,然后进入transfomer模型,模型输出的经过MLP head后softmax做分类,分类结果tokenizer转换为文字,文字再输入到下一个位置。

  1. 分词和向量化的过程

分词:分词是将文本拆分成单独的单词或符号(称为"tokens")的过程。这是NLP中的一个基本步骤,因为我们通常希望在单词级别上处理文本,而不是在字符级别上处理。分词的方法有很多种,包括空格分词、基于规则的分词、基于统计的分词等。例如,对于句子 "I love machine learning.",分词后的结果可能是 ["I", "love", "machine", "learning", "."]。

向量化:在分词后,我们需要将这些单词转化为机器可以理解和处理的形式。这就是向量化的过程。向量化的目标是将每个单词转化为一个向量,这个向量可以捕捉到该单词的语义信息。最简单的向量化方法是one-hot编码,但这种方法无法捕捉到单词之间的语义关系。因此,更常用的方法是使用词嵌入(word embeddings),如Word2Vec

大部分GPT都是BPE算法,部分T5、bert不用这个,用wordpiece。

一般10w左右词汇,10万分类问题。压缩率、速度和效果的权衡问题。

BPE库:sentencepiece

  1. 模型微调过程中的调参?

  2. Recall,Precision的计算?

准确率(accuracy)=(TP+TN)/(TP+FN+FP+TN)

通俗解释:在所有样本中,预测正确的概率

精确率(precision)=TP/(TP+FP)

通俗解释:你认为的正样本中,有多少是真的正确的概率

召回率(recall)=TP/(TP+FN)

通俗解释:正样本中有多少是被找了出来

  1. 训练的数量级?

RLHF reward model:240w条数据

预训练:2T token

  1. 如何把控数据质量?

参考InternLM2的洗数据的论文

  1. 对大模型整个发展趋势如何理解?

RAG(RAG还是bert抽取特征,计算余弦相似度,然后送给LLM整理输出)、长文本、Agent、群体对话、拒答,web搜索技术、文本整理、报表分析

  1. 你认为LLM的数据质量的关键在于什么?

多样、去重、无风险、涉及面广、正确、结构化

  1. DPO公式?

905ca5766c9481c0029808a67c5e1ebc.png
  1. sft指令格式?

{"instrct":{},"input":{}, "bot":{}}

  1. bert的下游任务?

文本分类(Text Classification):这可能是最常见的NLP任务之一,包括情感分析、主题分类等。BERT可以用于理解文本的上下文,从而进行准确的分类。

命名实体识别(Named Entity Recognition, NER):这是从文本中识别并分类命名实体(如人名、地名、公司名等)的任务。BERT可以帮助模型更好地理解实体在文本中的上下文。

问答系统(Question Answering):这是从给定的文本段落中回答问题的任务。BERT可以用于理解问题和文本的上下文,从而找到正确的答案。

语义相似性(Semantic Similarity):这是评估两段文本在语义上的相似性的任务。BERT可以用于理解文本的深层含义,从而准确地评估相似性。

摘要生成(Summarization):这是从长文本中生成短的摘要的任务。尽管BERT主要用于理解任务,但它也可以通过与其他模型(如Transformer)的结合来进行摘要生成。

文本生成(Text Generation):虽然BERT不是直接设计用于文本生成的,但通过某些技术,如Masked Language Model,BERT也可以用于生成文本。

关系抽取(Relation Extraction):这是从文本中识别和分类实体之间的关系的任务。BERT可以用于理解实体的上下文,从而准确地识别关系。

情感分析(Sentiment Analysis):这是识别和分类文本的情感倾向(如积极、消极或中立)的任务。BERT可以用于理解文本的上下文,从而准确地识别情感。

  1. bert的网络结构和训练方式?

mask形式

  1. DPO在什么情况下是等价于PPO的?

PPO有显式解转为DPO,等价情况:swtheking:百面LLM-14

  1. 介绍DIT

  2. 介绍Controlnet

40495352fc6c6d62ec53c96844f44571.png

两路分支模型。冻结原模型,复制一份unet下采样部分到右侧,右侧分支上采样部分为zero卷积。基于输入条件训练调整模型输出。

改进:https://vislearn.github.io/ControlNet-XS/只需基础模型 1% 的参数的新架构即可实现最先进的结果,并且在 FID 分数方面的性能明显优于 ControlNet。

原因,controlnet的右侧下采样直接复制,需要重新学习知识,改进增加了右侧下采样和左侧下采样信息的交互,参数量更小,解决了“延迟反馈”的问题。

  1. 介绍SAM

过vit的特征和点/框位置的编码embedding进行交互,输出层级的segment框。

  1. Adam优化器和SGD有什么区别

更新规则:SGD(随机梯度下降)是最简单的优化算法,每次迭代时,它仅仅使用当前批次的梯度信息来更新模型的权重 AdamW是一种自适应学习率的优化器,它不仅考虑了当前批次的梯度信息,还考虑了过去的梯度的平方的移动平均值。这使得AdamW在不同的参数维度上有不同的学习率,这对于稀疏数据和非凸优化问题非常有用。AdamW还包含了权重衰减(相当于L2正则化),这可以帮助防止模型过拟合。

收敛速度:通常,AdamW的收敛速度要比SGD快。这是因为AdamW使用了动量(考虑了过去的梯度)和自适应学习率,这可以帮助优化器更快地找到最优解。然而,有些研究表明,在某些任务中,尤其是深度学习任务,SGD在训练的后期阶段可能会达到更好的泛化性能。计算复杂性:由于AdamW使用了更复杂的更新规则,所以其计算复杂性要比SGD高。但是,由于其更快的收敛速度,实际的训练时间可能不会比SGD长很多。

  1. sqrt(d)是qkv谁的维度,作用是什么

不知道,d是嵌入维度。

为了防止点积的大小随着维度d的增大而变得过大,这可能会导致softmax函数在计算注意力权重时产生过小的梯度(也称为梯度消失问题)。

  1. classifier guidence和classifier-free guidence区别是什么,都怎么实现?

基于贝叶斯公式,classifier guidence是guided ddpm的工作,训练个分类器,用分类器引导普通无引导训练的ddpm。正常往score方向不断走就是干净图片,这里在score基础上加上个分类器引导的梯度,让score往这个类别的数据梯度上走。上是score sde,下面是DDIM。注意输入分类器和Unet的都是

3a8a898a6947ec748b0e4e34ba189cfa.png

classifer-free是把分类器融合进diffusion的Unet中,可以用clip没有类别限制,生成质量好。

训练方法是随机drop掉一些输入的文本,这样就对应为无监督生成。

classifier guidence - 搜索结果 - 知乎

guidence大小?7.5~10

  1. sft和(增量)预训练有什么区别

sft只计算回答部分的loss,而预训练计算问答loss。

  1. sft数据需要很多吗

不需要,1000条高质量就够,less is more for alignment。

  1. ROPE的了解?为什么ROPE能做长文本?ROPE ntk是什么?

  2. 手写diffusion公式,DDPM和VPSDE、EDM是什么关系?

  3. Consistency models的原理?

diffusion蒸馏,还有逐步蒸馏技术。训练loss是mse_loss(x+sigma(t_n)*eps,x+sigma(t_{n+1})*eps),其中加噪较小的为伪标签,不梯度反传

  1. 什么是GAN?GAN loss什么样?

对于判别器D,损失函数通常定义为:

7d65c54df1a037f89e8736ec7ece3a13.png

这个损失函数的第一项鼓励判别器将来自真实数据分布的样本分类为真(即,尽可能让D(x)接近1),第二项鼓励判别器将来自生成器的样本分类为假(即,尽可能让D(G(z))接近0)。

对于生成器G,损失函数通常定义为:

bbecbbccd87da1e0f54b18d0065f4134.png

这个损失函数鼓励生成器生成判别器更难以区分的样本,即尽可能让D(G(z))接近1。

  1. 介绍Sora,Sora的任意分辨率是怎么实现的?

Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and...

  1. 为什么大语言模型经过DPO之后输出长度会变长?

因为被选的项目中,一般“虽然”,“但是”这些比较多。

A density estimation perspective on learning from pairwise human preferences中第四章

  1. 3D卷积,Video感知

  2. IP-Adapter

10e0ef88ebef2118e58619f2af7080ae.png

dual cross_attention,一个保留原能力,一个输入图片信息,图片信息学习LLAVA那种浅对齐。为什么用clip而不用SAM的backbone?因为更想提取语义风格信息,而非精细化的OCR信息。

  1. Sora是什么?有什么重要技术?

不懂哈,还没看

  1. moe是什么?

原石人类:MoE 入门介绍 核心工作回顾 模型篇

  1. BatchNorm三连:归一化了哪些维度,训练测试区别,部署时如何加速。

  2. megatron原理?

参考:Dylan:[实践] Tensor Parallel(精简版)

感觉面壁智能的OpenBMB train也不错,简洁干净

https://github.com/OpenBMB/BMTrain

如果知道百度这种大厂怎么实现的,欢迎赐教

  1. sd常用的t5模型都有什么版本?

Flan-T5

nghuyong:Flan-T5: One Model for ALL Tasks

手撕算法:最长回文子串。

① 2025中国国际新能源技术展会

自动驾驶之心联合主办中国国际新能源汽车技术、零部件及服务展会。展会将于2025年2月21日至24日在北京新国展二期举行,展览面积达到2万平方米,预计吸引来自世界各地的400多家参展商和2万名专业观众。作为新能源汽车领域的专业展,它将全面展示新能源汽车行业的最新成果和发展趋势,同期围绕个各关键板块举办论坛,欢迎报名参加。

f7228c38a68a18947562b2879a2da718.jpeg

② 国内首个自动驾驶学习社区

『自动驾驶之心知识星球』近4000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知端到端自动驾驶世界模型仿真闭环2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型,更有行业动态和岗位发布!欢迎扫描加入

b261cda6f3f6074567e46a1444e8aa0d.png

 ③全网独家视频课程

端到端自动驾驶、仿真测试、自动驾驶C++、BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、CUDA与TensorRT模型部署大模型与自动驾驶NeRF语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

e25468c2f2b03f4ef1f6ad4662339d98.png

网页端官网:www.zdjszx.com

④【自动驾驶之心】全平台矩阵

c832817da43663c2ad1721d0a54f0ab9.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值