FrugalGPT 和降低 LLM 运营成本

原文:towardsdatascience.com/frugalgpt-and-reducing-llm-operating-costs-ff1a6428bf96?source=collection_archive---------10-----------------------#2024-03-27

本博客将详细介绍“FrugalGPT”论文中所见的针对 LLM 驱动应用的节省成本架构。

https://medium.com/@mgunton7?source=post_page---byline--ff1a6428bf96--------------------------------https://towardsdatascience.com/?source=post_page---byline--ff1a6428bf96-------------------------------- Matthew Gunton

·发布于 Towards Data Science ·阅读时间 5 分钟·2024 年 3 月 27 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/283cb60023e21cabbe9362b4ba89a43f.png

图片由作者生成,使用 DALL-E

大型语言模型为计算机科学开辟了一个新的前沿,然而,到了 2024 年,它们的运行成本显著高于计算机科学中几乎所有其他项目。对于寻求降低运营成本的公司来说,这构成了一个严重的问题。论文“FrugalGPT:如何在减少成本并提高性能的同时使用大型语言模型”提出了一个框架,可以在保持质量的同时显著降低运营成本。

如何衡量 LLM 的成本

有多种方法可以确定运行大型语言模型(LLM)的成本(例如电力消耗、计算成本等),然而,如果使用第三方 LLM(即 LLM 即服务),他们通常会根据你使用的 tokens 数量收费。不同的供应商(如 OpenAI、Anthropic、Cohere 等)有不同的 tokens 计数方式,但为了简化起见,我们将成本视为基于 LLM 处理的 tokens 数量。

这个框架最重要的部分是不同模型的成本是不同的。论文的作者巧妙地整理了以下表格,突出了成本的差异,它们之间的差距非常显著。例如,在此表中,AI21 的输出 tokens 成本比 GPT-4 高出一个数量级!

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/eb12d44378e9fee17e9d9640cee8141a.png

表 1 来自论文

作为成本优化的一部分,我们始终需要找到在最小化成本的同时优化答案质量的方法。通常情况下,较高成本的模型往往性能较好,能够提供比低成本模型更高质量的答案。下图展示了这一普遍关系,FrugalGPT 的表现以红色覆盖在上面。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/416314c080ca6deebd5d109f095497cd.png

图 1c 来自论文 对比了各种 LLM 基于 HEADLINES 数据集准确回答问题的频率

利用级联 LLM 最大化质量

通过利用不同模型之间巨大的成本差异,研究人员的 FrugalGPT 系统依赖于 LLM 的级联来为用户提供答案。简单来说,用户查询从最便宜的 LLM 开始,如果答案足够好,就返回该答案。如果答案不够好,则查询会传递给下一个最便宜的 LLM。

研究人员使用了以下逻辑:如果一个较便宜的模型回答问题错误,那么较昂贵的模型很可能会给出正确的答案。因此,为了最小化成本,链条按从最便宜到最昂贵的顺序排列,假设随着价格的上涨,质量也会提高。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5d3fd2f3afb1b481df87d7025f3badc6.png

图 2e 来自论文 展示了 LLM 级联的示意图

这种设置依赖于可靠地判断一个答案是否足够好。为了解决这个问题,作者创建了一个 DistilBERT 模型,它会对问题和答案进行评分。由于 DistilBERT 模型的体积比序列中的其他模型要小得多,因此与其他模型相比,运行它的成本几乎可以忽略不计。

比仅仅查询最好的 LLM 获得更好的平均质量

人们自然会问,如果质量最重要,为什么不直接查询最好的 LLM,并寻求降低运行最佳 LLM 的成本的方法?

当这篇论文发布时,GPT-4 是他们找到的最好的 LLM,然而,GPT-4 并不总是给出比 FrugalGPT 系统更好的答案!(细心的读者会注意到,这是之前成本与性能图表的一部分) 作者推测,就像最有能力的人不总是给出正确的答案一样,最复杂的模型也未必如此。因此,通过让答案经过 DistilBERT 的过滤过程,你可以去除任何不合格的答案,从而提高获得好答案的几率。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/72f31eda14c9ca1d134d4abc6e7086e4.png

图 5a 来自论文 显示了 FrugalGPT 超越 GPT-4 的实例

因此,这个系统不仅能降低成本,还能提高质量,比单纯使用最好的 LLM 更有效!

向前迈进,节约成本

本文的结果令人深思。对我来说,它引发了关于如何在不进一步投资于模型优化的情况下,继续实现成本节约的问题。

其中一种可能性是将所有模型的答案缓存到向量数据库中,然后进行相似性搜索,确定缓存中的答案是否适用,再开始 LLM 链的操作。通过用相对较便宜的查询和相似性操作替代昂贵的 LLM 操作,这将显著降低成本。

