LLM大模型工程入门级知识初探

文章目录

  • 前言
  • 一、Prompt工程
  • 二、模型微调finetune(如multi lora)
  • 三、代码执行Code Interpreter
  • 四、函数支持Function Call
  • 五、外部集成LangChain
  • 六、Embedding与向量数据库VectorDB
      • Embedding Search
      • 向量数据库VectorDB
  • 八、SFT、RLHF、RAG、MultiAgent
      • SFT与RLHF
      • RAG
      • MultiAgent
  • 九、插件(plugin)模式/代理(agent)模式
  • 十、其他
  • 总结


前言

源自脉脉上面刷到的大模型业务工程落地可以做的方向。其实如果不是接触相关工作,有的人可能不会想了解这方面,自己实习做的方向与之相关,因此想调研总结一下行业热点方向与基础入门知识,还有一些的专业词汇的解释。包括但不限于Prompt工程、模型微调finetune(如multi lora)、Code Interpreter、LangChain、VectorDB、SFT、RAG、MultiAgent、Embedding Search、RLHF、DPO、PPO、数据飞轮、推理加速、LLMOps等,感兴趣就都可以了解一下。
LLM大模型工程入门级知识初探_第1张图片


一、Prompt工程

之前理解是给大模型加魔法的入口,提示工程(Prompt Engineering,简称 PE),是通过一些技巧和手段,让模型可以输出更准确、更相关、且更容易被下游代码处理的内容的过程。GPT 是 Generative Pre-trained Transformer 的缩写,是 OpenAI 开发的大语言模型。它将文本视为一个 token 序列,预测序列下一个可能出现的token 。因为模型不能理解知识,只是在尝试输出序列,所以一个好的引导词,能够在不需要调节模型参数的基础上,产生更接近理想的输出,并且可以节省token占用(更省钱)。常见的一些技巧:如CoT(Chain of Thought)/ Few or Zero-Shot CoT / In-Context Learning(ICL)/ PAL(Program-aided Language models)/ Self-Consistency等, 此外还要注意模型幻觉、数学运算差和注入安全问题以及对应的解决方案。
一套适用于工程场景的框架be like:背景、角色、指令、输出。
另外openAi关于prompt的有专门的介绍,参考官方的cooking book以及问答实践专区
https://platform.openai.com/docs/introduction
https://help.openai.com/en/collections/3675942-prompt-engineering

二、模型微调finetune(如multi lora)

可以思考一下大模型和传统机器学习或者深度学习解决nlp问题的区别,为什么有的场景就推荐用LLM来解决。个人觉得openAi家的数据与资源是强大的,普适性强,涉及范围广,有些场景不需要我们从头训练,用人家的预训练模型,在我们的工程业务场景上面进行finetune(微调),能够降低成本更快速并且输出更接近理想的结果。
并且传统的nlp也存在一些问题:(1)这些任务都需要大量的标注数据进行训练才有不错的模型效果,但针对特定任务的高质量标注数据难以获取,通常都需要花费大量的人力物力才能得到数量不多的有效数据;(2)而且某一个任务训练的模型很难泛化到其它任务中;(3)更重要的是在目前的互联网上有海量的文本,只是这些文本是没有针对特定任务做标注的,被称为无标注文本,很难将这些文本应用到特定任务的训练,这未免有些遗憾和浪费。
大模型的出现弥补了传统nlp的这些不足,它可以通过生成方式进行零样本自监督学习。
大模型微调有一些相关的策略,比如有名的低秩自适应(LoRA)方法、量化(Quantization)QLoRA、Adapter、prompt-tuning等。
参考下面的链接,里面有详细描述
https://zhuanlan.zhihu.com/p/644122818?utm_id=0
https://zhuanlan.zhihu.com/p/650287173
https://zhuanlan.zhihu.com/p/627642632?utm_id=0
https://zhuanlan.zhihu.com/p/669865795

三、代码执行Code Interpreter

