一、什么是大模型

为了对人类语言的内在规律进行建模,研究者们提出使用语言模型(language model)来准确预测词序列中 下一个词 或者 缺失的词 的概率。归根到底语言模型就是拟合人类说话方式,从而对人类给的指令或问题进行回复。

到目前为止,语言模型已经演化了四代:

  • 统计语言模型(Statistical Language Model, SLM):使用马尔可夫假设(Markov Assumption)来建模语言序列的 𝑛 元(𝑛-gram)语言模型。仅仅就是依据概率基于前n歌词与对下一个词进行预测。

  • 神经语言模型(Neural Language Model, NLM):基于神经网络构建语言模型,如循环神经网络(Recurrent Neural Networks, RNN),并学习上下文相关的词表示(即分布式词向量),也被称为词嵌入(Word Embedding)。虽然现在基于RNN的语言模型不适合流行,但是其能力确实值得认可,因为其内部结构和计算方式并不适合大规模并行计算,所以遭到时代淘汰,之中代表性工作:word2vec。

  • 预训练语言模型(Pre-trained Language Model, PLM):使用大量的无标注数据预训练双向 LSTM(Bidirectional LSTM, biLSTM)或者Transformer,然后在下游任务上进行微调(Fine-Tuning)。代表性工作:ELMo、BERT、GPT-1/2。其中bert是经典的语言模型,现在很多模型仍然沿用其架构,bert主要是采用了transformer的编码器部分,更适合自然语言的理解(小编理解:基于编码器的模型更适合语言理解,基于解码器的模型更适合语言的生成),而GPT-1/2是使用的解码器,GPT-2将参数量增大其能力过更加出众。

  • 大语言模型(Large Language Model, LLM):基于“扩展法则”(Scaling Law),即通过增加模型参数或训练数据,可以提升下游任务的性能,同时具有小模型不具有的“涌现能力”(Emergent Abilities)。代表性工作:GPT-3、ChatGPT、Claude、Llama

二、大模型构建过程

通常来说,大模型的构建过程可以分为预训练(Pretraining)、有监督微调(Supervised Fine-tuning, SFT)、基于人类反馈的强化学习对齐(Reinforcement Learning from Human Feedback, RLHF)三个阶段。接下来,我们依次介绍一下这三个阶段:

预训练

预训练指使用海量数据进行模型参数的初始学习,旨在为模型参数寻找到一个优质的“起点”,就像学生的模仿学习一样,将问题和答案都告诉你,去学习拥有领域通用能力。在计算机视觉领域(CV)萌芽,通过在ImageNet(一个大型图像数据集)上的训练(AlexNet),为模型参数奠定了坚实的基础。随后,这一理念被自然语言处理(NLP)领域采纳,word2vec开创先河,利用未标注文本构建词嵌入模型;ELMo、BERT及GPT-1则进一步推动了“预训练-微调”范式的普及。

起初,预训练技术专注于解决特定类别的下游任务,例如文本分类、序列标注、序列到序列生成等传统NLP任务。OpenAI在GPT-2的研究中,提出了一种创新思路——通过大规模文本数据预训练,打造能够应对广泛任务的通用解决方案,并在GPT-3中将这一理念扩展至前所未有的超大规模,使得GPT-3一骑绝尘,“遥遥领先”。

在BERT等早期预训练模型中,模型架构和训练任务呈现出多样化特征,有些基于编码器架构有些基于解码器架构。然而,随着GPT系列模型的兴起,“解码器架构+预测下一个词”的策略证明了其卓越效能相比而言bert能力较弱,而随着GPT-3的解码器架构能力卓越,解码器架构成为了当前主流的大模型技术路线。(但仍不能否定基于编码器架构模型的卓越能力)

在预训练过程中,首要任务是搜集和清洗海量的文本数据,确保剔除潜在的有害内容。模型的知识库几乎完全源自训练数据,数据的质量与多样性对模型性能至关重要。因此,获取高质、多元的数据集,并对其进行严谨的预处理,是打造高性能语言模型的关键步骤。

监督微调(SFT)

上一小节提到,预训练提供了基本模型能力,而监督微调则算是在专业领域培训,使得模型在具体任务上表现突出。

尽管引入了诸如上下文学习(In-Context Learning, ICL)等提示学习策略以增强模型的适应性,但模型本身在下游任务解决上的能力仍受限。为了克服这一局限,预训练后的大型语言模型往往需经历微调过程,以提升其在特定任务中的表现。比如在特定领域,coding或者其他专业领域,灭有经过微调的模型效果差强人意。但是对于大多数平民玩家,大家都没有资源进行微调(然后就诞生了许多提示词攻城狮)。

目前应用最广泛的微调技术就是监督微调,利用承兑的任务输入和预期输出的数据,巡礼那模型学会以问答的形式解答问题,经过微调之后,大语言模型可以在下游任务中展现较强的能力。

相较于预训练所需的海量数据,指令微调所需数据量显著减少,从几十万到上百万条不等的数据,均可有效激发模型的通用任务解决能力,甚至有研究表明,少量高质量的指令数据(数千至数万条)亦能实现令人满意的微调效果。这不仅降低了对计算资源的依赖,也提升了微调的灵活性与效率。

基于人类反馈的强化学习(RLHF)

随着模型的能力越来越强,新的问题诞生了,模型可能生成对人类有害的内容,这个时候就需要将模型的价值观与人类对齐。

强化学习不同于前面的监督学习,强化学习更像是让模型自己探索,通过执行action获得对应的reward,最终通过最大化奖励,从而使得模型学习到一些能力。在对齐价值观中,当模型做出来有害人类的回复时,会得到惩罚reward会小,经过多轮训练,模型会逐渐向符合人类价值观的方向靠拢。