此外,这也让人思考是否过时的模型依然值得进行成本优化,因为如果你能降低每个 token 的成本,它们仍然可以在 LLM 链中创造价值。类似地,关键问题在于,何时通过将新的 LLM 加入链条中会出现收益递减的现象。

后续研究问题

随着世界上大语言模型的增加,我们越来越多地构建使用这些模型的系统,我们将希望找到更具成本效益的运行方式。本文为未来的开发者提供了一个强有力的框架,这让我思考这个框架能够走多远。

在我看来,这个框架非常适用于那些没有基于不同用户提供不同答案的一般性查询,例如辅导型大语言模型(LLM)。然而,对于那些答案根据用户不同而有所不同的应用场景,比如作为客服代理的大语言模型,评分系统必须能够识别 LLM 与谁进行对话。

为用户特定交互节省成本的框架将是未来的重要课题。

[1] Chen, L., et al., FrugalGPT: 如何在降低成本并提高性能的同时使用大语言模型 (2023), arXiv

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性稳定性。此外,文档还列举了大量相关的科研方向技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
先展示下效果 https://pan.quark.cn/s/a4b39357ea24 本项目是本人参加BAT等其他公司电话、现场面试之后总结出来的针对Java面试的知识点或真题,每个点或题目都是在面试中被问过的。 除开知识点,一定要准备好以下套路: 个人介绍,需要准备一个1分钟的介绍,包括学习经历、工作经历、项目经历、个人优势、一句话总结。 一定要自己背得滚瓜烂熟,张口就来 抽象概念,当面试官问你是如何理解多线程的时候,你要知道从定义、来源、实现、问题、优化、应用方面系统性地回答 项目强化,至少与知识点的比例是五五开,所以必须针对简历中的两个以上的项目,形成包括【架构实现细节】,【正常流程异常流程的处理】,【难点+坑+复盘优化】三位一体的组合拳 压力练习,面试的时候难免紧张,可能会严重影响发挥,通过平时多找机会参与交流分享,或找人做压力面试来改善 表达练习,表达能力非常影响在面试中的表现,能否简练地将答案告诉面试官,可以通过给自己讲解的方式刻意练习 重点针对,面试官会针对简历提问,所以请针对简历上写的所有技术点进行重点准备 Java基础 JVM原理 集合 多线程 IO 问题排查 Web框架、数据库 Spring MySQL Redis 通用基础 操作系统 网络通信协议 排序算法 常用设计模式 从URL到看到网页的过程 分布式 CAP理论 锁 事务 消息队列 协调器 ID生成方式 一致性hash 限流 微服务 微服务介绍 服务发现 API网关 服务容错保护 服务配置中心 算法 数组-快速排序-第k大个数 数组-对撞指针-最大蓄水 数组-滑动窗口-最小连续子数组 数组-归并排序-合并有序数组 数组-顺时针打印矩形 数组-24点游戏 链表-链表反转-链表相加 链表-...
在大语言模型(LLM)推理时,使用 KV Cache 可加速计算,避免重复计算已有 token,对其进行访存优化能有效降低推理成本。以下是一些可能的方法: ### 利用 KV Cache 减少重复计算 在 LLM 推理时,KV Cache 可避免重复计算已有的 token,显著提升推理效率,从而降低推理成本。例如在推理过程中,对于已经计算过的键(Key)值(Value)进行缓存,后续推理时直接使用缓存结果,无需再次计算,减少了计算资源的消耗时间成本 [^1]。 ### 采用 KV Cache 压缩方法 如 MLA 方法,其核心是对 keys values 进行低秩联合压缩后,通过线性变换升维来增强模型性能。这种降维 - 升维的操作可以在保证一定模型性能的前提下,减少 KV Cache 的存储空间,降低访存成本。因为较小的 KV Cache 大小意味着在访存时需要传输的数据量减少,从而降低了访存开销,进而降低推理成本 [^2]。 ### 权衡 Latency Throughput 在实际的在线流式应用等场景中,需要在 Latency Throughput 之间进行权衡。提高 Throughput 可以提高单个 GPU 承担的并发数,而 KV - Cache 大小会导致并发能力受限。通过优化 KV Cache 访存,使得在合理的 Latency 范围内提高 Throughput,增加单个 GPU 处理的并发请求数量,从而降低推理成本 [^3]。 ```python # 这里只是一个简单的伪代码示例,展示 KV Cache 的基本使用思路 # 假设存在一个推理函数 def inference(model, input_tokens, kv_cache=None): # 如果有缓存,使用缓存进行推理 if kv_cache is not None: output, new_kv_cache = model(input_tokens, kv_cache) else: output, new_kv_cache = model(input_tokens) return output, new_kv_cache # 模拟推理过程 input_sequence = [1, 2, 3, 4, 5] cache = None for token in input_sequence: output, cache = inference(model, [token], cache) print(output) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值