7
基于大模型的应用开发方式介绍
大模型开发/技术交流
2023.10.248052看过
本文归纳了基于大模型能力开发应用的3种主流方式,对大模型应用开发的过程有基本了解,开发者可以根据自己的情况按需选用适合自己能力和业务场景的开发方式。
一. 基于API应用开发模式
通过该种方式,开发者可以快速调用大模型的API,获取大模型能力,用户基于百度智能云千帆大模型平台可快速调用包括文心大模型在内的各种大模型API,针对第三方大模型,平台还针对性地进行了中文增强、性能增强、上下文增强等优化。以下是基于该种开发方式的介绍:
开发基本步骤:
-
【AI端】调用API接口(几行代码/Python语言),可通过Prompt设计引入相关知识(无需修改模型的结构或参数)
-
【前端】写web端/移动端界面、交互(html/css/js/gradio/streamlit)
-
【后端】整体任务逻辑/队列、集成和调用AI端能力、返回AI端结果(C++/JAVA/PHP/GO/C#/Python...)
所需能力:无需有AI算法能力,需有前后端开发和工程落地能力
局限性:对垂直领域场景的定制能力弱
总结:AI部分难度较小,无需AI专业知识,主要开发工作在前后端和工程化落地。
二. 基于大模型的微调应用开发模式
广泛性预训练+针对性微调已经成为了当前大模型训练与落地使用的通用方式,按照微调方式,又将这种模式细分为以下2种方式:
传统Fine-tuning
使用开源预训练模型或调用微调API接口,用下游任务的高质量数据重新训练并更新模型参数,使其适用于下游应用(需要预训练模型根据下游任务调整)
主要方式:Instruct微调、LoRa微调
开发基本步骤:
-
【AI端】加载已经预训练好的大模型,准备和上传训练数据(与目标任务相关的数据,符合fine-tuning文件格式),训练新的Fine-tuning模型,也可以加入一些分类层等;模型封装和部署:高性能/高并发/高可用
-
【数据】数据获取,仿照给定数据示例构建新的数据集(字段:Prompt-Completion)
-
-
【前端】写web端/移动端界面、交互逻辑(html/css/js/gradio/streamlit)
-
【后端】整体任务逻辑/队列、集成和调用AI端能力、返回AI端结果(C++/JAVA/PHP/GO/C#/Python...)
所需能力:深度学习算法原理、跨模态数据处理、模型训练、模型部署/弹性部署;前后端开发和工程落地
优势:可根据下游任务数据做定制化程度较高的产品/服务
局限性:超大规模模型finetune消耗资源较大(训练和推理部署);数据处理工程量较大,数据安全性有考验。
总结:
-
AI部分难度较大,需懂深度学习原理,会数据处理(跨模态数据融合),会训练模型;算力资源消耗大。
-
难点主要在于数据工程(数据采集、清洗、对齐)和训练推理资源。
-
随着模型规模增大,效果提升逐渐饱和。
2.Prompt-tuning
以特定的prompt模板将下游任务的数据转成自然语言形式,用指令和答案的数据训练(给一些例子来唤醒模型)充分挖掘预训练模型本身的能力,让上游的预训练模型在尽量不需要标注数据的情况下比较好的完成下游的任务(调整下游任务以适应预训练模型)
主要方式:In-Context Learning、Instruction-tuning、Chain-of-Thought
基本步骤:
-
【AI端】设计预训练语言模型的任务、设计输入模板样式(Prompt Engineering)、设计label 样式及模型的输出映射到label的方式(Answer Engineering),prompt-completion-label;
-
【数据】标签数据准备、Verbalizer准备、prompt模板设定
-
-
【前端】写web端/移动端界面、交互逻辑
-
【后端】整体任务逻辑/队列、集成和调用AI端能力、返回AI端结果
所需能力:Prompt engineering相关技巧、前后端开发和工程落地
优势:所需训练数据相比finetuning数量较少,只对Prompt部分的参数进行训练,同时保证整个预训练模型的参数固定不变,随着模型规模增大,性能提升基本呈线性增长(仅需0.01%的微调参数量)
局限性:定制化效果有限,达到企业级应用的定制化程度需在Prompt计算/生成方面做较多尝试。
总结:无需数据标注,难点在于Prompt模板设计(人工设计模板/自动学习模板),需要根据下游任务和预训练模型的特性来选择合适的模板,微调消耗的存储和运算资源相比传统finetune有所降低。
三. 基于大模型API或大模型微调+插件开发模式
基本步骤:
-
【AI端】调用大模型API或微调大模型
-
【前端】写web端/移动端界面、交互逻辑
-
【后端】整体任务逻辑/队列(包含插件的输入输出)、集成和调用AI端能力、返回AI端结果
-
以向量知识库embedding流程为例:将垂直行业的领域知识向量化并存入向量数据库——用户提问——用户问题向量化——查询向量数据库,得到TopN条匹配知识——构建Prompt,调用 API——返回回答.
所需能力:AI端能力需求较弱,对任务流程拆解的工程化思考要求较高(节点/队列流程设计、弹性部署等)
总结:AI部分难度较小,难点在于整体任务流程的工程化思考和落地。
附录:
评论