OpenAI在 2022 年初发布了 InstructGPT 论文,详尽阐述了如何实现语言模型与人类对齐。论文提出了基于人类反馈的强化学习对齐(Reinforcement Learning from Human Feedback, RLHF),通过指令微调后的强化学习,提升模型的人类对齐度。RLHF的核心在于构建一个反映人类价值观的奖励模型(Reward Model)。这一模型的训练依赖于专家对模型多种输出的偏好排序,通过偏好数据训练出的奖励模型能够有效评判模型输出的质量。

目前还有很多工作试图去除复杂的强化学习算法,或其他使用 SFT 方式来达到与 RLHF 相似的效果,从而简化模型的对齐过程。例如,直接偏好优化(Direct Preference Optimization, DPO),它通过与有监督微调相似的复杂度实现模型与人类对齐,是一种典型的不需要强化学习的对齐算法。相比RLHF,DPO不再需要在训练过程中针对大模型进行采样,同时超参数的选择更加容易。

三、开源大模型和闭源大模型

根据上面的学习,我们不难发现,构建大模型不仅需要 海量的数据 ,更依赖于 强大的计算能力 ,以确保模型能够快速迭代和优化,从而达到预期的性能水平。鉴于此,全球范围内能够独立承担起如此庞大计算成本的机构屈指可数。这些机构可以分为以下两大阵营:

  • 一是选择将模型开源的组织 ,他们秉持着促进学术交流和技术创新的理念,让全球的研究者和开发者都能受益于这些模型。通过开放模型的代码和数据集,他们加速了整个AI社区的发展,促进了创新和技术的民主化。这一阵营的代表有Meta AI、浪潮信息等。

  • 另一类则是保持模型闭源的公司 ,它们通常将模型作为核心竞争力,用于提供专有服务或产品,以维持商业优势。闭源模型通常伴随着专有技术和服务,企业可以通过API等方式提供给客户使用,而不直接公开模型的细节或代码。这种模式有助于保障公司的商业利益,同时也为用户提供了稳定和安全的服务。这一阵营的代表有OpenAI、百度等。

无论是开源还是闭源,这些大模型都在推动人工智能领域向前发展,对于推动大语言模型技术的渐进式发展起到了至关重要的作用。

四、大模型时代应用开发范式

都说2025是agent元年,进入了大模型时代,各种模型引用层出不穷,如何充分挖掘大模型内在的潜能成为应用开发者面临的一道关键难题。在这一背景下催生了多种多样的应用开发策略。

promp工程

prompt工程通过精心打造的提示词直接调教大模型,让大模型按照指令去解决问题,这也是技术门槛最低应用最广泛的手段。

为例充分挖掘大模型潜力,出现了两种技术:上下文学习和思维链提示

上下文学习,将系统提示词、任务说明示例融入到用户问题中,利用模型已经拥有的基础能力,无需额外巡礼那即可完成新任务的学习。

思维链提示,模型对于复杂任务时表现相对较差,但是大模型搭配上思考能力,将复杂问题通过思维链拆解成简单任务时,效果直接起飞,很令人满意。

知识库(RAG)

知识库现在很火,因为模型的训练语料是固定的,模型训练完成之后不能够再补充额外知识,面临一些模型认知之外的问题,模型倾向于“一本正经的胡说八道”深深伤透了小编的心(小编认为由于训练过程中,模型想要对于用于输入做出响应就必须要做出输出,而模型又不知道所以只能瞎编了)。

而知识库就很好的解决了这个问题,通过将外部只是存储在数据库中,当用户提问时,通过数据库检索(向量知识库),检索相关信息,将用户问题和检索搭配的结果通过模型的语言能力给用户一个满意的回复

向量知识库

随着RAG的发展向量知识库也应运而生,对于传统知识库而言,检索太慢了,等检索到结果,菜都凉了,所以诞生了向量知识库。

向量知识库是将数据通过嵌入模型(embedding)嵌入,生成密集向量存储在向量数据库中,检索时通过向量相似度或点积等方式快速检索top-k个结果,相比于传统数据库的这个精确匹配速度快多了,但是还是慢!!!然后又诞生了多种检索方式图检索、树检索(HNSW、IFAT等检索方式)大大提升了检索速度。从而提高了RAG系统的响应速度。

前后端开发

对于一个完整的模型应用,必须拥有前端界面和后端服务,现在的前后端一般都是分离的,降低了开发难度,对于开发者也提供了便利。

前端:常见的又gradio、streamlit这些都是python库比较容易搭建前端界面,但是界面效果色彩丰富度等感觉有点差强人意,但是比pyqt强多了(复杂和丑)。但是小编最推荐的就是用HTML+CSS+JAVAscript三件套进行开发,无论是从界面色彩、渲染、交互等方面好看多了。目前主流前端开发使用的是vue3(小编个人理解哈,才疏学浅有错误请见谅)。

后端:小编常用FastAPI,python框架,结构清晰简洁明了,推荐。目前大模型应用的主流语言也是python所以很适配,推荐。

模型微调

小编一直以为模型微调是一件很费劲的事情,但是自从遇到了llamafactory(不用写一行代码,即可实现微调),对于小规模微调很爽,但是对于大规模的微调不建议使用还是选用其他方式吧。

那可能会有人有疑问,数据我怎么准备,我一个一个写吗,有没有开源项目?有的,有的兄弟开源项目easy dataset轻松构建预训练数据集。那有没有标注的项目呢?有的,有的,简单标注直接用anaconda自带的labelme(一下午标上几百张图片是没问题的),那有没有大规模标注项目呢?有的label-studio这个项目可以进行大规模标注。

小编确实才疏学浅,就写到这里吧,再往下写不下去了。嘿嘿

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