微调提升LLM准确性,SQL查询任务实现从0%到90%准确率的突破!

文摘   2025-01-05 16:19   安徽  

准确性对于基于 LLM 的应用来说通常至关重要,尤其是在 API 调用或财务报告摘要等情况下。


目前主要有下面几种方法可以提高 LLM 准确性:

  1. 提示工程(Prompt Engineering)

  • 提供更详细的指示;

  • 使用少量示例(Few-shot Prompting);

  • 要求模型按步骤思考(Step-by-step reasoning)。

  • 开始时可以通过优化提示语来提高模型的准确性。具体方法包括:

  • 自我反思机制(Self-Reflection)

    • 如果准确性仍然不足,可以引入自我反思步骤,例如返回 API 调用的错误并要求 LLM 修正错误。

  • 增强上下文信息

    • 提供与任务相关的上下文,使用 RAG 进一步提升准确性。

    • 通过该方法在 SQL 查询任务中实现了从 0% 有效查询到 90% 准确率的突破。

  • 进一步提升:微调(Fine-Tuning)

    • 微调是突破精度瓶颈的最有效方式。通过微调,我们不仅依赖于提示语提供的信息,还可以将额外的信息嵌入到模型的权重中,从而大幅提升模型的表现。


    总结来说,提示工程和自我反思作为初步提升准确性的策略,但微调(Fine-tuning)是突破当前准确性瓶颈、实现更高精度的关键技术



    微调(Fine-Tuning)



    微调是通过在特定的任务数据集上训练预训练模型,提升模型在特定应用上的性能。基本模型最初在大量数据上进行训练,具备广泛的语言理解能力,而微调则让这些模型更适应特定任务,成为专用工具。


    微调通常采用监督学习方法,模型通过特定的问题和答案对进行训练,调整权重来提高准确性。


    传统的微调方法需要更新模型所有的权重,计算开销大。为解决这一问题,引入了参数高效微调(PEFT)技术,更新少量参数,从而减少计算成本,最常用的技术之一是LoRA(低秩适配)


    优点:

    • 精度提高:微调使模型能够学习更多的信息,精度通常可达到 90% 以上。

    • 成本效益:微调后,可以使用较小的任务特定模型,而不必依赖大型通用模型,从而降低推理成本。

    • 本地部署:微调后的模型可以部署在本地,避免对云提供商(如 OpenAI 或 Anthropic)的依赖,减少成本、提高隐私性并减少外部基础设施的依赖。


    缺点:

    • 前期投入:微调需要较大的前期投资,包括数据准备和模型训练。

    • 技术难度:微调涉及特定的技术知识,可能需要一定的学习曲线。

    • 数据质量依赖:微调的效果高度依赖于高质量的训练数据。


    微调作为提升LLM(大语言模型)准确性的一种有效手段,通过定向数据训练使模型更加专注于特定任务,尽管微调过程可能涉及一定的技术和成本挑战,但其带来的准确性提升和本地部署优势使其在实际应用中非常有价值。



    Lamini Memory Tuning 




    Lamini提出了一种新的微调方法—— Mixture of Memory Experts (MoME),这种方法能够让 LLM 在几乎没有信息损失的情况下,学习大量的事实性信息,同时保持其广泛的推理能力,并且仅需适度的计算资源。


    核心概念

    • LoRA 适配器:Lamini 通过在预训练的 LLM 中加入大量(大约100万个)LoRA适配器,以及一个跨注意力层,实现了这一创新。每个 LoRA 适配器相当于一个“记忆专家”,专门负责模型某个特定方面的知识存储和保留。

    • 记忆专家(Memory Experts)的作用:这些记忆专家确保模型从微调数据中准确、忠实地保留信息。它们像信息检索系统一样工作,可以智能地从存储的知识中检索并进行路由。


    在推理阶段,模型会根据查询检索出最相关的记忆专家子集,并将这些专家的输出与基本模型合并,从而生成对用户查询的回应。



    Lamini Memory Tuning采用的 Mixture of Memory Experts (MoME) 方法,号称能够实现95%的准确率。其与传统的指令微调(Instruction Fine-tuning)相比,主要区别在于它的优化目标。

    • 传统微调 vs Lamini Memory Tuning

      • 传统微调:传统的微调方法通常是优化整个任务的平均误差。这意味着模型在进行微调时,会通过多任务学习来改进性能,但并不特别针对某个领域或事实进行优化。

      • Lamini Memory Tuning:相对而言,Lamini的方法则更为精准,它的目标不是优化整个任务的平均误差,而是专门针对模型所需记住的事实信息,确保这些知识的零误差。简而言之,它让模型在关键事实方面达到几乎完美的准确率,同时保持其在其他任务中的通用性。

    • 关键特点

      • 专注于记忆精确性:Lamini Memory Tuning 通过引入 LoRA 适配器和跨注意力机制,使得模型在处理特定任务时,能够“记住”并精确地生成与该任务相关的事实性知识。

      • 精确训练:与传统的微调方法不同,Lamini 方法通过细致入微的优化,确保模型在特定领域知识上几乎没有错误,从而提升了对特定任务的准确性。

      • 高效性:由于每个 LoRA 适配器专注于不同的领域或记忆点,Lamini方法在保证精度的同时,还能有效地节省计算资源,并提高推理效率。


      Lamini Memory Tuning,特别是 Mixture of Memory Experts(MoME)方法,通过引入记忆专家,成功提升了 LLM 在保持准确性和知识广度方面的表现。这种方法不仅使模型在推理时更加高效,还避免了在大规模数据处理时的资源浪费,是实现高效、精确微调的创新途径。




      Lamini 微调 Llama3.1-8B-Instruct 




      通过 Lamini 微调 Llama3.1-8B-Instruct 150 次之后损失降低到接近为 0:



      在 ClickHouse SQL Agent 查询任务中实现了从 0% 有效查询到 90% 准确率的突破:


      基础 Llama 模型(产生零个有效的 SQL 查询)。


      完整代码位于:

      https://github.com/miptgirl/miptgirl_medium/blob/main/sql_agent_accuracy/sql_agent_fine_tuning.ipynb



      全文位于:

      https://towardsdatascience.com/the-next-frontier-in-llm-accuracy-cb2491a740d4





      PyTorch研习社
      打破知识壁垒,做一名知识的传播者
       最新文章