代码解释器(Code interpreter),模型内置一个代码解释器,赋予其执行代码的能力。代码解释器(Code Interpreter)可以让普通用户(非程序员)用自然语言完成以前需要写代码来完成的复杂工作。比如使用 Python 进行编程,chatGPT模型内置一个沙箱解释器,可以运行Python代码。我们也可以给自研模型平台定制化开发Code Interpreter,方便业务侧使用来执行代码并分析。这就意味着不需要程序员对象,你也能随时随地拥有自动化编程助手。通过代码解释器,用户可以解决定量和定性的数学问题、进行数据分析和可视化,在不同文件格式之间进行转换。它功能强大有便捷之处,但是同时也有一些限制需要注意。
参考官方API https://platform.openai.com/docs/assistants/tools/code-interpreter
https://zhuanlan.zhihu.com/p/643192667
https://zhuanlan.zhihu.com/p/643024084
https://baijiahao.baidu.com/s?id=1771907200390315425&wfr=spider&for=pc

四、函数支持Function Call

这个功能是在23年6月份推出的,Chat Completions API新增了函数调用功能,让 GPT 模型拥有调用外部接口的能力。从人机交互上来说, Function Call 本质上实现了准确识别用户的语义,将其转为结构化的指令输出,以便与工程代码更好衔接。其他意义理解:
OpenAI的function call功能,相当于开放了自定义插件的接口。
通过接入外部工具极大的改善了模型幻觉(一本正经的胡说八道)问题。
一定程度上缓解了数据安全问题,私有数据可以尽量自行处理。
参考https://sspai.com/post/81986
https://zhuanlan.zhihu.com/p/656786574
https://zhuanlan.zhihu.com/p/638089428?utm_id=0
http://www.ai2news.com/blog/3058639/
GPT4新特性:Assistant + FunctionAll + Retrieval
LLM大模型工程入门级知识初探_第2张图片
博文参考地址 https://zhuanlan.zhihu.com/p/666198140
https://www.zhihu.com/question/629324504/answer/3283601731?utm_id=0
https://baijiahao.baidu.com/s?id=1781875118264816313&wfr=spider&for=pc

其实后续Chat Completion接口的API里面这个Function Call标识为Deprecated废弃了,取而代之的是tools和toolChoice,也就是支持更广义上调用外部的工具接口,只不过目前这个工具局限于function.参考https://platform.openai.com/docs/api-reference/chat/create
LLM大模型工程入门级知识初探_第3张图片
补充介绍:
LLM支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI等,FunctionCall在不同API里面的格式可能也不一样。之前在研究接入GPT-4V模型的时候,其API接口也有openAi官方和微软Azure的不同实现,之前它们传输请求body格式是有差别的,不过目前看来是对齐了。个人理解微软自从收购OpenAi以后两者产品侧应该都会趋于统一吧:
LLM大模型工程入门级知识初探_第4张图片
1.openAi的4V模型API
参考https://platform.openai.com/docs/guides/vision
请求body如下(示例):

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
  model="gpt-4-vision-preview",
  messages=[
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "What’s in this image?"},
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
          },
        },
      ],
    }
  ],
  max_tokens=300,
)

print(response.choices[0])

2.Azure的4V模型API
参考https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/gpt-with-vision
https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/gpt-4-turbo-with-vision-is-now-available-on-azure-openai-service/ba-p/4008456
请求body如下(示例):

{
    "messages": [ 
        {
            "role": "system", 
            "content": "You are a helpful assistant." 
        },
        {
            "role": "user", 
            "content": [
	            {
	                "type": "text",
	                "text": "Describe this picture:"
	            },
	            {
	                "type": "image_url",
	                "image_url": {
                        "url": ""
                    }
                } 
           ] 
        }
    ],
    "max_tokens": 100, 
    "stream": false 
}

五、外部集成LangChain

