常见的大模型
1.ChatGLM
1.1 背景
主流的预训练框架主要有三种:
autoregressive自回归模型(AR模型)
:代表作GPT。本质上是一个left-to-right的语言模型。
通常用于生成式任务
,在长文本生成方面取得了巨大的成功,比如自然语言生成(NLG)领域的任务:摘要、翻译或抽象问答。当扩展到十亿级别参数时,表现出了少样本学习能力。缺点是单向注意力机制,在NLU任务中,无法完全捕捉上下文的依赖关系。
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
autoencoding自编码模型(AE模型)
:代表作BERT。是
通过某个降噪目标(比如MLM)训练的双向文本编码器
。编码器会产出适用于NLU任务的上下文表示,但无法直接用于文本生成。
encoder-decoder(Seq2seq模型)
:代表作T5。采用双向注意力机制,
通常用于条件生成任务
,比如文本摘要、机器翻译等。
三种预训练框架各有利弊,没有一种框架在以下三种领域的表现最佳:自然语言理解(NLU)、无条件生成以及条件生成。T5曾经尝试使用MTL的方式统一上述框架,然而自编码和自回归目标天然存在差异,简单的融合自然无法继承各个框架的优点。
在这个天下三分的僵持局面下,GLM诞生了。
GLM模型基于autoregressive blank infilling方法,结合了上述三种预训练模型的思想。
1.2 GLM预训练框架
GLM特点
自编码思想
:在输入文本中,随机删除连续的tokens。
自回归思想
:顺序重建连续tokens。在使用自回归方式预测缺失tokens时,模型既可以访问corrupted文本,又可以访问之前已经被预测的spans。
span shuffling + 二维位置编码技术
。
通过改变缺失spans的数量和长度,自回归空格填充目标可以为条件生成以及无条件生成任务预训练语言模型。
(1)自回归空格填充任务
给定一个输入文本x=[x1,…xn]x=\left[x_{1}, \ldots x_{n}\right]x=[x1,…xn],可以采样得到多个文本spans {s1,…sm}\left{s_{1}, \ldots s_{m}\right}{s1,…sm}。为了充分捕捉各spans之间的相互依赖关系,可以对spans的顺序进行随机排列,得到所有可能的排列集合ZmZ_mZm,其中:Sz<i=[sz1,…,szi−1]S_{z<i}=\left[s_{z_{1}}, \ldots, s_{z_{i-1}}\right]Sz<i=[sz1,…,szi−1]。所以预训练目标很清晰:
maxθEz∼Zm[∑i=1mlogpθ(szi∣xcorrupt ,sz<i)]\max {\theta} \mathbb{E}{\boldsymbol{z} \sim Z_{m}}\left[\sum_{i=1}^{m} \log p_{\theta}\left(\boldsymbol{s}{z{i}} \mid \boldsymbol{x}{\text {corrupt }}, \boldsymbol{s}{\boldsymbol{z}_{<i}}\right)\right]θmaxEz∼Zm[i=1∑mlogpθ(szi∣xcorrupt ,sz<i)]
GLM自回归空格填充任务的技术细节:
输入xxx可以被分成两部分:Part A是被mask的文本 xcorrupt x_{\text {corrupt }}xcorrupt ,Part B由masked spans组成。假设原始输入文本是[x1,x2,x3,x4,x5,x6][x1, x2, x3, x4, x5, x6][x1,x2,x3,x4,x5,x6],采样的两个文本片段是[x3][x3][x3]以及[x5,x6][x5, x6][x5,x6]。那么mask后的文本序列是:x1,x2,[M],x4,[M]x1, x2, [M], x4, [M]x1,x2,[M],x4,[M],即Part A;同时我们需要对Part B的片段进行shuffle。每个片段使用[S]
填充在开头作为输入,使用[E]
填充在末尾作为输出。
二维位置编码:Transformer使用位置编码来标记tokens中的绝对和相对位置。在GLM中,使用二维位置编码,第一个位置id用来标记Part A中的位置,第二个位置id用来表示跨度内部的相对位置。这两个位置id会通过embedding表被投影为两个向量,最终都会被加入到输入token的embedding表达中。
观察GLM中自定义attention mask的设计,非常巧妙:
Part A中的tokens彼此可见,但是不可见B中的任意tokens。
Part B tokens可见Part A。
Part B tokens可见B中过去的tokens,不可见B中未来的tokens。
采样方式:文本片段的采样遵循泊松分布,重复采样,直到原始tokens中有15%被mask。
总结:模型可以自动学习双向encoder(Part A)以及单向decoder(Part B)。
(2)多目标预训练
上述方法适合于NLU任务。作者希望可以训练一个既可以解决NLU任务,又具备文本生成能力的模型。因此除了空格填充目标之外,还需要增加一个生成长文本目标的任务。具体包含以下两个目标:
文档级别
。从文档中采样一个文本片段进行mask,且片段长度为文档长度的50%~100%。这个目标用于长文本生成。
句子级别
。限制被mask的片段必须是完整句子。多个片段需覆盖原始tokens的15%。这个目标是用于预测完整句子或者段落的seq2seq任务。
(3)模型结构
GLM在原始single Transformer的基础上进行了一些修改:
重组了LN和残差连接的顺序;
使用单个线性层对输出token进行预测;
激活函数从ReLU换成了GeLUS。
但我觉得这部分的修改比较简单常见。核心和亮点还是空格填充任务的设计。
(4)GLM微调
对于下游NLU任务来说,通常会将预训练模型产出的序列或tokens表达作为输入,使用线性分类器预测label。所以预训练与微调之间存在天然不一致。
作者按照PET的方式,将下游NLU任务重新表述为空白填充的生成任务。具体来说,比如给定一个已标注样本(x, y),将输入的文本x转换成一个包含mask token的完形填空问题。比如,情感分类任务可以表述为:“{SENTENCE}. It’s really [MASK]”。输出label y也同样会被映射到完形填空的答案中。“positive” 和 “negative” 对应的标签就是“good” 和 “bad。
其实,预训练时,对较长的文本片段进行mask,以确保GLM的文本生成能力。但是在微调的时候,相当于将NLU任务也转换成了生成任务,这样其实是为了适应预训练的目标。但难免有一些牵强。
面试题笔记分享
为了助力朋友们跳槽面试、升职加薪、职业困境,提高自己的技术,本文给大家整了一套涵盖Android所有技术栈的快速学习方法和笔记。目前已经收到了七八个网友的反馈,说是面试问到了很多这里面的知识点。
每一章节都是站在企业考察思维出发,作为招聘者角度回答。从考察问题延展到考察知识点,再到如何优雅回答一面俱全,可以说是求职面试的必备宝典,每一部分都有上百页内容,接下来具体展示,完整版可直接下方扫码领取。
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
1.目前 主流的开源模型体系 有哪些?
2.prefix LM 和 causal LM 区别是什么?
3.涌现能力是啥原因?
4.大模型 LLM的架构介绍?
大模型(LLMs)进阶面
1.llama 输入句子长度理论上可以无限长吗?
2.什么是 LLMs 复读机问题?
3.为什么会出现 LLMs 复读机问题?
4.如何缓解 LLMs 复读机问题?
5.LLMs 复读机问题
6.lama 系列问题
7.什么情况用 Bert模型,什么情况用LLaMA、ChatGLM类大模型,咋选?8.各个专业领域是否需要各自的大模型来服务?
9.如何让大模型处理更长的文本?
大模型(LLMs)微调面
1.如果想要在某个模型基础上做全参数微调,究竟需要多少显存?
2.为什么 SFT之后感觉 LLM傻了?
3.SFT 指令微调数据 如何构建?
4.领域模型 Continue PreTrain 数据选取?5.领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
6.领域模型 Continue PreTrain ,如何 让模型在预训练过程中就学习到更多的知识?7.进行 SFT操作的时候,基座模型选用Chat还是 Base?
8.领域模型微调 指令&数据输入格式 要求?
9.领域模型微调 领域评测集 构建?
10.领域模型词表扩增是不是有必要的?
11.如何训练自己的大模型?
12.训练中文大模型有啥经验?
13.指令微调的好处?
14.预训练和微调哪个阶段注入知识的?15.想让模型学习某个领域或行业的知识,是
应该预训练还是应该微调?
16.多轮对话任务如何微调模型?
17.微调后的模型出现能力劣化,灾难性遗忘
是怎么回事?
大模型(LLMs)langchain面
1.基于 LLM+向量库的文档对话 基础面
2.基于 LLM+向量库的文档对话 优化面
3.LLMs 存在模型幻觉问题,请问如何处理?
4.基于 LLM+向量库的文档对话 思路是怎么样?
5.基于 LLM+向量库的文档对话 核心技术是什么?
6.基于 LLM+向量库的文档对话 prompt 模板如何构建?
7.痛点1:文档切分粒度不好把控,既担心噪声太多又担心语义信息丢失
2.痛点2:在基于垂直领域 表现不佳
3.痛点 3:langchain 内置 问答分句效果不佳问题
4.痛点 4:如何 尽可能召回与 query相关的Document 问题
5.痛点5:如何让 LLM基于 query和 context
得到高质量的response
6.什么是 LangChain?
7.LangChain 包含哪些 核心概念?
8.什么是 LangChain Agent?
9.如何使用 LangChain ?
10.LangChain 支持哪些功能?
11.什么是 LangChain model?
12.LangChain 包含哪些特点?
大模型(LLMs):参数高效微调(PEFT)面
1.LORA篇2.QLoRA篇
3.AdaLoRA篇
4.LORA权重是否可以合入原模型?
5.LORA 微调优点是什么?
6.LORA微调方法为啥能加速训练?
7.如何在已有 LORA模型上继续训练?
1.1 什么是 LORA?
1.2 LORA 的思路是什么?
1.3 LORA 的特点是什么?
2.1 QLORA 的思路是怎么样的?
2.2 QLORA 的特点是什么?
8.3.1 AdaLoRA 的思路是怎么样的?为什么需
要 提示学习(Prompting)?
9.什么是 提示学习(Prompting)?10.提示学习(Prompting)有什么优点?11.提示学习(Prompting)有哪些方法,能不能稍微介绍一下它们间?
4.4.1为什么需要 P-tuning v2?
4.4.2 P-tuning v2 思路是什么?
4.4.3 P-tuning v2 优点是什么?
4.4.4 P-tuning v2 缺点是什么?
4.3.1为什么需要 P-tuning?
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
## 大模型评测面(LLMs)三大模型怎么评测?
大模型的 honest原则是如何实现的?模型如何判断回答的知识是训练过的已知的知识,怎么训练这种能力?大模型(LLMs)强化学习面奖励模型需要和基础模型一致吗?RLHF 在实践过程中存在哪些不足?如何解决 人工产生的偏好数据集成本较高很难量产问题?如何解决三个阶段的训练(SFT->RM->PPO)过程较长,更新迭代较慢问题?如何解决 PPO 的训练过程同时存在4个模型(2训练,2推理),对计算资源的要求较高问题?