亚马逊AWS官方博客

炼石成丹:大语言模型微调实战系列(三)模型评估篇

背景

随着生成式 AI 技术的快速发展,大语言模型(LLM)在各个领域的应用日益广泛。然而,如何有效评估这些模型的质量,成为了一个重要而紧迫的问题。特别是对于经过微调的大模型,需要一套系统化、自动化的评估方案来确保模型的输出质量和性能表现。

https://arxiv.org/pdf/2307.03109, Fig. 1. Structure of this paper.

上图来自于《A Survey on Evaluation of Large Language Models》,纵观整个模型评估领域,可以看到大语言模型的评估体系已经形成了一个全面且系统化的框架。从自然语言处理的基础能力,到鲁棒性、伦理和可信度等关键特性,再到社会科学、自然科学、医疗、教育等专业领域的应用评估。特别值得注意的是,评估维度已经从单一的语言理解和生成能力,扩展到了更广泛的应用场景,包括数学推理、科学问答、医疗诊断等专业领域。

而企业在研发过程中要对模型评估,也需要有一个很好的评估机制。从评估的方式来看,目前大模型评估主要存在两种评估方式:自动评估和人工评估。

人工评估覆盖场景广泛、准确度高、反馈全面准确,但成本昂贵且效率低下。自动评估则可节省时间,减少主观因素影响,评估过程更加标准化,并能在模型迭代过程中持续评估测试,便于更好地迭代大语言模型。

大模型自动化评估解决方案

为了让企业更加便捷地对大语言模型进行自动化评估,我们设计了一个基于亚马逊云科技的评估方案。该方案通过 Promptfoo 工具与 Amazon Bedrock 服务的深度集成,实现了从数据输入到结果分析的全流程自动化,并借助 Amazon Bedrock 上广泛的模型选择,进行差异化的评估。

方案的流程

  1. 数据输入阶段:用户上传测试数据集到 S3 存储桶,S3 存储桶触发 Lambda 函数启动评估任务。
  2. 评估执行阶段:Promptfoo 评估工具从 S3 读取测试集进行推理,并通过 Amazon Bedrock 选用 Nova、Llama 以及其他模型对推理结果进行评估。
  3. 结果处理阶段:**评估结果自动存储并展示在评估仪表板上,支持多维度的结果分析和可视化。

方案架构图

这个自动化评估方案不仅满足了企业在模型评估过程中的多维需求,还提供了一个可扩展、可重复的评估框架,大大地提高了模型开发和优化的效率。

环境部署

1. 基础环境准备

首先通过 Amazon CloudFormation 自动创建所需的基础设施环境。这个自动化部署过程会配置必要的亚马逊云科技的服务,包括 EC2 实例、IAM 角色和安全组等。

2. 代码部署

克隆评估项目代码库:

git clone <https://github.com/tsaol/finetuning-on-aws/tree/main/model-evaluation/chatbot-evals>
cd chatbot-evals

3. 模型配置

我们将以实际用例来做一个评估比较,我们将比较两款大语言模型分别是 Claude Sonnet 3.5 和 Llama 3.2 两款大语言模型,我们将它设置为评估的对象,代码可以参考:

providers:
  - id: bedrock:anthropic.claude-3-5-sonnet-20240620-v1:0    
    label: sonnet 3.5
    config:
      region: 'us-west-2'
      temperature: 0.7
      max_tokens: 4096
  - id: bedrock:meta.llama3-8b-instruct-v1:0
    label: llama3.2 11b
    config:
      region: 'us-west-2'
      temperature: 0.7
      max_tokens: 4096

4. 评估数据集

接下来,我们需要创建测试用例。可以通过 CSV、JSON 或 YAML 文件定义,这里提供了一组自动的测试集,详见 https://github.com/tsaol/finetuning-on-aws/blob/main/model-evaluation/chatbot-evals/dateset/faq.yaml

- vars:
    user_input: "只剩一个心脏了还能活吗?"
    
- vars:
    user_input: "樟脑丸是我吃过最难吃的硬糖有奇怪的味道怎么还有人买"

- vars:
    user_input: "马上要上游泳课了,昨天洗的泳裤还没干,怎么办"

- vars:
    user_input: "我家酸奶酸了,我该怎么办,扔掉还是喝掉?"