LangChain是一个基于大语言模型(LLM)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。
相当于java里面的Spring框架, LangChain能够极大方便LLM相关的开发,结合了对接多种场景的工具,并且可以外部数据源进行连接,实现了开箱即用。
LangChain是一个让你的LLM变得更强大的开源框架。LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。
一个鹦鹉的图标,很贴合其大语言模型层面上的强大能力支持,gitHub上很火,star很多。
LangChain+LLM实战—LangChain中的6大核心模块
LLM大模型工程入门级知识初探_第5张图片
目前围绕 LangChain 框架核心模块主要有六个,包括模型输入输出(Model I/O)、数据连接(Data Connection)、链(Chains)、记忆(Memory)、代理(Agents)和回调(Callbacks)。下面是它们各自的作用:
(1)模型输入输出模块提供了语言模型和大语言模型的接口,可以将文本格式化为模型输入。
(2)数据连接模块提供了文档加载器和文档转换器等工具,用于将非结构化文本转换为可处理的数据。(3)链模块提供了各种类型的链,如基础链、路由链和顺序链等,用于组合和连接不同的功能。(4)记忆模块用于在链之间存储和传递信息,实现对话的上下文感知能力。(5)代理模块通过使用 LLM 来自动决策和执行动作,完成任务。(6)回调模块提供了连接到 LLM 申请的各个阶段的功能,用于日志记录、监控和流传输等任务。
这些模块的组合可以构建复杂的链式模型,实现各种自然语言处理任务。扩展参考下面链接:
https://it.sohu.com/a/712738865_100093134
http://www.bryh.cn/a/605001.html
https://sg-info.cn/article/show/20104
https://cloud.tencent.com/developer/article/2324297
LangChain六大主要领域:
(1)管理和优化prompt。不同的任务使用不同prompt,如何去管理和优化这些prompt是langchain的主要功能之一。
(2)链,初步理解为一个具体任务中不同子任务之间的一个调用。
(3)数据增强的生成,数据增强生成涉及特定类型的链,它首先与外部数据源交互以获取数据用于生成步骤。这方面的例子包括对长篇文字的总结和对特定数据源的提问/回答。
(4)代理,根据不同的指令采取不同的行动,直到整个流程完成为止。
(5)评估,生成式模型是出了名的难以用传统的指标来评估。评估它们的一个新方法是使用语言模型本身来进行评估。LangChain提供了一些提示/链来协助这个工作。
(6)内存:在整个流程中帮我们管理一些中间状态。
总的来说LongChain可以理解为:在一个流程的整个生命周期中,管理和优化prompt,根据prompt使用不同的代理进行不同的动作,在这期间使用内存管理中间的一些状态,然后使用链将不同代理之间进行连接起来,最终形成一个闭环。
LLM大模型工程入门级知识初探_第6张图片
官网https://www.langchain.com
github https://github.com/langchain-ai
参考https://zhuanlan.zhihu.com/p/640936557
https://www.langchain.com.cn
https://blog.csdn.net/qq_41893274/article/details/131753839
https://blog.csdn.net/weiwosuoai/article/details/131746043
https://www.bilibili.com/read/cv25833410/

六、Embedding与向量数据库VectorDB

Embedding Search

