博客

  • PrExMe:大规模提示探索用于机器翻译和摘要评估的开源LLM

    引言

    近年来,大型语言模型(LLMs)的迅速发展为自然语言处理(NLP)领域带来了范式转变。特别是,这些模型的上下文学习能力使其能够作为自然语言生成(NLG)任务的评估指标,从而在低资源场景和时间受限的应用中表现尤为出色。在本文中,我们介绍了PrExMe,一种大规模的提示探索方法,旨在评估超过720种开源LLM提示模板在机器翻译(MT)和摘要数据集上的表现,总共进行了超过6.6百万次评估。这项广泛的比较研究不仅作为最近开源LLM性能的基准,还探讨了不同提示策略的稳定性和变异性。我们发现,虽然在某些场景中提示是稳定的,但在其他场景中,提示和模型排名的稳定性可能会受到看似无害的变化的影响。例如,将请求的输出格式从“0到100”更改为“-1到+1”会显著影响我们的评估排名。我们的研究有助于理解不同提示方法对LLM评估指标性能的影响,突出了最稳定的提示模式及其潜在的局限性。我们公开了代码,供进一步研究使用:https://github.com/Gringham/PrExMe

    相关工作

    基于提示的评估指标

    基于LLM的NLG评估指标的最新进展通常依赖于上下文学习,直接从生成的文本中预测质量判断。Li等人(2024b)和Gao等人(2024a)的调查提供了这些指标的全面概述。然而,许多现有的方法都依赖于封闭源模型。在Eval4NLP 2023共享任务中,研究人员限制了使用选定的开源LLM,并禁止对这些模型进行微调。这些提交中提出了许多有趣的技术,但它们仅探讨了少数几种提示,缺乏对提示模式的全面分析。

    提示技术

    近年来,许多成功的提示技术被提出(例如,Liu等人,2023a)。我们的工作主要依赖于已建立的方法,如零样本链式推理(Zero-Shot CoT)和检索增强生成(RAG)。此外,Li等人(2023)提出了情感诱导提示,以提高LLM性能。我们首次分析了这种技术在评估指标中的应用。

    提示稳定性

    我们的工作在广泛的提示、数据集和任务的网格搜索基础上,扩展了LLM对提示扰动的响应研究。Webson和Pavlick(2022)、Leidinger等人(2023)、Weber等人(2023)和Sclar等人(2023)发现自然语言推理和情感分类的性能变化范围很大。为了解决这个问题,Sclar等人(2023)建议提供不同提示扰动下的完整结果范围。我们是首个研究这些稳定性问题对开源LLM评估指标影响的团队,并探索如何选择最佳提示。

    实验设置

    提示模板

    我们的提示是基于层级模板构建的,即一个大模板由多个小模板组成。每个提示由以下部分组成:(1)源文本和要评分的生成假设文本,(2)基础提示,(3)任务描述,(4)格式要求,以及(5)可选的一次性示例。基础提示是我们提示层级的顶层,包含其他组件。

    MQM基础方法

    除了层级模板,我们还测试了GEMBA-MQM的提示。GEMBA-MQM通常使用GPT-4进行评分,我们称其开源实现为LocalGemba。

    分数提取与评估

    我们将生成限制为180个标记,并提取作为分数的最后一个正则匹配。当没有找到结果时,我们将其他提示模板的平均分赋给该样本。我们在段落级别评估提示模板,即对于每个指标,我们计算指标分数与人工判断之间的相关性。我们使用肯德尔、皮尔逊和斯皮尔曼相关性作为主要度量,并计算肯德尔相关性结果的显著性测试(p≤0.075)。

    模型

    我们选择了在Eval4NLP 2023中表现出色的指令调优LLM进行评估,包括Platypus2-70B-GPTQ、Nous-Hermes-13b和OpenOrca-Platypus2-13B等。

    数据集和阶段

    我们的实验分为两个阶段,使用不同的数据集进行评估。第一阶段在Eval4NLP 2023的训练集上进行评估,第二阶段在开发集和测试集上进行评估。通过这种方式,我们可以评估提示在不同数据集和任务中的泛化性能。

    基线

    我们还提供了两个基线指标的相关性,包括BARTScore和XComet。

    结果

    在第一阶段,我们运行了超过665万次零样本提示和71,280次一次性提示。在第二阶段,我们评估了550多万次零样本提示和130多万次一次性提示。表2展示了每个LLM在不同任务和数据集上的肯德尔相关性。

    提示模式和模型的最佳表现

    我们发现不同模型对提示模式有独特的偏好。例如,Platypus-70B在9个任务中表现最佳,而Tower-13B在3个任务中表现出色。不同模型对提示模式的偏好也不同,例如Orca更喜欢PZS提示,而Tower更适合ZS-CoT和ZS-CoT-EM提示。

    提示稳定性

    我们量化了提示模式在数据集、模型和其他提示组件变化时的稳定性。结果表明,某些提示模式在不同数据集间具有较高的稳定性,而其他提示模式则表现出显著的变异性。

    建议

    通过我们的研究,我们为使用开源提示基准指标提供了一些建议。Platypus2-70B在评估任务中表现最佳,对于13B模型,Tower和Orca在MT和摘要任务中表现出色。我们建议使用这些模型中最常见的提示模式作为初始选择,并根据实际需求进行调整。

    结论

    我们引入了PrExMe,一种大规模提示探索方法,用于提示基准的开源NLG指标。我们评估了720种不同的提示模板和超过6.6百万个提示,并提供了使未来这种类型的指标更加稳健的建议。此外,我们的研究成果为最近的开源LLM在此任务中的应用提供了比较和分析。

    以上是对PrExMe研究的详细介绍和分析,希望能为未来的研究提供有价值的参考。

  • 驾驭语言模型:大型语言模型应用的生产实践挑战与展望

    导语: 近年来,大型语言模型(LLM)在人工智能领域掀起了一场革命,其强大的文本生成和理解能力为众多应用场景带来了新的可能性。然而,将LLM应用从酷炫的演示转化为可实际部署的生产系统并非易事。本文将深入探讨LLM应用生产实践所面临的挑战,并结合实例分析解决方案,最后展望LLM应用的未来发展方向。

    一、生产环境下LLM应用面临的挑战

    1. 自然语言的模糊性

    不同于精确的编程语言,自然语言本身就带有模糊性。这种模糊性在LLM应用中主要体现在用户指令和模型输出两个方面。

    首先,用户指令的灵活性可能导致难以察觉的错误。例如,对代码进行微小的修改,例如添加字符或删除一行,通常会导致明显的错误提示。但如果对LLM的指令进行类似的修改,程序仍然可以运行,但输出结果可能大相径庭。

    其次,LLM输出结果的模糊性是更大的挑战。这会导致两个问题:

    • 输出格式不一致: LLM的后续应用通常需要解析特定格式的输出结果。虽然我们可以通过精心设计的指令来明确输出格式,但这并不能保证模型始终遵循预期的格式。
    • 用户体验不一致: 用户期望应用程序具有一致性。例如,我们不希望每次查询保险报价时都得到不同的结果。然而,LLM本身具有随机性,无法保证相同的输入每次都能得到相同的输出。

    为了解决这个问题,OpenAI等机构正在积极探索提高模型可靠性的方法。一些经验丰富的LLM开发者建议,我们需要适应这种模糊性,并围绕它构建工作流程。此外,通过尽可能提高工程严谨性,例如采用本文接下来讨论的各种方法,可以有效缓解LLM应用中的模糊性问题。

    2. Prompt工程的挑战

    Prompt工程是指设计和优化LLM输入指令的过程,其目标是引导模型生成符合预期的输出。

    • Prompt评估:
      • 评估LLM是否理解Prompt中给出的示例。例如,在情感分析任务中,可以输入一些带有情感标签的文本,观察模型是否能输出正确的情感得分。
      • 评估LLM是否对Prompt中的示例过拟合。可以通过使用独立的测试集来评估模型的泛化能力。
    • Prompt版本控制:
      Prompt的微小变化可能会导致输出结果的显著差异。因此,对Prompt进行版本控制和性能跟踪至关重要。可以使用Git等工具来管理Prompt的不同版本及其性能指标。
    • Prompt优化:
      • 使用“思维链”(Chain-of-Thought,COT)技术,引导模型解释其推理过程,从而提高输出结果的可解释性和准确性。
      • 生成多个输出结果,并选择最佳结果作为最终输出。例如,可以使用多数投票法或让LLM自身选择最佳结果。
      • 将复杂的Prompt分解成多个更小、更简单的Prompt,可以降低模型理解和推理的难度。

    3. 成本和延迟

    • 成本:
      OpenAI等API服务提供商通常根据输入和输出token的数量收费。更长的Prompt和输出意味着更高的成本。
    • 延迟:
      输出token的生成是顺序进行的,因此输出长度会显著影响延迟。此外,网络延迟和工程开销也会影响LLM应用的整体延迟。

    4. Prompting、微调和替代方案

    • Prompting: 为每个样本提供明确的指令,告诉模型如何响应。
    • 微调: 在特定任务的数据集上训练模型,使其学习如何响应,而无需在Prompt中明确说明。

    选择Prompting还是微调取决于数据可用性、性能要求和成本限制。

    • 数据量少: Prompting更易于上手,但Prompt的长度有限,无法包含大量示例。
    • 数据量大: 微调可以利用更多数据,并获得更好的性能。

    5. 其他挑战

    • 嵌入和向量数据库: 使用LLM生成文本嵌入,并将其存储在向量数据库中,可以高效地进行语义搜索和推荐。
    • 向后和向前兼容性: LLM模型会不断更新迭代,因此需要确保Prompt和应用逻辑的兼容性。

    二、任务组合能力

    实际应用中,LLM应用通常需要执行多个任务,并按照一定的控制流程进行组合。

    1. 多任务应用

    例如,“与数据对话”应用需要执行以下任务:

    1. 将用户的自然语言输入转换为SQL查询(LLM)。
    2. 在数据库中执行SQL查询(SQL执行器)。
    3. 将SQL结果转换为自然语言响应(LLM)。

    2. 代理、工具和控制流程

    • 代理:
      能够根据给定的控制流程执行多个任务的应用程序。
    • 工具:
      代理可以利用的外部程序或服务,例如搜索引擎、数据库、计算器等。
    • 控制流程:
      定义任务执行顺序和条件的逻辑,例如顺序执行、并行执行、条件分支、循环等。

    3. 使用LLM代理进行控制流程

    可以使用LLM来决定控制流程的条件。例如,可以训练LLM根据用户输入选择不同的工具或执行不同的任务。

    4. 代理测试

    为了确保代理的可靠性,需要对每个任务以及整个控制流程进行测试。

    三、LLM应用的未来发展方向

    • AI助手:
      能够帮助用户完成各种任务的智能助手,例如日程安排、笔记记录、编程辅助等。
    • 聊天机器人:
      能够与用户进行自然对话的智能程序,例如虚拟伴侣、游戏角色等。
    • 编程和游戏:
      LLM可以用于代码生成、代码调试、游戏开发等领域。
    • 学习:
      LLM可以用于自动生成测验、评估学生答案、提供学习建议等教育场景。
    • 与数据对话:
      LLM可以帮助用户使用自然语言查询和分析数据。
    • 搜索和推荐:
      LLM可以改善搜索结果的相关性和推荐系统的个性化程度。
    • 销售:
      LLM可以用于自动生成销售邮件、分析客户信息等。
    • SEO:
      LLM可以用于生成SEO优化内容,但同时也带来了新的挑战,例如如何区分人工编写和机器生成的内容。

    结语

    LLM应用仍处于早期发展阶段,技术和应用场景都在快速迭代。Prompt工程、成本控制、延迟优化、任务组合等方面都面临着挑战。然而,LLM也为AI助手、聊天机器人、编程、教育、数据分析、搜索推荐等领域带来了前所未有的机遇。相信随着技术的进步和应用的深入,LLM将为我们带来更加智能和便捷的未来。

    参考文献

    • Huyen, C. (2023). Building LLM applications for production. Retrieved from https://huyenchip.com/2023/04/11/llm-engineering.html
人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网
Page Stats: PV: 1 | UV: 1
Last updated: 2025-07-12 11:34:39
沪ICP备2024052574号-1