论文翻译 | Batch Prompting: Efficient Inference with Large Language Model APIs 批处理提示:使用大型语言模型api的高效推理

摘要

        使用大型语言模型(LLM)对数十万个样本执行推理可能在计算和经济上都很昂贵。我们提出了批量提示,这是一种简单的替代提示方法,使LLM能够批量运行推理,而不是一次运行一个样本。我们的方法在保持下游性能的同时减少了令牌和时间成本。我们从理论上证明,在少量的上下文学习设置下,推理成本几乎与每批样本的数量成反比线性下降。我们在常识QA、算术推理和NLI/NLU的10个数据集上广泛验证了批处理提示的有效性:批处理提示显着(批处理6个样本高达5倍)减少了LLM (Codex)推理令牌和时间成本,同时实现了更好或可比的性能。我们的分析表明,每批样本的数量和任务的复杂性影响其性能。此外,批处理提示可以跨不同的LLM和推理方法应用。我们的代码可在https://github.com/ HKUNLP/batch- prompts获得。

1 引言

        大型语言模型(LLMs)在零样本/少样本设置下通过上下文学习展示了其强大的能力(Brown等人,2020;Chen等人,2021;Chowdhery等人,2022)。近期的大量工作通过诱发推理步骤(Wei等人,2022;Wang等人,2022;Khot等人,2022;Cheng等人,2022)、选择代表性的上下文示例(Liu等人,2022;Su等人,2022;Agrawal等人,2022)以及设计提示模板(Jiang等人,2020;Bach等人,2022;Arora等人,2022)在上下文学习方面取得了进展。
使用LLMs可能在标记和时间的使用上代价昂贵,特别是在需要多次调用LLM时,例如在基准测试大型数据集或为企业处理大量客户咨询时。例如,广泛采用的LLM的OpenAI API服务1对1万样本进行推理大约需要400美元和10小时。2如果还考虑到每分钟最大API请求数量的限制,成本将会更高,阻止用户构建大规模的LLM应用。
        我们提出了批量提示(batch prompting)这一替代方法,它允许模型一次性对多个样本进行推理,而不是一次处理一个样本。这样做减少了标记和时间成本,同时仍保持了下游性能,且无需更改API。如图1所示,标准提示每次生成对一个样本的响应(答案),对于一个大小为N的测试集,需要LLM进行N次推理运行。而我们的批量提示则是在一次推理运行中生成对b个样本的响应,对于同样的N个样本,只需要N=b次运行。

图1:批量提示与标准提示的对比图。批处理提示将多个样本分组在一个批中(图中b= 2),并让LLM为推理中的批生成多个响应(以黄色突出显示)。 

          我们首先在理论上证明了在少样本上下文学习设置下,API调用期间消耗的大部分标记都是少样本示例,用于特定推理样本的标记预算只占一小部分(第2节)。因此,批量提示中批量中的样本数量b的增加可以以反比例的方式减少标记和时间成本。我们使用Codex这一在代码数据上微调的GPT-3强变体,在十个多样化的下游数据集上广泛验证了批量提示的有效性,这些数据集涵盖了常识性问答、算术和NLI/NLU(第3节)。批量提示显著减少了使用LLMs的标记和运行时间,同时在所有十个数据集上实现了相当甚至更好的性能。在进一步分析中(第4节),我们发现批量中的样本数量和任务的复杂性会影响其性能。此外,我们还展示了批量提示在不同的LLMs(例如,Codex、ChatGPT和GPT-3)和推理方法(例如,端到端、思维链和代码生成)中都能很好地工作,表明批量提示是传统提示的有效替代品。

2 方法 

        我们首先介绍批量提示,这是标准提示的有效替代。然后,我们比较了批处理和标准提示的令牌和时间成本,证明了我们的方法的效率。 

2.1 问题设置

        传统的范式(即图1中的标准提示)用于提示LLMs进行上下文学习的过程如下:选择K个带有上下文(例如,问题)和输出(例如,答案)的上下文少样本示例来构建输入提示,一个只包含上下文的测试样本被附加在提示的末尾,然后使用LLM生成测试样本的响应。在本文中,我们关注一个现实场景,即有N个测试样本,这在数据集基准测试或处理大量客户请求时是常见的。在这种情况下,根据标准提示范式,需要进行N次独立的LLM推理调用。 