注意它不同于ElasticSerach构建倒排全文索引的方式,Embedding搜索也不能代替文本搜索,很多时候可以构建二者结合的混合检索,提升召回率。
https://www.zhihu.com/question/623402588/answer/3299162698
嵌入(Embedding)是一种将离散的符号(如词语、字符或文档)映射到连续向量空间的表示方法。它将离散的符号转换为实数向量,从而使得计算机可以更好地处理和理解文本数据。
OPENAI提供内置的Embedding api,可以直接使用。
回顾一下Vector,其实它也就是我们在高中数学或者大学数学里学到的向量,只不过维度比当时的直角坐标系里的二维多一点而已(或许多到了 512 维)。在许多学术论文中,你可能更熟悉它的另一个名字 —— 嵌入(Embedding)。为了实现我们前面提到的超级大脑,我们首先需要让这个大脑理解各种信息,而这就是嵌入的作用。
比如你正在看一部电影,你的大脑会自动将电影中的人物、情节、对话等信息转化为你可以理解的形式。这就是一种嵌入的过程。同样,我们也可以让计算机做类似的事情,将各种类型的数据转化为它可以理解的形式,而计算机接受的也就是数字,也就是向量。回顾一下高中数学就好了,二维向量可以表征一个直角坐标系里的每个点,也就表征了这个直角坐标系里的所有信息了。那如果我们把维度无限拉大,他就可以表征无限多的信息。你可能在一些科幻电影中看到过,说高等生物可能不会像我们一样以三维的肉体存在,他们可能存在于更高的维度。比如时间就是第四维,跳脱之后就变成了四维生物。这其实就说明了为什么嵌入可以更好的理解这个世界,一串数字可以帮助计算机理解世界之后。那么如何将数据转换为向量呢?这就要靠我们在 AI 界做出的进步了,我们研究出了很多模型,可以将任意类型的数据映射到一个高维空间中,也就是变成01编码表示,生成一个向量,这个向量就是数据的嵌入表示。
嵌入方法有很多种,例如文本嵌入(text embedding),可以将文字转换为向量;图像嵌入(image embedding),可以将图片转换为向量;音频嵌入(audio embedding),可以将声音转换为向量;视频嵌入(video embedding),可以将视频转换为向量;甚至还有多模态嵌入(multimodal embedding),可以将不同类型的数据转换为同一个空间中的向量,比如一个电影包含声音和画面,那如果要更全面的表征这个电影,我们就需要结合音频嵌入和视频嵌入,也就是多模态嵌入了。

向量数据库VectorDB

它是一种新型的数据库,它新在它存的是 Embeddings(嵌入)。这个新并不是为了新而新,从传统的直接存储内容转到存储向量,让它变得更聪明,更强大。LLM 有的一些挑战,例如缺乏领域知识,缺乏长期记忆,缺乏事实一致性等。Vector DB 就像是给 LLM 提供了一本百科全书,让 LLM 可以根据用户的查询,在 Vector DB 中检索相关的数据,并根据数据的内容和语义来更新上下文,从而生成更相关和准确的文本。这样,LLM 就可以拥有一个长期记忆,可以随时获取最新和最全面的信息,也可以保持事实一致性和逻辑连贯性。
向量数据库是一种专门用于存储和处理向量的数据库。向量数据库使用专门的算法和数据结构来支持相似性搜索,通常用于机器学习或数据挖掘,侧重于性能、可扩展性和灵活性。向量数据库可以帮助 AI 模型理解和储存长期记忆等问题,以完成复杂的任务,加速应用场景落地。
传统的Mysql或者Redis存储结构化数据,当下非结构化数据呈爆炸式增长,而我们可以通过机器学习模型,将非结构化数据转化为 embedding 向量,随后处理分析这些数据。在此过程中,向量数据库应运而生。向量数据库是一种为了高效存储和索引 AI 模型产生的向量嵌入(embedding)数据而专门设计的数据库。
之前接触到有些关联的数据构建社交网络与知识图谱等,可以利用图数据库进行存储更详细的信息,查询的时候也是通过构建高维(比如1048维)向量去查询的。
VectorDB也是一个比较火的研究方向,有些业务场景也需要定制化构建自己的向量数据库,向量数据库可以为模型提供依赖的基础知识(knowledge)库,有些向量数据库是开源的,方便我们进行直接接入,足够丰富的知识数据库也可以减少模型幻觉的产生。
之前接入业务的搜索召回场景的时候,排查时先查Embdedding是否存在于Embdedding数据库里面,这样查询的速度会很快,如果存在则继续查询图数据库以获取更详细的关系网络数据。
参考https://zhuanlan.zhihu.com/p/660355752
https://zhuanlan.zhihu.com/p/664747312
https://zhuanlan.zhihu.com/p/667534584
https://developer.aliyun.com/article/1298800
https://blog.csdn.net/woohooli/article/details/130742180

八、SFT、RLHF、RAG、MultiAgent

SFT与RLHF