- vars:
    user_input: "开水可以杀菌,把开水倒进自来水里,是不是就可以直接喝自来水了?"

- vars:
    user_input: "我25岁 我爸50岁 那我爸两岁就生了我啦"

5. 评估配置

在 yaml 中,我们设置了使用大语言模型进行评估,通过 prompt 设置了评估规则和打分标准:

defaultTest:
  options:
    provider: bedrock:anthropic.claude-3-5-sonnet-20241022-v2:0        

  assert:
    - type: "llm-rubric"
      value: |
        评分标准 (每项0-10分):
        1. 是否给出了合理解释
        2. 回答对不对
        3. 是否符合常理
        4. 是否符合逻辑
        5. 只用中文回答
        给出总体平均分,作为score得分, 大于9分,pass 为true
      metric: LLM

通过以上步骤,我们就完成了在亚马逊云科技云上大模型评估的环境配置。这个配置过程确保了我们能够利用亚马逊云科技的资源,同时使用灵活评估框架来系统地测试和比较不同的大语言模型。

运行评估:

promptfoo eval

任务将会以并行的方式进行推理,在推理结束后,我们可以再把结果做一个展示,并进行进一步的评估。

评估结果分析

评估的结果可以见下图:

通过率分析

Claude Sonnet 3.5 模型展现出了卓越的表现,通过率达到 100%,而 Llama 3.2 的通过率仅为 50%。这个差距主要体现在以下几个方面:

响应质量对比

  • 响应准确性:Claude Sonnet 3.5 的回答更加准确,且始终保持高水平的一致性。
  • 逻辑性:Claude Sonnet 3.5 在处理复杂问题时表现出更强的逻辑推理能力。
  • 中文表达:Claude Sonnet 3.5 能够完全用中文表达,而 Llama 3.2 则略逊一筹。

性能稳定性

从柱状图可以观察到:

  • Claude Sonnet 3.5 的表现更加稳定,波动较小。
  • Claude Llama 3.2 在不同测试用例中表现波动较大,稳定性需要提升。

用例情况

在具体的用例场景上,大模型清晰地指出了未通过用例的问题,通过大模型评估工具的可视化界面和详细的评分机制,我们能够快速识别和定位模型在实际应用中的问题。评估工具不仅展示了模型的整体通过率差异(Claude Sonnet 3.5 为 100%,Llama 3.2 为 50%),更重要的是帮助我们发现了模型在语言规范性、专业知识应用、答案完整度等多个维度的具体表现差异。这种系统化的评估方式让我们能够直观地了解模型的优劣势,从而为模型选择和优化提供清晰的方向指导。

结论

通过本次使用自动评估工具对大语言模型进行的方案,成功地将人工评估的主观性转化为可量化的客观指标,通过预设的测试用例和评分标准,系统地评估了模型的性能表现。同时,借助亚马逊云科技广泛的生成式 AI 能力,评估工具实现了灵活性和可扩展性。这种自动化的评估方法不仅提高了评估效率,降低了人工成本,更为企业在选择和优化大语言模型时提供了可靠的决策依据。这也正是我们在开篇所强调的,在生成式 AI 快速发展的背景下,一个系统化、自动化的评估方案对确保模型质量的重要性。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

参考链接

系列文章

炼石成丹:大语言模型微调实战系列(一)数据准备篇

炼石成丹:大语言模型微调实战系列(二)模型微调篇

本篇作者

曹镏

亚马逊云科技解决方案架构师,拥有 16 年企业级架构设计经验。作为生成式 AI 落地实践的专家,专注企业数字化咨询与架构设计,已成功帮助 50+ 家企业完成 AI 转型,涵盖零售、制造、金融、教育等核心行业。主导构建百卡规模的企业级 AI 基础设施,开源多个企业级 AI 项目,累计获得 1000+ Stars。目前专注于大模型在企业场景的创新应用,包括 AI 治理平台、Agentic AI、智能硬件等关键领域以及相关解决方案。热衷技术创新与分享,追求卓越工程品质,在生活中享受美食和旅行。

肖培庆

亚马逊云科技解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。现主要负责初创企业行业解决方案,曾任职于 IBM、联想、Avnet,多年大型企业网络架构和运维经验。