2.2 批量提示 

        批处理提示使LLM能够在单个推理运行中为一个批中的多个样本生成响应,从而将LLM推理时间从N减少到N=b,其中b是一个批中的样本数量。具体地说,如图1所示,我们的提示符将上下文中的K个示例分组为K=b个批次,每个批次有b个示例作为演示。在每个批次中,演示上下文在开始时以特定的顺序排列,随后以相同的顺序放置相应的输出。然后,在输入提示符的末尾将b个测试示例上下文分组在一起。通过这种方式,LLM从上下文演示中学习,并为整个批次的测试样本生成相应的响应。我们在每个批次中添加位置标识符“[index]”,以帮助LLM识别输入上下文和生成的响应的顺序对应关系,以及2)简化解析生成的响应的过程。 

2.3 token成本

        一个LLM调用的成本与令牌的数量呈线性关系,包括输入提示令牌(few-shot和指令)和生成令牌(例如,根据OpenAI的定价)。大多数令牌都是由标准提示中的提示令牌消耗的,因为提示令牌的数量通常远远超过生成的令牌的数量,因此LLM可以更好地从上下文示例中学习。因此,在生成的代币上花费的代币比例越大,总成本就越经济。我们将令牌效率η定义为在一次LLM调用中用于生成令牌的令牌部分。对于标准提示和批量提示(为了简洁,如果有指令令牌,则省略):

 

        当K \gg1和b < K时,\eta _{batch}扩展几乎与b成反比,因此增加批提示的b可以大大降低令牌成本。 

2.4 时间成本

        直观地说,批量提示通过将API调用次数从N减少到N=b来减少推理时间。如果考虑到Transformer(Vaswani等人,2017年)解码的时间,批量提示中的成本将会随着b的增加而增加,因为与标准提示相比,将生成更长的响应。我们在附录A中详细推导了关于这种Transformer架构视角的内容。
        然而,由于大多数终端用户习惯于并且只能访问LLM API服务,这部分时间成本相对于API调用和公司(如OpenAI)设定的每分钟请求率限制的开销来说是微不足道的(主要实验中观察到)。此外,可能会出现网络连接不稳定或缓慢的情况,用户希望尽可能减少LLM调用以完成一个任务。
        因此,在实践中,通过批量提示将调用次数从N减少到N=b可以实质性地降低时间成本。请注意,当API调用开销和速率限制不再是未来时间成本的主要瓶颈时,那么附录A中讨论的生成更长序列所需的增加解码时间就不能被忽视,批量提示的时间减少将不会那么显著(例如,最新的textdavinci-003)。由于LLM基础设施/服务可能会随时间变化,因此在实验中,令牌成本比时间成本更容易测量。

3 实验 

         我们广泛评估了10个不同数据集的批处理提示。我们的结果表明,批量提示可以实现最多5倍的令牌和时间效率(批量六个样本)改进,并具有相似甚至更好的下游性能。

3.1 数据集

         我们评估了批量提示在十个数据集上的表现,这些数据集涵盖了常识性问题回答、算术推理以及自然语言理解/推理:CommonsenseQA (Talmor等人,2019年),StrategyQA (Geva等人,2021年),GSM8K (Cobbe等人,2021年),SVAMP (Patel等人,2021年),AQuA (Ling等人,2017年),AddSub (Hosseini等人,2014年),MultiArith (Roy和Roth,2015年),RTE (Bentivogli等人,2009年),MNLI (Williams等人,2018年),以及SST-5 (Socher等人,2013年)。对于CommonsenseQA、AQuA、AddSub、MultiArith和RTE,我们评估了整个开发/测试集。考虑到LLM API的成本,对于其他五个数据集,我们评估了前300个测试样本。

3.2 实验设置 

        在我们的实验中,我们使用OpenAI Codex (code- davincic -002)作为LLM(在第4.5节中,讨论了不同的LLM)。Codex目前是免费提供的,但token消费策略与其他LLM相同,确保实验中的代币成本一般。解码温度设为0。对于每个数据集,我们手动从训练集中选择12个样本作为上下文示例,在答案中使用思维链(Wei et al, 2022, CoT)推理步骤(在4.4节中,讨论了CoT以外的其他推理方法)。我们选择12个例子,因为12是2的最小公倍数;3;4;6个,因此很容易分析将它们分成2个批次的效果;3;4;消融研究中的6个样本。更多的实验细节和完整的结果列在附录B中。 

3.3 结果 

        图2比较了标准提示和批量提示的令牌和时间成本。如图所示,批量提示显著地减少了使用Codex进行标准提示的令牌和时间成本(每个批次包含6个样本时,可减少多达5倍)。此外,成本的降低几乎与每个批次中的样本数量成反比线性关系,这验证了我们在第2.3节和第2.4节中的分析。需要注意的是,时间成本包括了API调用开销和速率限制阻塞,这些在常用的OpenAI服务中是存在的。