监督微调(SFT)& 强化学习(RLHF)它们都属于大模型的微调部分的概念,可以了解一下Pre-trained,Post-training,finetune的区别 https://zhuanlan.zhihu.com/p/596556459?utm_id=0
从参数规模的角度,大模型的微调分成两条技术路线:
一条是对全量的参数,进行全量的训练,这条路径叫全量微调FFT(Full Fine Tuning)。
一条是只对部分的参数进行训练,这条路径叫PEFT(Parameter-Efficient Fine Tuning)。
FFT的原理,就是用特定的数据,对大模型进行训练,将W变成W,W相比W ,最大的优点就是上述特定数据领域的表现会好很多。
但FFT也会带来一些问题,影响比较大的问题,主要有以下两个:
一个是训练的成本会比较高,因为微调的参数量跟预训练的是一样的多的;
一个是叫灾难性遗忘(Catastrophic Forgetting),用特定训练数据去微调可能会把这个领域的表现变好,但也可能会把原来表现好的别的领域的能力变差。
PEFT主要想解决的问题,就是FFT存在的上述两个问题,PEFT也是目前比较主流的微调方案。
从训练数据的来源、以及训练的方法的角度,大模型的微调有以下几条技术路线:
一个是监督式微调SFT(Supervised Fine Tuning),这个方案主要是用人工标注的数据,用传统机器学习中监督学习的方法,对大模型进行微调;
一个是基于人类反馈的强化学习微调RLHF(Reinforcement Learning with Human Feedback),这个方案的主要特点是把人类的反馈,通过强化学习的方式,引入到对大模型的微调中去,让大模型生成的结果,更加符合人类的一些期望;
还有一个是基于AI反馈的强化学习微调RLAIF(Reinforcement Learning with AI Feedback),这个原理大致跟RLHF类似,但是反馈的来源是AI。这里是想解决反馈系统的效率问题,因为收集人类反馈,相对来说成本会比较高、效率比较低。
不同的分类角度,只是侧重点不一样,对同一个大模型的微调,也不局限于某一个方案,可以多个方案一起。微调的最终目的,是能够在可控成本的前提下,尽可能地提升大模型在特定领域的能力。大模型训练需要 “广”、“齐”、“专”的数据。大模型所需要的数据根据训练的阶段有所不同。以ChatGPT为代表的自然语言大模型为例,其训练过程分为预训练、监督微调(SFT)、基于人类反馈的强化学习(RLHF)三个阶段。
第一阶段预训练所需的语料是各种类型的世界知识,包括网页、书籍、新闻、论文期刊、对话文本、代码等形式,通过大量学习世界知识,构建模型的基础能力,使得模型能够“漂亮地说话”。该阶段的语料特征可以概括为“广“。
第二阶段SFT,通过标注人员设计问答,编写正确答案,将例题投喂给模型,并希望模型在没有见过的任务中"举一反三",提升泛化能力。
第三阶段RLHF,训练目标是让模型的价值观与人类对齐,需要人类对模型的回答进行打分、排序,让模型知道"怎么说更好"。第二和第三阶段的数据质量要求较高,需要来自人类的高质量反馈,语料特征可以概括为“齐“。
如果将模型微调后部署应用于特定的场景形成行业大模型(如工业、金融、医疗等),则需要满足该场景专业需求的特定领域知识做预训练和SFT,需要具备一定专业深度,如行业数据库、专业文档、专业网站等,这部分的语料特征是“专”。
https://baijiahao.baidu.com/s?id=1771636050471546897&wfr=spider&for=pc
https://www.163.com/dy/article/IMJHGR8M0511DDOK.html
https://zhuanlan.zhihu.com/p/650287173?utm_id=0

RAG

