基于 LLM 的算法设计与分析

24年7月来自阿里的论文“On the Design and Analysis of LLM-Based Algorithms”。

从具有提示工程的基本 LLM 调用到复杂的 LLM 驱动的智体系统和复合 AI 系统,包含一个或多个大语言模型 (LLM) 调用作为子程序并严重依赖 LLM 功能的一类算法,虽然已经取得了显著的经验成功,但设计和优化主要依赖于启发式和反复试验,这主要是由于缺乏对这些算法的正式和分析研究。为此,首先确定基于 LLM 算法的计算图表示、任务分解的设计原则和一些关键抽象,这有助于对基于 LLM 算法的准确性和效率进行正式分析,尽管 LLM 具有黑箱性质。进一步考虑并行分解作为案例研究,为该模式的四个具体示例提供广泛的分析和实证研究。

基于 LLM 的算法与神经符号编程 [CEP+21、GK23] 和学习增强算法 [MV22、LM22] 类似,结合了 LLM 和传统算法的优点。基于 LLM 的算法利用人类的智能和算法问题解决的知识进行设计,可以表现出更好的可控性和可解释性、更强大的性能(更少依赖于精细的提示或广泛的反复试验),以及远远超出直接提示 LLM 解决方案所能实现的能力。

基于 LLM 算法的快速发展自然引发了一个问题:是否有可能为基于 LLM 算法提供任何正式的分析或保证?由于 LLM 的黑箱性质,这乍一看似乎是一项艰巨的任务。事实上,在先前工作中,基于 LLM 算法大多以启发式方式设计,并且通过经验评估,除了在某些基准上测量一些错误或成本指标之外,洞察力有限。相反,如果基于 LLM 算法的形式化分析确实存在的话,则可以带来各种潜在的好处,包括但不限于揭示有趣的经验现象背后的原因、指导超参的选择、预测基于 LLM 算法的经验性能,甚至启发新算法的设计。

基于 LLM 算法可能会利用多个 LLM 调用和非 LLM 程序来处理源自原始问题的子任务,这些子任务的输出共同产生整个算法的最终解决方案。这自然意味着任务分解的原则。事实上,设计基于 LLM 算法的一个关键方面是弄清楚如何适当地将原始任务分解为子任务,以便每个子任务都可以通过一个 LLM 调用或非 LLM 程序准确高效地处理,同时保证整个算法的性能。

任务分解的原则在基于 LLM 算法的先前研究中已被广泛采用,无论是显式的还是隐式的。任务分解对使用 LLM 解决问题有益且通常至关重要的原因有很多,其中一些列在下面:
• 尽管基于 Transformer 的 LLM 发展迅速,但它们的上下文窗口仍然有限,这限制了一次 LLM 调用可以处理的问题大小。对于具有非常大甚至(理论上)无限上下文窗口的 LLM,其解决一类问题(例如长文本检索或摘要)的准确性通常会随着问题的大小而下降,在这种情况下,任务分解仍然是有利的。
• 其他类别的问题可能具有有限的问题规模,但需要复杂的推理才能正确解决。在这种情况下,基于 LLM 算法可以从顺序任务分解(例如逐步思考和行动 [YZY+23])或并行分解(例如生成多个推理路径,然后将它们聚合以获得更好的解决方案 [SLC+23])中受益。
• 除了准确性之外,与单个 LLM 调用相比,任务分解还可以实现更好的效率。例如,输入问题可以分解为多个可以并行解决的独立子任务,而通过自回归解码用一个 LLM 调用解决问题(本质上是连续的)会遭受更大的端到端延迟。

尽管有这些好处,但在某些情况下,细粒度的任务分解也可能导致更高的错误或成本。选择适当的分解对于实现整体算法的良好性能至关重要,无论是在准确性和效率之间进行权衡,还是两全其美。