图2:用于插图的三个数据集上每个样本的令牌和时间成本(其他数据集显示类似的趋势)。随着每批样品数量的增加,批提示显著降低了token和时间成本。

     对于那些时间成本不是瓶颈的LLM服务,例如最新的GPT-3(text-davinci-003),由于批次大小b的增加导致的解码时间增加,正如第2.4节所讨论的,不应被忽视。由于LLM基础设施可能随时发生变化,令牌效率的提高比时间成本更容易比较;图2中的令牌减少在任何时间点的LLM上都应该成立。
        表1显示,批量提示(最佳b,即每个批次中的样本数量)在所有十个数据集上的表现与标准提示相当,甚至更好。因此,我们建议LLM用户考虑应用批量提示,以在现实应用中节省金钱和时间,同时保持良好的性能。
 

表1:10个数据集上标准和批量提示的准确性:CommonsenseQA (Talmor等人,2019)、StrategyQA (Geva等人,2021)、SVAMP (Patel等人,2021)、AQuA (Ling等人,2017)、AddSub (Hosseini等人,2014)、MultiArith (Roy和Roth, 2015)、RTE (Bentivogli等人,2009)、MNLI (Williams等人,2018)和SST-5 (Socher等人,2013)。批处理提示显示相当甚至更好的性能。 

 4 分析

        在本节中,我们首先分析可能影响批量提示性能的因素,并探讨平衡成本和下游性能的权衡。我们进一步演示了批量提示可以应用于不同的llm(例如,GPT-3和ChatGPT)和提示方法(例如,端到端和代码生成)。 

4.1 批样数量 

        图3展示了每个批次中的样本数量b如何影响批量提示在基准测试中的性能。首先,随着b的增加,性能通常会下降。当b=6时,在这五个数据集中的四个数据集上观察到了较大的性能下降。然而,有趣的是,最佳性能并不总是出现在b=2时。设置b=3或4通常能够实现良好的性能,同时比更小的b节省更多的token和时间。当b变得更大时,时间和令牌成本的减少会减弱,这表明在实验中给定12个上下文示例的情况下,设置b<6往往能够在成本和下游性能之间提供一个良好的权衡。


 图3:使用批处理提示的五个数据集上不同数量的批处理样本b的准确性。b越大,性能越低。

4.2 批量样品的选择

        在这里,我们检查样本的选择,即样本如何分组成批,是否会影响批量提示的性能。在对测试样本进行分组时,我们研究了上下文学习中两种广泛采用的样本选择方法:分组更相似(Rubin et al, 2021;Liu et al ., 2022)或更多样化(Su et al ., 2022;Agrawal et al, 2022)分批取样。具体来说,给定N个测试样本,为了对相似的样本进行分组,我们使用k-均值聚类,并通过将冗余样本移动到大小< b的最接近的组中,对每个簇进行后处理,使其大小相等。对于分组多样化的样本,我们应用vote-k方法(Su et al, 2022)迭代选择多样化和代表性的样本组。

表2:不同批处理方法在五个代表性数据集上的准确性。基于相似性或多样性的方法无法获得性能提升。 

         如表2所示,基于相似性和多样性的选择都没有显示出比随机分组的改进。我们怀疑原因可能是这两种方法都假设批内样品可以从它们面前呈现的相似或不同的样品中受益,即批前的样品。
然而,这些早期的样本不具有地面真值输出,因此可能导致错误传播到其余的批中样本。为进一步提高批量提示的性能,开发有效的批量提示样本选择策略可能是未来研究的一个有前景的领域。

4.3 任务复杂性 

        我们进一步分析了任务复杂性如何影响批量提示的性能。在表1中,最大的性能下降(从46:1降到42:1)发生在AQuA数据集上,这是一个多选QA格式下的算术推理任务。一种解释是AQuA比其他数据集更难,其绝对准确率最低为46:1%,因此当输入上下文被组合在一起时,LLMs更容易受到干扰。
        我们还研究了可能影响性能任务的另一个方面:输入上下文越长,批量提示对性能的损害就越严重。我们使用WikiTQ(Pasupat和Liang,2015)数据集验证了我们的假设,这是一个针对Wikitables的具有挑战性的表格QA数据集。表格包含更长的输入令牌,因为它们有多行和多列。我们通过增加表格输入长度进行了实验:简化的表格模式(即不带列类型的列名;平均每表24个令牌),表格模式(平均每表58个令牌),以及带有三行表格的表格模式(平均每表216个令牌)。我们遵循Binder(Cheng等人,2022)生成Binder-SQL程序来解决问题。

