LLM发展史
GPT模型是一种自然语言处理模型,使用Transformer来预测下一个单词的概率分布,通过训练在大型文本语料库上学习到的语言模式来生成自然语言文本。
-
GPT-1(117亿参数),GPT-1有一定的泛化能力。能够用于和监督任务无关的任务中。
-
GPT-2(15亿参数),在生成方面表现出很大天赋,阅读摘要、聊天、续写、编故事。
-
GPT-3(1750亿参数),作为一个自监督模型,可以完成自然语言处理的绝大部分任务,模仿人类叙事,创作定制诗歌,生成游戏剧本等。
-
InstructGPT是一个经过微调的新版GPT-3,可以将有害的不真实的有偏差的输出最小化。
-
ChatGPT是InstructGPT的衍生产品,将人类的反馈纳入训练的过程。更好的使模型输出与用户意料保持一致。
-
ChatGPT-4.0多模态数据支撑,智能程度更高、具备更强大的常识、Plugins插件。
关于大模型
-
AI大模型是“人工智能预训练大模型”的简称,包含了“预训练”和“大模型”两层含义,二者结合产生了一种新的人工智能模式,即模型在大规模数据集上完成了预训练后无需微调,或仅需要少量数据的微调,就能直接支撑各类应用。
-
预训练大模型具备大量基础知识,针对某个垂直领域只需做微调就能完成任务。
-
当前AI大模型包含自然语言处理(NLP)、计算机视觉(CV)等,统一整合的多模态大模型等。
语言模型
-
统计语言模型是在1990年代基于统计学习方法发展起来的。其基本思想是基于马尔科夫假设,例如根据最近的上下文预测下一个词。如二元模型和三元模型,存在维度灾难问题,为了缓解数据稀疏性问题引入了特殊设计的平滑策略。
-
神经语言模型通过神经网络来建模词序列的概率,通过分布式词向量来建模上下文表示,例如Word2Vec使用浅层神经网络来学习分布式词表示。
-
预训练语言模型通过预先训练模型来捕捉上下文感知的词表示,并根据具体的下游任务进行微调。LSTM、Transformer之类的架构,预训练的模型显著提升了各种NLP任务的性能,"预训练和微调"的学习范式变得流行。
-
大语言模型是通过扩展预训练语言模型的规模,包括模型大小和训练数据实现一个超大模型。大语言模型除了提升任务性能上限外,还显示出与小模型不同的行为,涌现能力。
涌现能力
LLM的涌现能力指的是在大型模型中出现的一些令人惊讶且不同于较小模型的能力,类似于物理学中的相变现象。
-
上下文学习,LLM能在给定自然语言指令生成预期输出的能力,无需额外的训练。
-
指令遵循,通过多任务数据集微调能通过自然语言指令来执行各种任务。
-
逐步推理,LLM通过中间推理步骤的提示机制来实现逐步推理,链式思维推理。
Base模型与Chat模型
-
Base模型通常是海量语料进行的无监督学习出来的预测模型,是预训练模型,也可以称为LLM基座。
-
Chat模型通常是指令微调(SFT),人工标注指令数据集进行监督学习得到的模型,简单看就是能自然语言交互。
训练&微调
-
资源充足优先考虑Base模型微调。
-
数据少选择Chat模型微调。
-
资源允许选择全参数微调,效果好。
-
资源优先选择部分参数微调,性能上限被限制。
-
只用领域数据很可能遗忘,通用能力可能丢失。
-
NVLink很重要,多卡通信瓶颈。
-
IB卡很重要,跨机通信瓶颈。
微调添加知识
-
LLM lora微调增加知识,增加后基本不会影响到旧知识。
-
回答不是每次都一样,句子的主干差不多。
-
增加一个知识A100若干分钟微调完。
-
LLM可看成一种压缩存储,将知识压缩并存储。
-
增加太多新知识可能会遗忘旧知识。
-
微调或推理时可以使用x-shot-prompt提升。
-
某个任务传统bert之类的模型微调后也能得到相当的效果,LLM核心是任务统一及自然语言执行。
关于行业大模型
-
通用数据+领域数据,从0开始全量训练,千百张卡,正经的行业大模型。
-
选择开源预训练Base模型,二次预训练,百十张卡,也能说是行业大模型。
-
选择开源Chat模型,做SFT,若干张卡,也能吹是行业大模型。
LLM低代码
核心关键点就是要LLM具备自然语言的方式来操作结构化数据,比如json。
你是一个json解析器,现在有一个默认的json的为: { "type": "", "properties": { "columns": [""], "operation": [""] } } 其中,type表示事件类型,columns表示列名,operation表示操作名。 现在根据用户的输入去填充这个json,并输出json。 请提供用户输入,以便我可以填充json。 把“事件类型”改为“点击” 好的,我已将“事件类型”改为“点击”: { "type": "点击", "properties": { "columns": [""], "operation": [""] } } 请注意,columns和operation都是空数组,因为它们还没有被填充。 把“操作名”改为“delete” 好的,我已将“操作名”改为“delete”: { "type": "点击", "properties": { "columns": [""], "operation": ["delete"] } } 请注意,columns仍然是空数组,因为它们还没有被填充。
LLM评测
-
通用能力通过开源测试,例如SuperCLUE和c-eval。
-
通过通用能力筛选的LLM再进入业务能力层测试,由业务团队以业务角度去评测。
-
自动+手动方式。
落地场景上
-
没法在严谨客服领域端到端,黑盒生成不可控。
-
在点上嵌入LLM能力。
-
自动或半自动等辅助型工具,自动标注之类的。
-
文本分析领域。
-
自然语言转换成结构化指令,自然语言->DSL,在此基础上再做智能化。
-
坐席辅助生成回复参考、摘要。
-
LLM结合文档搜索提供更自然的回答。
-
不能直接取代知识图谱,可提升知识图谱维护效率。