01 总述
1. 技术架构
在构建大型模型应用时,技术架构的规划至关重要。整体架构可被划分为四个层次:基础设施层、模型工具层、模型引擎层及大模型应用层。
(1)基础设施层:涵盖了数据服务、云平台及开源社区等多个方面,为应用开发提供坚实的基础。
数据服务:大规模模型对数据的要求极高,厂商可通过自主标注数据或采购外部数据的方式满足需求。
云平台:大规模模型的训练和推理过程对算力资源的需求也十分庞大,拥有自身基础架构的厂商可自行采购裸金属或利用现有云平台所提供的 PaaS 服务来构建计算平台。
开源社区:活跃度极高,众多优秀的开源模型如 LLama、micheal 等不断涌现,为训练和推理提供了高效的工具。企业通常通过整合开源模型、数据和代码方案,以迅速建立自身的模型能力和推理训练能力;
(2)模型工具层:是模型训练与部署的平台,构建于基础设施层之上,涵盖了从数据构建、模型训练到模型部署的全过程。
数据构建:涵盖了数据清洗、分类和管理等工作。
模型训练:涵盖了模型预训练、微调和评估等工作。
模型部署:涵盖了模型转换、量化和裁剪等工作。
(3)模型引擎层:主要作用是实现路由和编排,将不同的模型能力进行整合和协调。
模型包括文本模型、视觉模型、多模态模型以及分类判别模型等,然而单一的模型并不能直接为最外层的应用提供所需的所有功能,需要根据各种模型能力进行编排,从而提供更加精准和高效的服务,包括但不限于检索、存储、安全、代码、审计等工具能力的集合。举个例子,在智能问答的应用中,不仅仅需要依赖一个生成模型,同时也需要结合内容检索和安全性识别的能力。
(4)大模型应用层:是整个架构的最高层,这些应用包括智能问答系统、写作助手、观点提取、智能助教、标题生成以及文本总结等。
对于规模较大的企业,可能需要建设好这四层。但对于小规模的企业和创业团队来说,许多开源平台和云平台都提供了包含模型引擎、模型工具和基础设施的服务。因此只需要利用现有的资源,针对具体的业务场景,专注于做好路由和编排相关的工作,或者偶尔准备少量数据,进行少量模型微调,就能以相对较低的成本实现需求。
2. 应用开发生命周期
当具备相应技术能力时,开发大型模型应用需遵循一般项目开发的生命周期,包括需求定义、方案设计、方案开发以及部署 & 迭代等四个主要环节。
需求定义与方案设计阶段,主要从两个方向进行考量:
首先,明确业务范畴与交互场景。这要求界定产品功能中哪些部分依赖大模型支持并确定其交互边界。以聊天功能为例,需要界定大模型在其中的作用范围和交互限制,通常大模型与用户的交互界面是一个聊天框,因此,交互设计应以聊天为主,并支持流式输出,这是设计过程中需考虑的第一个方面。
其次是关注业务目标。以聊天为例,若产品属性为工具类,如智能助手,业务目标应为用户需求达成率,衡量这一目标,可观察用户点赞数量或正反馈数量;若产品属性为情感陪伴,则应关注对话轮次和对话次数,在这一场景下,期望 AI 与用户进行尽可能多的交流和陪伴,因此数据埋点需相应调整。
方案开发阶段,也包括两个方向:
模型选择是关键步骤,需要依据不同应用场景挑选最合适的模型。例如,针对多轮对话场景,更倾向于选择对话效果更优的模型,如 LLaMA chat 等模型;在知识问答方面,更倾向于选择具有高检索能力和安全性的工具。在此基础上进行效果调优,包括 PE、模型微调以及强化学习等。调优完成后,将对模型本身的效果进行评估,评估每个阶段的效果均达到预期后,还需对整体效果进行综合评估。
另一方面是选择相应的工具,通过流程编排来实现整体的互动效果。最后考虑到大模型具有较高的参数量和推理成本,需要对最终方案进行严格的性能压测,如基于线上流量等因素测试,以确保线上服务不会因性能问题而影响效果。
方案开发完成后,就进入了部署 & 迭代阶段,同样包括两方面:
一方面是与现有其他产品模块的集成测试和上线等工作。
另一方面是构建大模型的持续迭代和持续学习能力,包括对线上数据进行回收,以及对线上案例进行分析。
02 核心要素
1. 模型调优 – 提示词工程
提示词工程是大模型应用的重要基础,具有控制力更强、反馈更快速、迭代更灵活、可复用等优势,进而可以有效降低训练和运行成本。接下来,分三个部分详细介绍提示词工程:
编写一条优秀的提示词或指令
对这些指令进行调优,并通过流程编排使其最大限度地满足业务需求
评估提示词是否满足实际业务需求
(1)编写一条优秀的提示词或指令
指令应具备的要素:应当明确模型需要扮演的角色、要解决的问题、目标场景、相应的边界条件、解决问题需要满足的要求和相应的风格。
指令编写原则:提供简洁、正确、清晰且普适的描述,正确引用相关资料。这些原则有助于提升指令的质量,确保大型模型应用的有效性和准确性。
超参数设置:调整超参数,如采样策略、输出长度和返回格式等。
(2)指令调优和编排
调优的主要技巧包括:
Few Shot:除了描述要做什么以外,还为模型举了一些例子。优点是可以让模型快速适应新任务,而不需要大量数据,但需要精心设计例子来引导模型。
StepByStep:将复杂任务分解为更小、更简单的步骤。其缺点显而易见,就是需要调多次,过程繁琐。
思维链:首先给出一个指导性的问题,模型会自动完成思考并提供答案。接着,这个答案和思考过程被分割处理,再补充指导信息,指示模型基于此问题及其思考和答案提出下一个问题。这一过程持续进行,逐步引导模型达到最终结果。这个过程能有效增强模型推理能力,但也存在繁琐的缺点。
另外还可以通过流程编排来进行调优:
ReAct&Langchain:首先将业务工具封装成小函数;其次是询问模型以确定函数调用顺序,最后按此顺序调用函数,将结果反馈给模型。
RAG(Retrieval-augmented Generation ):检索式模型,通过外部知识库增强模型在典型场景下的表现。因为模型训练完成后,知识库固定于某个时间点。模型通过搜索能力,如提出问题并搜索相关资料,将这些资料提供给问题处理模型,从而准确回答问题。检索式模型的优点在于,额外信息可增加其回答的准确性。然而,该模型的缺点是仍然依赖于外部知识库的质量以及检索过程的效率。
策略组合:这实际上是一种面向未来的方法。以 OpenAI 去年发布的一个项目为例,该项目基于状态机和决策模型,核心理念在于通过模型对各个操作节点进行深入思考与评估,探询更优问题解决策略。在执行过程中,模型通过调用特定接口以应对问题。问题解决后,模型会再次评估,决定下一步行动。这一过程循环进行,直至问题彻底解决并输出结果。
(3)评估方法
基于以上这些方面,我们能够快速构建出大模型应用。然而,如何评估这些应用的价值和效果呢?
上图中对比了不同的模型评估方法的优缺点。在实际生产环境中,面临的问题种类繁多,涉及算数计算、方程解答、语言翻译等多种类型。为了解决这些问题,可以引入前置分析模型,该模型能够对问题的本质进行深入剖析。根据模型分析的结论,若问题适宜通过算数计算解决,则将激活相应的计算流程;反之,若问题更适合以翻译方式处理,则将启动翻译流程。通过这种策略,即可实现问题处理的合理分流,提高问题解决的效率和准确性。
2. 模型调优 - 微调
模型微调,即给基础模型提供特定的下游任务数据,使得模型在预训练权重上继续训练,直至满足下游任务性能标准。
模型微调与提示词工程的本质区别在于,提示词工程主要是向模型提供一个下游任务的要求标准,并让模型理解这个标准后执行相应操作;而模型微调则是通过提供具体的数个乃至成百上千个示例,让模型自行归纳并实现预期的效果,这一过程减轻了人工总结的工作量。
需要进行模型微调的情况主要有三种:
通过提示词工程无法得到满意的效果;
线上有很多 bad case,无法有效处理;
在参数量大的模型中取得了较好的效果,但希望压缩成本,可以用大模型来造数据,让小模型进行学习,这样在较小的参数量,较低的成本下也能够取得和大模型类似的效果。
模型微调与提示词工程相比的劣势主要在于,提示词所见即所得,而模型微调反馈的链路是比较长的,也在无形中延长了迭代周期。另一方面,模型微调需要调整参数,产生新的模型,因此开发、部署成本也会更高。
模型微调的分类如图,其中参数高效微调,其原理在于,在训练过程中,固定了绝大多数的参数,只对少量的参数进行训练。理论上其效果是最优的。但劣势是消耗资源与预训练相当,难以规模化。另外可控性较差,容易引发灾难性遗忘等问题。
另外一种是参数高效微调(PEFT),只训练少量参数,可以降低训练成本,也能降低灾难性遗忘的风险。PEFT 又包括 Adapter-tuning、Prefix-tuning 和 LoRA。具体优势和劣势如上图中所示,不再赘述。
3. 迭代要素
好的模型调优是建立在好的提示词工程基础之上的,需要使用前文中提到的相关技巧,获得一个较好的效果,在此基础上再结合优质的数据和科学的观测、评估和 scaling,才能训练出一个好的模型。
要构造高质量的样本,需要满足如上图所示的一些要求。训练过程中需要及时观测、评估并进行相应的调整,包括数据的 scaling 和超参的 scaling。
4. 方案设计&能力整合
为了使效果更为显著,在模型训练完毕并筛选出表现优异的模型后,需将这些模型融入原子能力体系,该体系包括模型类能力,模型通常作为独立的单点应用存在。这些原子能力与其他增强类能力和操作类能力相结合,通过上游流程的编排,最终实现大模型应用的开发。
流程编排工具主要分为两大类:一是固定编排流程,二是模型自定义流程。固定编排流程的逻辑是预先设定好的,以 RAG 为例,流程是人工编写并编排好的,模型实际上只参与整个流程中的一个环节。另一种模型自定义流程模式,以 OpenAI 的 Assistant 接口为例,在接收到用户请求后,模型能够自主决策后续步骤。
5. 评估
评估(详见上图)在整个人工智能大模型应用开发过程中占据着非常重要的地位,评估主要包括大模型通用的能力评估、模型综合能力评估(开源社区提供的,供各类预训练模型进行打榜)、业务应用能力评估(特定的应用场景)。针对不同的任务应该选择适当的评估方法。
03 应用案例
大模型的应用主要有两种,一种是应用相关的,一种是 inference 相关的。
应用相关的主要包括 AI 搜索、工作副手和对话助手。
Inference 相关的包括:中间件,主要用于任务编排;基础工具,致力于向量检索和数据检索等;模型工具,提供基础的模型能力,如文生图、文生视频。
随着大模型应用的持续推进,未来在千行百业都会融入AI,应用场景一定会更加丰富。