0%

大模型应用系列(一)LLM落地常见的技术方案

简要介绍大模型落地的几种方案,包括:提示词工程,RAG,Agent,微调。

一. LLM分类

大模型是指具有大规模参数和复杂计算结构的深度神经网络,ChatGPT对它的定义是: 大模型本质上是一个使用海量数据训练而成的深度神经网络模型,其巨大的数据和参数规模,实现了智能的涌现,展现出类似人类的智能。
大致可以分为两类: GPT(Generation Pre-trained Transformer)和BERT(Bidirectional Encoder Repersentations from Transformers)他们主要有以下不同点:

1. 训练方式

BERT使用双向语言模型进行训练(在推理过程中会用到mask技术,类似填空),GPT采用自回归语言模型进行训练。
可以简单理解为,BERT是双向的,同时考虑单词的左右上下文,BERT同时查看句子中的所有单词。而GPT每次只看到前面单词。

2. 任务目标

BERT的目标是理解句子的是上下文,适合词语级别的任务,如命名实体识别,问答等
GPT的目标是生成连贯的文本,适用于生成式任务

3. 应用场景

BERT主要用于自然语言理解任务,如文本分类,实体识别,语义关系判断等
GPU主要用于文本生成任务

目前比较火的是模型ChatGPT, Qwen, DeepSeek, 是GPT的,介绍BERT是觉得可能舆情那块没准也可以用BERT做分类。

二.LLM训练到应用的基本步骤

阶段 效果 常用技术
预训练 模型获得基本知识,(所有都懂,但都只懂一点点) 无监督训练,(消耗大部分资源), DS的主要创新点也在这里。
微调 通过来自某个领域的标注的高质量数据微调LLM,使LLM提高某方面能力 RLHF(rainforce learning from human feedback, 使用强化学习,人类对LLM的输出进行奖励,以指导LLM的学习。),LoRA微调(将高维的参数空间转化到低秩空间以减少参数量,GPU不够时使用。(我使用的微调方式)
对齐 生成无害,符合人类预期的结果 RLHF
评估 在应用领域上评估模型效果 召回率,准确率等
部署 离线推理(每次都要加载模型参数)或者在线服务(API) vllm, ollama。ollama适用于轻量型应用场景,企业级一般用vllm,我使用vllm部署。模型部署的环境,方式等会影响模型的性能(吞吐量,速度等)
应用开发 下游应用调用上游LLM RAG,Agent等

三. 应用大模型的几种方式

1. 提示词工程

最常用的方式,不需要微调,基座模型都是一样的,使用预训练的基座模型即可,在prompt中描述场景,任务要求,输入,知识,输出格式等,LLM生成对应的输出。
优点: 省事,不需要微调,一个大模型可以像多个应用提供推理服务,只要针对不同应用写不同prompt。
缺点:LLM只看到prompt所展示的知识,并不是真的学会了,比如要让LLM回答一个法律知识,可能得在prompt里输入一整本法律书。目前的多轮回答上下文也只是在prompt中输入前几轮回答的问题和答案。

2. 提示词工程改进:RAG(Retrieval-Augmented Generation 检索增强生成)

RAG=检索+增强+生成
提示词工程可以再prompt中输入回答所需知识,以提高回答质量,但输入过多的知识会造成prompt过长,导致推理速度慢。
输入的知识时一个领域的知识,其中和当前问题相关的可能只有一些,真正起作用的其实只有这部分知识,RAG先构建一个知识库(如通过Nomic-Embed-Text模型等构建文本嵌入数据库),在生成prompt前检索出最相关的知识,结合到prompt中
优点:缩短prompt长度,缓解LLM幻觉。
缺点:依赖检索的准确性

3. 微调

使用LoRA(资源消耗少),全参微调(资源消耗高)对模型进一步微调,使其更适合某个任务
优点:prompt可以更短,不需要输入太多知识,因为微调过程中已经学会了。
缺点:需要资源,微调后的模型一般只适用于一个场景,因为对每个应用都要部署一个模型。需要收集微调数据
LoRA原理: 在原始的PLM(Pre-trained Language Model)旁边增加一个旁路, 该旁路做一个先降维再升维的操作,只需要微调降维后的参数,以此来降低微调的参数量。

4. Agent

Agent是能够模拟独立思考过程,灵活调用各类工具,逐步达成预设目标。大模型Agent由规划、记忆、工具与行动四大关键部分组成,分别负责任务拆解与策略评估、信息存储与回忆、环境感知与决策辅助、以及将思维转化为实际行动。
1.规划

  • 定义:规划是Agent的思维模型,负责拆解复杂任务为可执行的子任务,并评估执行策略。

  • 实现方式:通过大模型提示工程(如ReAct、CoT推理模式)实现,使Agent能够精准拆解任务,分步解决

2.记忆

  • 定义:记忆即信息存储与回忆,包括短期记忆和长期记忆。

  • 实现方式:短期记忆用于存储会话上下文,支持多轮对话;长期记忆则存储用户特征、业务数据等,通常通过向量数据库等技术实现快速存取。

3.工具

  • 定义:工具是Agent感知环境、执行决策的辅助手段,如API调用、插件扩展等。
  • 实现方式:通过接入外部工具(如API、插件)扩展Agent的能力,如ChatPDF解析文档、Midjourney文生图等。
    4.行动
  • 定义:行动是Agent将规划与记忆转化为具体输出的过程,包括与外部环境的互动或工具调用。
  • 实现方式:Agent根据规划与记忆执行具体行动,如智能客服回复、查询天气预报、AI机器人抓起物体等。
5. 部署中的问题
a. 部署过程中所需的显存=加载LLM参数的显存+kv-Cache显存

kv-Cache: LLM推理时自左向右,意味着每次都要计算前面所有单词的注意力分数(每个token都有一个k值和一个v值),LLM每次只预测一个token,预测时根据当前token的query值和之前序列的所有k值和v值进行预测。为了避免重复计算,LLM会缓存每个token的k值和v值,需要的时候直接读取,没有优化时kv-cache是连续的,并且需要提前预留。
正式应用中的部署一般使用vllm,vllm将大模型加载并常驻到显存中,当推理请求到来时,只需将输入加载到显存,因此可以加快推理速度。同时vllm使用了PageAttention优化(类似虚拟缓存中的分页管理),平常的LLM推理会设置max-token,加载时需要预留显存,PageAttention技术可以动态管理kv-cache,并且不需要连续,减少内存碎片。(【论文阅读】Efficient Memory Management for Large Language Model Serving with PagedAttention | CodeRQ)

b. 性能

部署模型的性能影响也是多方面的,比如上云时调度器将该任务调到哪个GPU上,多卡部署时还依赖于GPU之间的连结方式,这是基础设施带来的影响,我们很难决定(合理利用调度策略,欺骗调度器)
主要考虑的是选择的模型大小,max-token,一般模型越大,max-token越大,推理越慢。

如果您读文章后有收获,可以打赏我喝咖啡哦~