图4:各种表输入策略和b(每批样本数量)在WikiTQ上的准确率。它研究了输入长度如何影响批量提示性能。B = 1表示标准提示。每个表的平均输入令牌是24、58和216个令牌。随着批量样本数量的增加,批量提示会影响下游性能。

         如图4所示,在标准提示(b=1)中,输入带有三行的表格模式在QA性能上占主导地位。然而,当使用批量提示并增加b时,它也经历了最严重的性能下降。输入上下文越短,批量提示的性能就越稳定。这表明,当应用批量提示时,长的任务输入更可能导致混淆和性能下降。

4.4 推理方法

        在我们的主要实验(第3节)中,我们对所有十个数据集使用了思维链(Chain-of-Thought, CoT)方法。在这里,我们检验批量提示是否适合其他常见的LLM推理方法。我们实验了另外两种推理方法:端到端(即直接提示LLM输出答案,而不经过中间步骤)和基于程序的方法(即提示LLM生成程序来回答问题)。对于基于程序的方法,我们在WikiTQ上采用了Binder(Cheng等人,2022)方法,在GSM8K和SVAMP上采用了程序思维链(Program-of-Thought, PoT)(Chen等人,2022)方法。

 

表3:标准提示和批量提示下不同推理方法的准确率。批量提示可以很好地应用于具有相似或更好性能的不同推理方法。 

         如表3所示,端到端和基于程序的方法都可以从批量提示的效率中受益,同时在任务上保持相似甚至更好的性能。这表明批量提示是一个即插即用的替代方案,可以与各种推理方法结合用于不同的场景。

4.5 语言模型 

        我们除了Codex之外,还尝试了其他LLMs。对于GPT-3,我们使用了最新的OpenAI版本,即text-davinci-003。对于ChatGPT,由于尚未提供官方的代码集成API,我们通过在浏览器中手动测试每个数据集的60个样本来进行评估(ChatGPT的提示在附录C中提供)。

表4:使用标准提示和使用CoT提示的批量提示的不同语言模型的准确性。语言模型是Codex (code-davinci002)、GPT-3 (text-davinci-003)和ChatGPT。批量提示可以很好地应用于表现出相似或更好性能的不同LLM。 

          表4展示了这些LLMs的性能。GPT-3和ChatGPT都表现出了与Codex相似的能力:批量提示在各个数据集上保持了下游性能。正如第3节所讨论的,不同LLMs应该都能从批量提示中获得令牌效率的提升,尽管具体的时间减少可能会因LLM推理实现的不同而有所变化。这表明批量提示是一种通用的方法,可以适用于多种不同的LLMs,同时保持良好的性能和效率。

5 相关工作 

        提升上下文学习。大型语言模型(Brown等人,2020年;Chen等人,2021年;Chowdhery等人,2022年,LLM)的惊人能力激发了一系列近期研究,旨在提高上下文学习(ICL)的性能。一些工作提出了不同的推理方法来提示LLMs(Wei等人,2022年;Zhou等人,2022年;Khot等人,2022年),这些方法在直接提示LLMs输出答案方面取得了显著的改进。其他工作(Cheng等人,2022年;Chen等人,2022年;Gao等人,2022年)生成程序来解决推理任务。另一系列工作(Liu等人,2022年;Su等人,2022年;Agrawal等人,2022年)专注于选择更好的上下文示例。本研究为大型现实世界应用中的ICL添加了一个新的维度:通过批量提示来节省预算和时间,同时实现良好甚至更好的性能。
        高效语言生成。许多近期工作提出了用于高效语言生成的方法,包括机器翻译(Kasai等人,2020年,2021a,b)和语言建模(Katharopoulos等人,2020年;Peng等人,2021年,2022年)。其中许多工作引入了替代标准变换器架构的方法来实现效率提升。虽然我们有着相同的动机追求高效生成,但我们的方法是对近期提示方法的简单修改,因此它适用于任何现成的语言模型API,如OpenAI的GPT-3和ChatGPT,无需任何额外的训练或定制模型托管。

6 结论 

         我们提出了批量提示(batch prompting),这是一种新的提示LLMs的方法,它以批量方式对样本进行推理。通过批量提示,可以在一个API调用中处理多个样本,从而显著减少令牌和时间成本。在涵盖常识性QA、算术以及NLI/NLU的十个数据集上的广泛实验表明,批量提示可以实现比标准提示更好或相似的性能,同时令牌和时间成本更低。
        我们希望我们的批量提示方法为研究开辟了一条新途径:探索使用广泛可用的语言模型API为大尺度应用实现高效推理的方法。

 

 


 
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值