文章目录
- 一、大模型基础知识
- 1. BART、llama、gpt、t5、palm等主流模型异同点?
- 2. 什么情况用Bert模型,什么情况用LLaMA、ChatGPT类大模型,怎么选?
- 3. encoder-only, decoder-only, encoder-decoder的区别?
- 4 .NLP模型性能评测指标
- 5.讲一下lama和Transformer架构 区别
- 6 微调
- 7.模型调优(RLHF/DPO/ORPO)
- 8. 了解langchain吗?讲讲主要结构和主要组件,处理复杂任务链时有哪些优势
- 9. prefix LM 和 causal LM区别是什么?
- 10. LLMs 复读机问题
- 11.解决显存不够的方法
- 12.长文本LLM(Language Model)和 RAG(Retrieval-Augmented Generation):
- 13.归一化(normalization)技术
- 14.手写实现下分组注意力
- 15.self-attention的计算方式
- 二、针对项目
- 1. 项目的背景是什么,主要解决了什么问题?
- 2. 数据集怎么构建的(都有什么类型和领域的数据);什么规模(总量有多大);有没有质量评估;
- 3. 模型底座是什么,这些不同底座什么区别,什么规模(模型底层为什么选择了这个规模的版本呢,选择的依据是什么?)
- 4. 训练方法,用的什么(sft全参数微调用了吗),有没有进行微调?
- 5. 评估指标是什么,这些指标存在哪些问题
- 6. 模型推理是怎么做的,有没有cot,tot等等,还是单轮
- 7. 模型可控性如何实现,怎么保证可控性
- 8. 模型部署的平台,推理效率怎么样,如何提升推理效率
- 9. llama的中文适配
- 10.说一下llama的架构?llama2网络架构?使用了哪些注意力机制?
- 11.lama2的位置编码了解吗?讲讲几种位置编码的异同
- 12. LlaMa 输入句子长度理论上可以无限长吗?
一、大模型基础知识
1. BART、llama、gpt、t5、palm等主流模型异同点?
BART(Bidirectional and Auto-Regressive Transformers). 架构:BART采用encoder-decoder架构。训练方法:它结合了双向编码器(类似于BERT)的优势和自回归解码器(类似于GPT)的优势。 BART主要用于文本生成任务,如摘要和翻译。它通过“破坏”输入文本(例如,通过删除单词或打乱句子顺序)然后训练模型来重建原始文本来进行训练。
LLaMA (Large Language Model). 架构:LLaMA是一个基于Transformer的大规模语言模型,它的具体架构取决于其各个版本的实现,但主要以decoder-only或类似于GPT的架构为主。训练方法:LLaMA通过海量文本数据进行预训练,优化了参数效率和计算效率,使其在多种自然语言处理任务上表现出色
GPT(Generative Pre-trained Transformer). 架构:GPT采用decoder-only架构。
训练方法:GPT通过大规模文本数据进行自回归训练,首先在无监督任务上预训练,然后在特定任务上进行微调。它主要用于文本生成任务。
T5 (Text-to-Text Transfer Transformer). 架构:T5采用encoder-decoder架构。
训练方法:T5的特点是将所有NLP任务转换为文本到文本的格式,无论是翻译、摘要还是问题回答。这种统一的方法简化了不同任务之间的处理流程。
PaLM (Pathways Language Model). 架构:PaLM也是基于最新的Transformer技术,其具体架构细节取决于其版本和实现.
训练方法:PaLM采用了类似于GPT的预训练和微调方法,通过大规模的文本数据进行训练,优化了多任务学习和参数效率。
异同点总结
架构: BART和T5使用encoder-decoder架构,适合于翻译和摘要等任务;GPT和LLaMA主要采用 decoder-only架构,优于生成任务;PaLM的架构虽然基于Transformer,但其具体设计旨在通过大规模训练提升模型的通用性和效率。
训练方法: BART通过文本破坏和重建进行训练; T5将所有任务转化为文本到文本格式;GPT和 LLaMA通过大规模的无监督预训练和任务特定的微调进行训练;PaLM也采用了大规模预训练,强调在多任务学习中的性能提升。
2. 什么情况用Bert模型,什么情况用LLaMA、ChatGPT类大模型,怎么选?
**Bert模型:**适合于需要理解文本含义的任务,如文本分类、命名实体识别、问答系统等。BERT的双向训练机制使其在理解上下文中的词义方面表现优秀。因此,当任务需要深入理解文本内容时,BERT是一个好选择。
**LLaMA、ChatGPT类大模型:**适用于需要生成文本、维持对话、翻译或其他需要大量常识和语言生成能力的任务。这类模型通过在大规模数据集上的预训练获得了广泛的知识和强大的语言理解及生成能力。当任务需要模型生成连贯、相关且富有创造性的文本时,选择LLaMA、ChatGPT类大模型更为合适。
在选择模型时,应考虑任务的具体需求、模型的能力限制、计算资源和部署成本。Bert模型在理解特定任务的文本时可能更高效,而LLaMa、ChatGPT类大模型则在需要广泛的常识知识和文本生成能力时展现优势。
3. encoder-only, decoder-only, encoder-decoder的区别?
Encoder-only 架构主要用途:用于处理分类、回归、实体识别等任务,其中模型需要从输入数据中提取特征并产生一个固定大小的输出。比如,BERT是一个典型的encoder-only模型,它通过读取整个输入数据(如一段文本)来理解上下文中的每个单词。
工作方式:这种架构只包含编码器部分,用于处理输入数据并提取特征,但不直接生成序列化输出。编码器通常包括多层自注意力和前馈神经网络。
Decoder-only架构主要用途:主要用于生成任务,如文本生成、语言模型等。GPT是一个著名的decoder-only模型,它可以基于给定的提示生成连贯的文本序列。
工作方式:这种架构只包含解码器部分,它接收一个或多个输入(如一个起始令牌)并逐步生成输出序列。解码器层通过自注意力机制学习如何基于之前生成的输出来预测下一个输出。Encoder-decoder架构主要用途:用于复杂的转换任务,如机器翻译、文本摘要、语音识别等,其中模型需要将输入数据转换成一个新的形式或语言。Seq2Seq模型Transformer是典型的encoder-decoder模型。工作方式:这种架构包含编码器和解码器两部分。编码器处理输入数据并提取特征,解码器则基于编码器的输出生成序列化的输出。编码器和解码器之间通常还有一种机制(如注意力机制),用于帮助解码器关注输入数据中的不同部分以更好地生成输出。
总的来说,encoder-only架构擅长理解和分类输入数据,decoder-only架构擅长基于某些输入生成数据,而encoder-decoder架构能够将输入数据转换成另一种格式或语言,适用于更复杂的任务。
4 .NLP模型性能评测指标
这些指标可以分为两类:一类是基于预测的指标,如准确率、召回率和F1分数;另一类是基于排名的指标,如精度@K和召回@K。
基于预测的指标
1 准确率 准确率(Accuracy)是一种简单的评估指标,用于衡量模型在预测任务中正确预测的比例。它可以用于分类任务,如情感分析、实体识别等。准确率的计算公式为:
Accuracy=TP+TNTP+TN+FP+FN
其中,TP(True Positive)表示正例被正确预测为正例,TN(True Negative)表示负例被正确预测为负例,FP(False Positive)表示负例被错误预测为正例,FN(False Negative)表示正例被错误预测为负例。
2 召回率 召回率(Recall)用于衡量模型对正例的检测率。它可以用于分类任务,如对象检测、实体识别等。召回率的计算公式为:
Recall=TP/TP+FN
3 F1分数 F1分数是一种综合评估指标,结合了准确率和召回率。它可以用于分类任务,如情感分析、实体识别等。F1分数的计算公式为:F1=2×Precision×RecallPrecision+Recall。其中,精度(Precision)是正例中被正确预测为正例的比例,召回率(Recall)是正例被正确预测为正例的比例。
基于排名的指标
1 精度@K
精度@K(Precision@K)是一种基于排名的评估指标,用于衡量模型在预测任务中前K个结果中正确的比例。它可以用于检索任务,如图像搜索、文本相似度等。精度@K的计算公式为:
P
r
e
c
i
s
i
o
n
@
K
=
N
c
o
r
r
e
c
t
K
Precision@K = \frac{N{correct}}{K}
Precision@K=KNcorrect 其中,
N
c
o
r
r
e
c
t
N{correct}
Ncorrect表示前K个结果中正确的数量,K是用户设定的阈值。
2 召回@K
召回@K(Recall@K)是一种基于排名的评估指标,用于衡量模型在预测任务中前K个结果中正确的比例。它可以用于检索任务,如图像搜索、文本相似度等。召回@K的计算公式为:
R
e
c
a
l
l
@
K
=
N
c
o
r
r
e
c
t
N
r
e
l
e
v
a
n
t
Recall@K = \frac{N{correct}}{N{relevant}}
Recall@K=NrelevantNcorrect 其中,
N
c
o
r
r
e
c
t
N{correct}
Ncorrect表示前K个结果中正确的数量,
N
r
e
l
e
v
a
n
t
N{relevant}
Nrelevant表示所有相关结果的数量。
5.讲一下lama和Transformer架构 区别
Transformer模型是一种基于自注意力机制的神经网络模型,旨在处理序列数据,特别是在自然语言处理领域得到了广泛应用。Transformer模型的核心是自注意力机制(Self-Attention Mechanism),它允许模型关注序列中每个元素之间的关系。这种机制通过计算注意力权重来为序列中的每个位置分配权重,然后将加权的位置向量作为输出。模型结构上,Transformer由一个编码器堆栈和一个解码器堆栈组成,它们都由多个编码器和解码器组成。编码器主要由多头自注意力(Multi-Head Self-Attention)和前馈神经网络组成,而解码器在此基础上加入了编码器-解码器注意力模块。Transformer与LLaMA 的模型结构对比如下:
从Transformer的结构图中我们可以看出,Transformer主要分为编码器(encoder)和解码器(decoder)两部分。相较之下,LLaMA仅使用了Transformer的解码器部分,采取了一个仅解码器(decoder-only)的结构。这种结构现在被大多数生成型的语言模型所采用。在结构上,与Transformer模型相比,LLaMA2的主要变化是将其中的层标准化(LayerNorm)替换为了均方根标准化(RMSNorm),多头注意力(Multi-Head Attention)换成了分组查询注意力(GQA,在LLaMA中则是多查询注意力MQA),并将位置编码(Positional Encoding)替换为了旋转嵌入(Rotary Position Embedding,RoPE)。
6 微调
1 Adapter tuning
固定Transformer的全部参数
在Transformer的每一个Block里嵌入一些新初始化的Adapter Network。其中Adapter由两层MLP组成,分别负责将Transformer的表征降维和升维
2 Prefix tuning
固定预训练参数,为每一个任务额外添加一个或多个embedding,且利用多层感知编码prefix。不再像prompt tuning继续输入LLM。
Prefix-tuning是一种参数效率高的fine-tuning方法,它在模型的输入部分添加一系列可学习的向量(称为 prefix),这些prefix在训练过程中与任务相关的信息一起输入模型。这种方法允许模型在不直接修改预训练参数的情况下适应新任务,非常适合于需要快速适应新任务而又不希望对整个模型进行重训练的场景。
优势 在Table2Text任务上,只有0.1%参数量级的prompt tuning效果要优于微调
缺点 摘要任务上,prompt的效果要略差于微调
3 Prompt tuning
固定预训练LLM的参数,为每一个任务额外添加一个或多个embedding。之后拼接query正常输入LLM,并只训练这些embedding
4 P-tuning
固定LLM参数,用多层感知机和LSTM对prompt进行编码,编码后与其他向量进行拼接,正常输入LLM。注意,训练之后只保留prompt编码之后的向量,无需保留编码器。
P-tuning引入了可学习的prompt(参数化提示),这些prompt作为模型输入的一部分参与训练,而不是固定不变的文本。这允许prompt在训练过程中与模型参数一起优化,从而更好地适应特定任务。与传统的fine-tuning相比,P-tuning不需要对模型的所有参数进行大规模调整,而是通过优化少量的额外参数来实现定制化的调整,可以减少过拟合的风险并提高训练效率
缺点
查找的最优提示,可能是次优的
在小参数量模型中表现差(小参数模型如Bert,330M),上了10B的模型效果才开始可以持平
序列标注等对推理和理解要求高的任务,prompt-tuning效果会变差
5 P-tuning v2
固定LLM参数
类似Prefix-tuning ,在Deep FT层:在seq前面加n个虚拟token,以此构造一个连续的token,作为微调参数(结构一样是transformer)
在多种任务上下进行微调
完全变为生成模型,无需verbalizer
6 LoRa
LoRA (Low-Rank Adaptation)是一种模型微调方法,它通过在预训练模型的权重上添加低秩矩阵来来减少可训练参数的数量。LoRA的特点:仅修改模型的一小部分参数(通过低秩矩阵),从而在调整模型以适应新任务的同时保持了大部分预训练参数不变。
LoRA 的核心思想是在预训练模型的权重矩阵中引入低秩分解。具体来说,对于一个预训练的权重矩阵 W ,LoRA 将其分解为两个较小的矩阵 A 和 B ,其中 A 和 B 的秩(rank)远小于 W 的秩。这样,微调过程中只需要训练 A和 B ,而不是整个 W 。
LoRA的问题:可能有性能瓶颈(因为仅通过修改一小部分参数可能限制了模型适应新任务的能力);以及如何选择和优化低秩矩阵的大小和结构以达到最佳效果。
7 指令微调中的超参数设置、选择和优化
**学习率:**过高的学习率可能导致训练不稳定,而过低的学习率会导致训练速度过慢。使用如学习率衰减策略或者学习率预热可以优化学习率设置。
batchsize大小:较大的批量可以提高训练的稳定性和效率,但会增加内存需求。通过梯度累积可以在有限内存条件下模拟较大批量的效果。
训练周期数:需要足够的训练周期来确保模型充分学习,但过多的训练可能导致过拟合。
**指令长度:**指令的长度应与任务复杂度相匹配,过长的指令可能导致模型难以学习,而过短的指令可能提供不了足够的信息。
7.模型调优(RLHF/DPO/ORPO)
https://zhuanlan.zhihu.com/p/692594519
RLHF是一个复杂且往往不稳定的过程,首先训练一个反映人类偏好的奖励模型(Reward Model),然后使用强化学习(PPO)对大型无监督LM进行微调,以最大化这个估计的奖励,而不会与原始模型相差太远。
直接偏好优化(DPO)是一种创新的语言模型训练方法,与传统的RLHF(Reinforcement Learning from Human Feedback)相比,它具有明显的优势和区别。DPO利用从奖励函数到最优策略的解析映射,将奖励函数的损失转化为直接对策略的损失。这种方法允许模型直接在现有的人类偏好模型(例如Bradley-Terry模型)下进行优化,而无需显式构建和优化一个单独的奖励模型。
ORPO是一种创新的方法,旨在通过单步过程直接优化语言模型,而不需要独立的奖励模型或参考模型。这种方法通过修改传统的有监督微调(SFT)阶段的损失函数实现,以便更直接地对偏好进行学习和优化。
8. 了解langchain吗?讲讲主要结构和主要组件,处理复杂任务链时有哪些优势
LangChain 是一个链接面向用户程序和 LLM 之间的中间层。它旨在轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。LangChain 为特定用例提供了多种组件,例如个人助理、文档问答、聊天机器人、查询表格数据、与 API 交互、提取、评估和汇总。
主要组件:
Model I/O:管理大语言模型(Models),及其输入(Prompts)和格式化输出(Output Parsers)。
Prompt Templates:支持自定义 Prompt 工程的快速实现以及和 LLMs 的对接。
LLMs:提供基于 OpenAI API 封装好的大模型,包含常见的 OpenAI 大模型,也支持自定义大模型的封装。
Utils:大模型常见的植入能力的封装,比如搜索引擎、Python 编译器、Bash 编译器、数据库等等。
Chains:大模型针对一系列任务的顺序执行逻辑链。
Agents:通常 Utils 中的能力、Chains 中的各种逻辑链都会封装成一个个工具(Tools)供 Agents 进行智能化调用。
9. prefix LM 和 causal LM区别是什么?
Causal Language Model (Causal LM)
定义:Causal LM,也被称为自回归语言模型,是一种根据前面的词序列预测下一个词的模型。在这种模型中,每个词的预测只依赖于它之前的词(因果依赖),这种模式模拟了自然语言的生成过程。
特点: 这种模型是单向的,因为它在预测下一个词时不会考虑当前词之后的词。这种方式适用于文本生成任务,如GPT系列模型所采用的。
Prefix Language Model (Prefix LM)
定义: PrefixLM是一种处理文本的模型,它在给定前缀(一系列已知词)的情况下预测接下来的词序列。与Causal LM不同,PrefixLM可以在预测时考虑整个前缀的上下文信息,而不仅仅是紧邻的前一个词。
特点: PrefixLM通常用于条件文本生成任务,例如文本补全、机器翻译或任何需要根据给定的开始段落生成文本的场景。这种模型可以是单向的,也可以是双向的,具体取决于其设计和实现。
主要区别:
依赖方向:CausalLM是单向的,仅考虑之前的词;而PrefixLM可以根据设计不同,同时考虑前缀中的全部上下文信息。
应用场景:CausalLM主要用于纯文本生成,如写作、聊天机器人等,其生成的文本完全基于之前的词序列;PrefixLM则更适合于基于给定上下文条件生成文本的任务,如根据一段特定文本生成接下来的内容。
上下文利用:PrefixLM通常能够利用更全面的上下文信息来进行预测,而CausalLM则严格限制在因果(即时间序列)上下文中。
10. LLMs 复读机问题
定义:
LLMs (Large Language Models)的复读机问题是指模型在生成文本时倾向于重复相同的短语或句子的现象。这种问题通常在生成较长文本时更为明显,可能导致生成的内容缺乏多样性,影响阅读体验和信息的准确传递。
原因:
数据偏差:如果训练数据中存在大量的重复内容,模型可能学会这种重复的模式,并在生成文本时倾向于复制这种模式。
模型架构和训练限制:某些模型架构可能不足以完全理解或保持长期的文本依赖关系,导致在尝试生成连贯内容时重复较为简单的短语或句子。
优化目标:模型在训练过程中优化的目标函数可能导致偏好于生成在训练数据中常见的、因而可能重复的内容。
解决:
修改训练数据:减少训练数据中的重复内容,增加文本多样性。
改进模型架构:采用能够更好处理长期依赖关系的模型架构,如Transformer-XL、Sparse Transformer等
使用解码策略:在文本生成阶段采用特定的解码策略,如温度调节、Top-K采样或核采样(nucleus sampling)增加生成文本的多样性。
添加惩罚机制:在生成过程中对重复内容添加惩罚,减少生成相同短语或句子的概率。
11.解决显存不够的方法
**模型剪枝:**移除不重要的参数或层以减少模型大小。
**混合精度训练:**使用浮点16(FP16)而不是浮点32(FP32)进行训练,减少内存使用。
**梯度累积:**分批处理较大的批量,累积梯度后再更新,减少每次迭代的内存需求。
**模型并行和数据并行:**在多个设备上分布模型的不同部分或数据,以减轻单个设备的负担。
12.长文本LLM(Language Model)和 RAG(Retrieval-Augmented Generation):
LLM的优势在于它可以处理长文本,因为它一次处理整个输入,从而能够在长篇文本中捕获长距离的依赖。然而,LLM的缺点是其计算成本高,因为模型必须处理整个输入,这在处理长文本时可能会非常昂贵。此外,LLM可能在生成冗长或重复内容时遇到困难。
RAG的优势在于它结合了检索和生成两种方式,可以有效地处理大量知识库的信息,并将其引入生成过程。这使得RAG可以处理更广泛的问题,并提供基于知识的回答。然而,RAG的缺点是其检索过程可能会产生错误,从而影响生成结果的质量。此外,RAG需要在知识库中进行检索,这可能会限制其回答问题的能力,特别是当知识库中缺乏相关信息的时候。
LLM和RAG检索冲突的解决办法:
对于长文本生成,可以考虑使用分段或分层的方法。例如,可以先用LLM生成一个粗略的草案,然后用RAG对每个部分进行细化。
对于检索错误,可以考虑使用多模型或多步骤的策略。例如,可以先使用一个简单的模型进行粗略检索,然后使用一个更复杂的模型进行精细检索。
对于知识库的限制,可以考虑扩大知识库的范围,或者使用更先进的知识库构建技术。
13.归一化(normalization)技术
Pre-Normalization 和 Post-Normalization 通常指的是在神经网络的不同位置应用归一化技术。
Pre-Normalization:在激活函数之前应用归一化。这种方法可以确保输入到激活函数的数据分布更加稳定,有助于加速训练过程。
Post-Normalization:在激活函数之后应用归一化。这种方法可以确保激活函数的输出分布更加稳定,有助于提高模型的泛化能力。
Layer Normalization
Layer Normalization 是一种在深度学习中常用的归一化技术,它对每个样本的特征进行归一化,而不是对整个批次进行归一化。
优点:
对小批次数据更稳定,因为它是基于单个样本的特征进行归一化。
不需要对批次大小进行假设,适用于各种批次大小。
缺点:
在某些情况下,可能不如 Batch Normalization 效果好,特别是在大规模数据集和深度网络中。
Batch Normalization
Batch Normalization 是一种在深度学习中广泛使用的归一化技术,它对每个特征维度在批次内进行归一化。
优点:
可以加速训练过程,提高模型的收敛速度。
有助于减少内部协变量偏移(Internal Covariate Shift),提高模型的泛化能力。
缺点:
对批次大小敏感,小批次数据可能导致归一化效果不佳。
在推理阶段需要保存训练时的均值和方差,增加了模型的复杂性。
DeepNorm
DeepNorm 是一种用于深度神经网络的归一化技术,它结合了 Layer Normalization 和 Batch Normalization 的优点。
优点:
可以在不同层之间保持稳定的激活分布。
有助于提高模型的训练稳定性和泛化能力。
缺点:
计算复杂度较高,可能增加训练时间和计算资源需求。
RMSNorm
RMSNorm(Root Mean Square Layer Normalization)是一种基于均方根的归一化技术,它对每个样本的特征进行归一化。
优点:
计算简单,只需要计算均方根,不需要计算均值和方差。
对小批次数据更稳定,适用于各种批次大小。
缺点:
可能不如其他归一化技术(如 Batch Normalization)效果好,特别是在大规模数据集和深度网络中。
14.手写实现下分组注意力
15.self-attention的计算方式
二、针对项目
1. 项目的背景是什么,主要解决了什么问题?
2. 数据集怎么构建的(都有什么类型和领域的数据);什么规模(总量有多大);有没有质量评估;
3. 模型底座是什么,这些不同底座什么区别,什么规模(模型底层为什么选择了这个规模的版本呢,选择的依据是什么?)
4. 训练方法,用的什么(sft全参数微调用了吗),有没有进行微调?
a.解释一下 Prompt Tuning、Adapter Tuning、LoRA等微调方法的原理,分别适用于哪些场景?
b.如何评估模型微调效果的好坏呢?
c.微调用了多大的显卡,有关注内存占用情况吗?
d.是否了解常用的模型加速技巧
e. 如何在微调中避免模型出现灾难性遗忘和“复读机”问题?
f.大模型微调和训练一个全新模型相比,有哪些优势?
g.你认为大模型微调还面临哪些挑战?
5. 评估指标是什么,这些指标存在哪些问题
6. 模型推理是怎么做的,有没有cot,tot等等,还是单轮
7. 模型可控性如何实现,怎么保证可控性
8. 模型部署的平台,推理效率怎么样,如何提升推理效率
9. llama的中文适配
10.说一下llama的架构?llama2网络架构?使用了哪些注意力机制?
11.lama2的位置编码了解吗?讲讲几种位置编码的异同
12. LlaMa 输入句子长度理论上可以无限长吗?
理论上,LlaMa (Large Language Model) 和其他大型语言模型的输入句子长度不能无限长。这是因为模型的架构(例如,Transformer架构)通常包含一个固定的最大序列长度限制,这个限制由模型在训练时确定。这个限制是因为模型需要在内存中存储序列的表示,而内存是有限的资源。因此,尽管LlaMa模型可以处理相对较长的文本序列,但它们在输入长度上仍然受到技术限制。