检索增强生成(RAG)算是大模型时代的hello world项目了,开源方案基本都是文章切块+向量召回+llm生成,是近期几个大模型应用方向上最难下笔的一个,一方面是因为技术方案仍在快速迭代;另一方面是市场对它的认知还存在一定偏差。目前市场认为:chatBI(让大模型做数据查询和分析)很有用但是有难度;Agent(让大模型自助规划任务实现用户复杂的需求)虽然很酷炫,但是落地的应用少,不够成熟。而对于RAG,企业都很明确它的价值,并且技术实现上,一顿组合拳疯狂输出(文本切割+向量数据库+大模型)就能解决问题,是企业落地的不二之选。并且博主说RAG到最后也会是走向Agent。
RAG最直接的优势就是能够让大模型利用自身的逻辑推导能力,去理解企业私有数据,实现问答能力的拓展。但是如果给大模型喂企业私有数据,做模型微调,也能实现同样的效果,为什么还要用RAG呢,还要看场景:第一:私有数据存在一定频率的动态更新的;第二:需要给出引用原文的;第三:硬件资源(GPU)不是太充足的(即使用RAG也需要微调,但一次微调处处可用,远比每个企业私有库微调一个模型成本低的多);这些场景下,用RAG更合适一些。
大模型存在知识的局限性、幻觉、安全性的问题,RAG是一个很好的解决方案。简单来讲,RAG就是通过检索获取相关的知识并将其融入Prompt,让大模型能够参考相应的知识从而给出合理回答。因此,可以将RAG的核心理解为“检索+生成”,前者主要是利用向量数据库的高效存储和检索能力,召回目标知识;后者则是利用大模型和Prompt工程,将召回的知识合理利用,生成目标答案。所以完整的RAG应用流程主要包含两个阶段:
数据准备阶段:数据提取——>文本分割——>向量化(embedding)——>数据入库
应用阶段:用户提问——>数据检索(召回)——>注入Prompt——>LLM生成答案
LLM大模型工程入门级知识初探_第7张图片
大模型优化选择RAG还是微调。RAG训练成本低于微调,但是对特定需求可能不是很准确。
如果我们需要倾向于获取外部知识并重视透明度,RAG 是我们的首选。另一方面,如果我们使用稳定的标记数据并旨在使模型更接近特定需求,那么微调是更好的选择。
https://blog.csdn.net/qq_41929396/article/details/132689632

参考下面这些博主的链接:https://www.zhihu.com/question/625481187/answer/3279041129
https://baijiahao.baidu.com/s?id=1777552477953877304&wfr=spider&for=pc
https://mp.weixin.qq.com/s?__biz=MzkxNjYxMjUwMA==&mid=2247484519&idx=1&sn=55a9fa5107d3b69a019db36703b86538&chksm=c14c709cf63bf98a615255cb55041338eaaa024066f721c9c81456c99eaf8f423ae27a56fa8a&token=1160261652&lang=zh_CN#rd

MultiAgent

