心法利器[132] | 大模型系统性能优化trick
心法利器
本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
2023年新的文章合集已经发布,获取方式看这里:又添十万字-CS的陋室2023年文章合集来袭,更有历史文章合集,欢迎下载。
往期回顾
心法利器[127] | 24年算法思考-特征工程和经典深度学习
心法利器[128] | 2024年算法小结-个人成长-打开思路-生日
心法利器[129] | deepseek-R1自测效果分析和选择建议
心法利器[130] | RAG效果调优经验
心法利器[131] | 盘点踩过大模型多轮对话的坑
前沿重器[48-54] 合集:四万字聊搜索系统
最近做了一些大模型系统的设计,让大模型在多个场景进行了应用,当然也发现了不少问题,今天给大家分享一些性能优化的经验。
注意,我这里专门提到了trick,而且是大模型系统,本文不会聊通过模型架构内部的性能优化,包括量化之类的方式来做,更多是通过系统调度、小模型替代之类的方式来做。
实时转非实时
内容聚合定制
大模型降级
大模型工作并行化
后记
实时转非实时
比较直接的大模型使用,基本都是在用户的请求进来后,就直接开始请求大模型来开始跑,这对高并发的场景而言压力可谓是巨大,尤其是一些几十ms的高耗时常见,毕竟一般的大模型正常跑能压缩到秒级就已经非常极限了,此时一个比较基本的思路是,把一些工作可以提前做提前做,而不要等到用户请求的时候再来做。
举一个例子,推荐系统场景,如果等用户去刷新页面,才从头开始去做用户embedding、所有的内容理解,显然并不现实,然而,如果把工作拆解,例如一些比较固定的用户理解工作,物料的理解工作,放到非实时完成,实时只需要把embedding拿出来做物料召回、排序啥的,此时在线的耗时就会大大降低,离线我们有充足的时间去做计算,这块的技术在大模型有之前就已经有比较完善的探索研究工作,毕竟推荐系统发展已经很久,在海量数据的压力下,离线高并发并行处理,类似的大数据工作早有经验,大模型相关的流程也同样可以放在其中。
这一个例子继续展开,在上一篇文章里(前沿重器[59] | 淘宝LLM落地电商推荐实践启示),对商品物料的理解,一些字段内容的结构化,这些内容对实时性要求并不是很高,单独安排并发和资源来跑即可,跑完再来上线。
此处值得注意的是,离线跑只代表可以暂缓,但并不代表可以无限期地等待,需要确认离线这个方式下,在一个周期内是否能跑完,例如某个大模型任务是T+1,即次日能出就行,那就要确认,目前的大模型资源下,跑一天的内容(例如大概1万条),能不能跑完,如果是不能跑完,则要考虑增加并行调度的资源,否则日复一日只能越来越多,堆积起来跑不完。
实时转非实时是一种整体功能的迁移,而下面说的这个方式则是强行把问题压缩后的提前计算。
内容聚合定制
我们可以通过把一些高频出现的内容聚合成比较简单通用的格式,提前通过大模型把问题给回复了,在线实时推理的是可以看是否有命中这些聚合的内容,此时能大程度地解决这些问题。
举个例子,在一些情况,对在线比较高频的问题,按照28法则,很大部分的请求都是集中在少数几个问题里,此时我们可以考虑把问题进行汇总整合,提前回答好,进行缓存来完成,例如一些高频的意图、问法,甚至是一些标签。
简单地说一条完整的思路吧,把在线的问法拿一大批下来,不去重直接向量化(例如用bge啥的)后聚类(粗暴地,不聚类也行,直接统计次数拿TOPN),经过一些人工的筛查后得到一批高频的问题,这些高频的问题提前跑,跑完存数据库里放到在线,在线在用到大模型之前,先做一次检索(可以是向量检索,也可以是k-v的精准匹配等,不过尽量简化会更好)直接就把结果查出来了,前后不到50ms就能轻松解决一个高频问题,快的甚至10ms以内就解决,结合在线可能80%的问题可能都集中在这类型的需求上,在线会有80%甚至更多的收益。
这个思路某种程度其实也很像早年类似搜索产品爱用的cache功能,对短期甚至激进地每天的搜索结果提前存入数据库,次日的所有query在进行正式搜索之前现在库里查查有没有类似的,这样能大幅降低搜素全流程的成本,类似百度应该有类似的功能,现在百度首条大模型的生成,应该也有用到这个功能,有些搜索词下的AI生成内容是直出的,大概率就是缓存得到的。
大模型降级
我们清楚,大模型能做到很多事,但不代表所有事都非大模型不可,在agent里我们可能可以很轻易地用大模型把一些流程给串起来完成,这种方式虽然对干活的人是很爽的,但是在用户的等待时间、大模型运转资源上,都无疑是非常难受的,因此在用大模型完成baseline后,有些不必要的任务可以降级为一些简单的模型甚至规则,用以提升响应效率,降低大模型成本。
继续举例,例如agent里有做转发的路由,或者有些要做语义理解、意图识别的工作,在早期数据比较匮乏的时候,用大模型确实是一个很快的选择,但在有一定时间和数据积累后,用小模型同样能得到非常好的效果,甚至在效果上还可能有提升,此时弄个小模型来解决这类型问题绝对非常有用。
大模型工作并行化
完成一个任务可能需要不止一次的大模型请求,但如果没有前后依赖,则可以在并发允许的前提下,尽量考虑并行处理,从而降低在线推理的时间。
举例,对一个RAG任务,可能用到大模型的有意图识别、实体抽取、大模型总结这3个步骤,意图识别和实体抽取如果两者互不依赖,则可以大胆地并行发请求以加快整个推理的速度,而最终的大模型总结这事,因为依赖检索结果而无法并行,那也没有办法,但时间上终究从3次请求转为2次,是有收益的。
后记
我们可能会因为很多原因而去使用大模型,最近因为热点的尝试、老板客户的要求、技术实践的便捷性、效果上限的突破等,但终究绕不开一个问题,系统肯定会朝着越来越好的方向去迭代,更好的体验、更低的成本、更快的速度、更强的产品力等等,我的各种文章里一直有强调,大模型不是唯一的方法,我们要打开思路去考虑更多的方式,别没了大模型就没招了。
而且,最近也发现有这样的迹象,大模型热点过去后,用户客户都会开始留意到大模型的缺点,对大模型这个事本身不那么追求,因为这些用户和客户最终目标是追求更好的体验,而非用没用大模型,他们只是知道用了大模型会效果好而已,所以我们总要留后招,能选择更好的方式解决更多的问题,甚至能把问题解决的更彻底,我们可以选择大模型,但不是只有大模型。
再者,我们也要突破思维定式,不是只有在线的推理才叫做“用大模型”,离线的挖掘、提前的计算、非实时的推理,都可以算是应用,在目前的热点下用户所追求的大模型,本质只是“知道大模型用的效果好”而已,与其说是对技术的认可,更多是品牌效应,毕竟扎心的,也不是任何场景、任何事、任何人用大模型效果就会突然变好。