基于 LLM 算法制定为计算图。每个图节点从其前身节点获取一些输入,执行某些操作,并返回一些输出。节点可分为两类,称为 LLM 节点和非 LLM 节点,如图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5G0f2dV-1722528557149)(https://i-blog.csdnimg.cn/direct/43f2e7f01ac343639502843d96e5ea14.png)]

给定这样的节点,将它们与指定基于 LLM 算法内的数据流有向边连接起来,构建了计算图。例如,如图 a 显示了并行分解模式的图,该图将输入问题划分为并行子任务,用一个 LLM 节点解决每个子任务,并汇总结果以获得最终解决方案;图 b 说明了一种用于书籍长度摘要的算法 [CLGI24、Ope24b],该算法将输入文本划分为多个块并通过增量更新维护全局摘要;图 c 表示 ReAct 算法 [YZY+23],该算法由多次推理、工具使用和聚合迭代组成。计算图公式具有足够的表现力,可以涵盖先前工作中分别提出的这些不同基于 LLM 的算法,并以统一的方式促进对所有算法进行形式化分析。基于 LLM 算法的配置包括任务分解方式(反映在图形拓扑和图形节点的子任务中)、每个 LLM 节点的提示和解析方法、正在使用的 LLM 配置等。一个图形中的 LLM 节点可能使用相同或不同的主干 LLM。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-69UTGR8H-1722528557153)(https://i-blog.csdnimg.cn/direct/25a4cee150a14d71b60c9ddbf9c65268.png)]
(a)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EGMjPhyW-1722528557154)(https://i-blog.csdnimg.cn/direct/0ec6124b345b405e8fd3834006f65448.png)]
(b)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsaHN0c9-1722528557155)(https://i-blog.csdnimg.cn/direct/473cfaea63d843c3bce25237fb11b6a4.png)]
(c)
一些关键的抽象概念,有助于对基于 LLM 算法进行形式化分析,即基于 LLM 算法解决任务的准确性和效率。这些抽象概念及其关系的摘要可以在图中找到。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rxuLmNFs-1722528557155)(https://i-blog.csdnimg.cn/direct/eb72d36f7a5b45ac9cfa45f3439c7d8f.png)]

鉴于上述抽象,考虑对基于 LLM 算法的准确性和效率进行形式分析。更具体地说,首先分析计算图中每个单独节点的误差和成本指标;这些指标与图拓扑相结合,可以得出有关整个算法的误差和成本指标结果。

• 关于 LLM 在特定任务中的能力和局限性,LLM 的黑箱性质使得分析和准确量化这些因素变得具有挑战性,在这种情况下,人们可能会在实践中求助于测量和分析。从积极的一面来看,做出某些定性假设往往更容易。例如,在许多感兴趣的任务中,较大的问题实例比较小的问题实例更难,因此会导致 LLM 调用的误差指标更大。对于优化基于 LLM 的算法的某些超参数等实际目的,这种弱假设可能已经足够了。

• 了解 LLM 推理服务,尤其是从系统角度了解,对于深入分析成本指标至关重要。 LLM 推理服务在实践中可以多种多样:例如,LLM 可能在个人笔记本电脑的 CPU 或分布式 GPU 集群上运行,推理可能是计算密集型或内存密集型的,长序列处理和生成的复杂性可能是线性的或二次的,可能支持不同级别的并行性(例如,在多台机器上部署多个 LLM,或使用一个 LLM 进行批量推理)等等。

文末给出几个LLM算法的并行分解例子:

计数
排序
检索
RAG

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LLM(Language Model)的测试效率提升主要体现在以下几个方面: 1. 自动化测试:LLM的出现使得测试工程师能够利用自然语言的特点,快速生成测试用例和测试脚本。相比传统的手动编写测试用例,LLM能够极大地减少测试人员的工作量和时间成本,提高了测试效率。 2. 敏捷开发:LLM能够快速学习和适应不同的测试场景和需求,根据不同的自然语言输入生成相应的测试用例和脚本。这种灵活性使得测试人员能够更加快速地响应项目变更,及时执行测试,提高了敏捷开发的效率。 3. 覆盖率提升:LLM可以根据自然语言输入,自动生成全面且具有一定逻辑性的测试用例。相比人工编写测试用例,LLM能够更好地覆盖不同功能模块的边界条件和异常情况,从而提高测试的覆盖率。 4. 功能验证加速:LLM通过自动生成测试用例和脚本,可以快速验证新功能的正确性和稳定性。测试人员只需输入相应的功能描述,LLM会自动生成相应的测试用例,从而加快了功能验证的速度。 5. 测试回归:LLM可以根据自然语言输入,快速生成全面的测试脚本,以及对应的测试数据和预期结果。这种自动化回归测试能够提高测试的复用性和可维护性,降低了回归测试的工作量,提高了回归测试的效率。 综上所述,基于LLM的测试效率提升主要体现在自动化测试、敏捷开发、覆盖率提升、功能验证加速和测试回归等方面。LLM的应用能够帮助测试人员更快速、全面地进行测试工作,提高测试效率,降低测试成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值