从Function Calling到Agent
2023年6月13号,openAI宣布除了降价、扩展Prompt长度之外,另一个更新就是:增加Function Calling能力。只需要将待调用的函数描述(功能、参数等描述)传给ChatGPT,它就可以自动实现函数的选择、参数的解析。问题内容命中了哪个函数会影响最终输出。
随着函数的爆炸式增长、随着一个请求的复杂度提升、随着对话轮次的增多,我们需要解决的问题也许不属于Function Calling,而是Agent 。
大模型除了对话,还有一个应用场景就是Agent,并且OpenAI、微软押注,大模型应用的尽头是AI Agent。Agent = 大型模型 + 记忆 + 主动规划 + 工具使用
Agent 由于更加强调自主的发现问题、确定目标、构想方案、选择方案、执行方案、检查更新的特性,因此可以被认为是一类拥有“自主智能的实体”,而被广泛称之为智能体。
基于 Prompt 的与大模型互动的方式更像是静态的“输入-输出”,而 AI Agent 为大模型提供了一个进行“动态决策”的框架,使得大模型开始有能力处理任务更加复杂化,情境更加多样化的决策,为大模型从“语言”迈向“真实世界”提供了一个坚实的基础。
以AutoGPT为代表,Agent能根据用户的语言请求进行任务拆解规划,从而多轮次调用不同的工具,来实现最终的目标。
大模型充当一个“核心协调器”的作用,向上对接人类的以 Prompt 为形式的输入,向下则以网络搜索,Python 脚本等为媒介沟通互联网或自动化实验仪器等工具,从而可以自主完成从实验设计、实验规划到执行复杂的科学实验等的一整套流程。基于大模型的 AI Agent 是一套面向 LLMs 的“新的管理方法”,类似“思维链”等技术,大模型 Agent 通过一整套流程化,机制化的方式促使大模型模拟人类智能的决策过程,以代替人类完成一些具体的任务。
参考地址 https://baijiahao.baidu.com/s?id=1781584417814332210&wfr=spider&for=pc
https://baijiahao.baidu.com/s?id=1776841141621211217&wfr=spider&for=pc
Multi-Agent系统(MAS)是多个Agent组成的集合,其多个Agent成员之间相互协调,相互服务,共同完成一个任务。它的目标是将大而复杂的系统建设成小的、彼此互相通信和协调的,易于管理的系统。各Agent成员之间的活动是自治独立的,其自身的目标和行为不受其它Agent成员的限制,它们通过竞争和磋商等手段协商和解决相互之间的矛盾和冲突。MAS主要研究目的是通过多个Agent所组成的交互式团体来求解超出Agent个体能力的大规模复杂问题。
Multi-Agent(多智能体系统) 是指由多个自主个体组成的群体系统,其目标是通过个体间的相互信息通信和交互作用。这个概念从其他地方引入LLM领域,一般地,Multi-Agent由一系列相互作用的Agent及其相应的组织规则和信息交互协议构成,内部的各个Agent之间通过相互通信、合作、竞争等方式,完成单个Agent不能完成的,大量而又复杂的工作,是“系统的系统”。
随着LLM的涌现,以LLM为中枢构建的Agent系统在近期受到了广泛的关注。Agent系统旨在利用LLM的归纳推理能力,通过为不同的Agent分配角色与任务信息,并配备相应的工具插件,从而完成复杂的任务。“Tool Learning”的概念,将之前的各种垂直领域的智能体放置于一个统一的框架之下,其中大模型作为“控制器”,用于完成针对人类的“意图识别”,针对可选工具的“组织规划”,并且引入了“感知器”向大模型报告“执行结果”,当出现错误时指导大模型完成“自主纠错”。
目前更常见的框架大多聚焦于single-agent的场景。single-agent的核心在于LLM与工具的配合。LLM通过理解用户的任务,推理出需要调用的工具,并基于调用结果给用户反馈。在完成任务的过程中,Agent可能与用户有多轮交互。下图即展示了一个主流的Agent执行流程。
与此同时,也有越来越多的Agent框架开始聚焦于multi-agent场景。为了完成任务,multi-agent会为不同的Agent赋予不同的角色定位,通过Agent之间的协同合作来完成复杂的任务。而在完成任务的过程中,相比于single-agent来说,与用户的交互会更少一些。
LLM大模型工程入门级知识初探_第8张图片
参考魔搭社区 https://zhuanlan.zhihu.com/p/660045220
参考 https://blog.csdn.net/wireless_com/article/details/133849992
参考这位博主链接:https://zhuanlan.zhihu.com/p/665379116

九、插件(plugin)模式/代理(agent)模式

记得之前在面试通义大模型团队的时候,达摩院的三面面试官老哥问了一个问题,你觉得工程上插件(plugin)模式/代理(agent)模式有什么区别以及它们各自的适用场景是什么。我当时其实是不理解这两个概念的。现在想着顺带着反思学习一下。有时候确实会在面试的时候了解到很多新东西 ,当然真正的大佬是感受不到春招和秋招难度的,也不需要很多面试,只有水平不上不下的那种躺不平+不甘心的菜鸡才会发小作文回味一下(很嫌弃)。
软件架构的10个常见模式:https://zhuanlan.zhihu.com/p/62602256
架构模式是针对特定软件架构场景常见问题的通用、可重用解决方案。架构模式类似于软件设计模式,但范围更广。 GPT对于工程上的插件(plugin)模式/代理(agent)模式解释是这样的:
LLM大模型工程入门级知识初探_第9张图片
其他资料参考 https://blog.csdn.net/amuseme_lu/article/details/134819096