相关文章:
心法利器[132] | 大模型系统性能优化trick
心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2023年新的文章合集已经发布,获取方式看这里:又添十万字-CS的陋室2023年文章合集来袭,更…...
Android第六次面试总结(Java设计模式篇一)
单例模式属于创建型设计模式,它保证一个类仅有一个实例,并且提供一个全局访问点来获取该实例。下面为你详细阐述单例模式的好处和坏处。 好处 资源优化:单例模式能保证一个类只有一个实例,这对于那些创建和销毁开销大的对象&…...
stm第九天433M无线遥控灯
1.433M无线模块工作原理 数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~85度之间变化时,频飘仅为3ppm.接收到信号,接收模块对应针脚输出高电平,有DO D1 D2 D3&#…...
六十天前端强化训练之第三十天之深入解析Vue3电商项目:TechStore全栈实践(文结尾附有源代码)
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 深入解析Vue3电商项目:TechStore全栈实践 一、项目架构设计 二、核心功能实现 三、组合式API深度实践 四、性能优化实践 五、项目扩展方向 六、开发经验总结…...
类与对象(中)(详解)
【本节目标】 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 赋值运算符重载 6. const成员函数 7. 取地址及const取地址操作符重载 1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗&…...
Spring Boot框架中常用注解
以下是Spring Boot框架中常用注解的详细说明,包括名称、用途、用法、使用位置及扩展示例,按功能模块分类整理: 一、核心启动与配置注解 1. SpringBootApplication 用途:主启动类注解,整合了 Configuration、EnableAu…...
ResNet与注意力机制:深度学习中的强强联合
引言 在深度学习领域,卷积神经网络(CNN)一直是图像处理任务的主流架构。然而,随着网络深度的增加,梯度消失和梯度爆炸问题逐渐显现,限制了网络的性能。为了解决这一问题,ResNet(残差…...
notify_one() 会阻塞吗?
notify_one() 不会阻塞。它是用于唤醒一个等待中的线程,通常是通过条件变量(std::condition_variable)来使用的。调用 notify_one() 会使一个处于等待状态的线程被唤醒并继续执行,但它本身并不会阻塞。 当调用 notify_one() 时&a…...
Flutter项目之页面实现以及路由fluro
目录: 1、项目代码结构2、页面编写以及路由配置main.dart(入口文件)page_content.dartindex.dartapplication.dartpubspec.yamllogin.dartdio_http.dart 3、Fluro路由routes.dartnot_found_page.dart(路由优化,找不到页面时展示此页面) 4、注册页面 1、项…...
《Python实战进阶》第31集:特征工程:特征选择与降维技术
第31集:特征工程:特征选择与降维技术 摘要 特征工程是机器学习和数据科学中不可或缺的一环,其核心目标是通过选择重要特征和降低维度来提升模型性能并减少计算复杂度。本集聚焦于特征选择与降维技术,涵盖过滤法、包裹法、嵌入法等…...
大模型在支气管哮喘手术全流程风险预测与治疗方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目标与方法 1.3 研究创新点 二、支气管哮喘概述 2.1 定义与发病机制 2.2 分类与临床表现 2.3 诊断标准与方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用案例分析 3.3 适用于支气管哮喘预…...
C++类与对象的第二个简单的实战练习-3.24笔记
哔哩哔哩C面向对象高级语言程序设计教程(118集全) 实战二 Cube.h #pragma once class Cube { private:double length;double width;double height; public:double area(void);double Volume(void);//bool judgement(double L1, double W1, double H1);…...
react自定义hook
自定义hook: 用来封装复用的逻辑,,自定义hook是以use开头的普通函数,,将组件中可复用的状态逻辑抽取到自定义的hook中,简化组件代码 常见自定义hook例子: 封装一个简单的计数器 import {useS…...
Rk3568驱动开发_设备树点亮LED_10
设备树中添加节点 在设备树文件中添加led节点,添加完后需要重新编译内核,因为单独编译这个设备树文件生成的dtb文件目前不能直接做替换,所以要编译内核将编译好的boot.img文件烧录到设备里,boot.img里包含新添加的设备树节点&…...
大数据学习(82)-数仓详解
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
Unity学习之Shader(Phong与Blinn-Phong)
三、Lesson3 1、关键名称 向量 • nDir:法线方向,点乘操作时简称n; • lDir:光照方向,点乘操作时简称l; • vDir:观察方向,点乘操作时简称v; • rDir:光反…...
uniapp笔记-swiper组件实现轮播图
思路 主要就是参考 swiper | uni-app官网 实现轮播图。 实例 新建一个banner.vue通用组件。 代码如下: <template><view>轮播图</view> </template><script> </script><style> </style> 随后在index.vue中导…...
【C++ 继承】—— 青花分水、和而不同,继承中的“明明德”与“止于至善”
欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创…...
FPGA_YOLO(二)
上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…...
蓝桥杯学习-14子集枚举,二进制枚举
子集枚举 一、回溯3-子集枚举(递归实现指数型枚举) 一旦涉及选与不选,删和不删,留和不留-->两种状态-->就要想到子集枚举例题1–递归实现指数型枚举19685 其实看不懂这个题目,好奇怪的题目。根据老师的解析来写…...
人工智能时代大学教育范式重构:基于AI编程思维的能力培养路径研究
人工智能技术的快速发展正在重塑高等教育的内容与方法。本文以AI编程教育为切入点,通过文献分析与案例研究,探讨AI时代大学教育的核心能力需求与教学范式转型路径。研究发现,AI编程中蕴含的系统性思维训练、项目架构能力和元认知能力培养机制…...
<数据集>轨道异物识别数据集<目标检测>
数据集下载链接:https://download.csdn.net/download/qq_53332949/90527370 数据集格式:VOCYOLO格式 图片数量:1659张 标注数量(xml文件个数):1659 标注数量(txt文件个数):1659 标注类别数:6 标注类别…...
结构型——享元模式
享元模式 享元模式的核心思想是通过共享技术减少大量细粒度对象的创建,降低内存占用并提升性能。换句话说,它通过分离对象的内部状态(可共享的固有属性)和外部状态(随场景变化的属性)实现对象复用。 特点…...
淘宝API关键词接口详解(实战案例)
以下为您详解淘宝API关键词接口的调用方法及实战案例: 一、接口定义与核心功能 淘宝关键词API是开放平台提供的标准化数据服务接口,允许开发者通过关键词检索商品全维度信息。其核心功能包括: 精准检索:支持商品标题、属性、类…...
Pyecharts功能详解与实战示例
一、Pyecharts简介 Pyecharts是一个基于Python的开源数据可视化库,它基于百度的Echarts库,提供了丰富的图表类型和强大的交互功能。通过Pyecharts,你可以轻松创建各种精美的图表,如折线图、柱状图、饼图、散点图、地图等…...
传统金融和分布式金融
文章目录 传统金融和分布式金融一、传统金融机构的核心问题深度剖析1. 支付与清算系统的结构性缺陷2. 金融排斥(Financial Exclusion)的根源3. 中心化风险的爆发与传导 二、DeFi的技术突破与创新机制1. 支付与清算:区块链的底层重构2. 普惠金…...
EasyUI数据表格中嵌入下拉框
效果 代码 $(function () {// 标记当前正在编辑的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …...
C语言:扫雷
在编程的世界里,扫雷游戏是一个经典的实践项目。它不仅能帮助我们巩固编程知识,还能锻炼逻辑思维和解决问题的能力。今天,就让我们一起用 C 语言来实现这个有趣的游戏,并且通过图文并茂的方式,让每一步都清晰易懂 1. 游…...
操作系统必知的面试题
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
清华大学.智灵动力-《DeepSeek行业应用实践报告》附PPT下载方法
导 读INTRODUCTION 今天分享是由清华大学.智灵动力:《DeepSeek行业应用实践报告》,主要介绍了DeepSeek模型的概述、优势、使用技巧、与其他模型的对比,以及在多个行业中的应用和未来发展趋势。为理解DeepSeek模型的应用和未来发展提供了深入的…...