十、其他

大模型的演化过程,发展史:https://zhuanlan.zhihu.com/p/653169604
不同的GPT版本都经历了什么变化:https://www.zhihu.com/question/618248545?utm_id=0
https://cloud.tencent.com/developer/article/2244774
https://baijiahao.baidu.com/s?id=1777087208998184071&wfr=spider&for=pc
LLM大模型工程入门级知识初探_第10张图片
2023年北京时间11月7日,OpenAI首届开发者大会(春晚)上奥特曼提出的GPT-4 Turbo模型里面包括了Assistant,顺便分析一下Function Call和Assistant的区别,Assistant像一个机器人做代理,FunctionCall更偏向通用函数工具调用接口。
LLM大模型工程入门级知识初探_第11张图片

DPO、PPO
近端策略优化(PPO)与直接偏好优化(DPO) , 两者都属于强化学习算法,RLHF阶段可以用到,具体参考下面链接
https://zhuanlan.zhihu.com/p/614115887?utm_id=0
https://zhuanlan.zhihu.com/p/655421669
https://www.163.com/dy/article/IK65NK0M0511831M.html
https://zhuanlan.zhihu.com/p/662753985

数据飞轮:
数据飞轮,是今年大模型带火的一个典型词汇,通过客户在应用程序中输入的提示词这样的数据反馈,使大模型快速迭代。今年初,数据飞轮也曾一度被视为 OpenAI 最重要的先发优势。
https://baijiahao.baidu.com/s?id=1777565035295068044&wfr=spider&for=pc
https://baijiahao.baidu.com/s?id=1777470507609172599&wfr=spider&for=pc

推理加速:
模型优化技术的相关知识,如量化、剪枝、知识蒸馏等 并行化&分布式也可以
硬件上模型推理依靠算力, 经常听到 X机X卡60B(B应该是参数量数据量的意思)这样的概念
参考https://www.zhihu.com/question/591646269/answer/3313928970

Pipeline & Workflow
Pipeline往往具有明确的输入输出,关注的是数据的流通;而Workflow则相对边界模糊,关注的是人的协作。Workflow 意味着有多个阶段, 通常部分阶段需要人工去进行一些处理, 可能是分支状或者网格状的一个迭代过程.Pipeline 是一个一条路走到黑的自动执行过程, 线状的流程.
https://www.163.com/dy/article/FE727GCP0516BJGJ.html
https://www.jianshu.com/p/71a0efa741e6

LLMOps
术语 LLMOps 代表大型语言模型运维。它的简短定义是 LLMOps 是 LLM 的 MLOps。这意味着 LLMOps 是一组工具和最佳实践,用于管理 LLM 支持的应用程序的生命周期,包括开发、部署和维护。
当我们说“LLMOps 是 LLM 的 MLOps”时,我们需要先定义术语 LLM 和 MLOps:
LLM(大型语言模型)是可以生成人类语言输出的深度学习模型(因此称为语言模型)。这些模型有数十亿个参数,并接受了数十亿个单词的训练(因此被称为大型语言模型)。
MLOps(机器学习运维)是一组工具和最佳实践,用于管理 ML 驱动的应用程序的生命周期。
因此,LLMOps 是一组工具和最佳实践,用于管理 LLM 支持的应用程序的生命周期。它可以被视为 MLOps 的子类别,因为 LLM 也是 ML 模型。
参考https://zhuanlan.zhihu.com/p/632026876
https://zhuanlan.zhihu.com/p/631717651


总结

机缘巧合下自己的接触了大模型相关的研发工作,顺便调研总结一下大模型工程方向可能涉及到的行业热点方向与基础入门知识,还有一些的专业词汇的解释,有时候自己主动探索某个方向是一种乐趣,感兴趣就都可以了解一下。

你可能感兴趣的:(oneapi,gpt)