原文链接

背景和概述

OPEA 开源平台汇集了众多生成式 AI 应用示例。对这些应用进行性能评估与分析是众多企业用户和开发者的共同需求。因此,建立一套标准的评估体系对于 OPEA 的开发者和用户而言至关重要。这不仅能够便捷地复现 OPEA 应用在不同平台上的性能表现,还能为软硬件优化提供可靠的数据分析依据。

本文将以 OPEA 中基于 RAG 技术的 ChatQnA 应用为例,介绍 OPEA 性能分析的方法论体系、完整的评估流程以及性能观测方案,旨在为 OPEA 的开发者提供参考和帮助。

OPEA性能评估的准则:

  • 版本一致性:评估应基于固定的应用版本(例如 v1.2),严禁混用不同版本的代码或脚本。

  • 开箱即用基准:性能评测应以 OPEA 的开箱即用配置(OOB)为基准,完整记录包括硬件和软件设置在内的初始状态数据。

  • 环境一致性与结果可复现性:其他用户在复现评估时,应使用完全相同的硬件和软件环境,且结果应控制在 3-5% 的误差范围内。

  • 优化评估一致性:在评估硬件优化或软件优化/增强/库(须为相同版本)的效果时,应使用相同的数据集进行对比。

OPEA性能评估流程

图片

图 1:   OPEA性能评估流程图

1. 确立方法论包括核心性能指标、数据集、评估工具、性能报告等等

2. 准备好数据集

3. 准备好压力测试工具

4. 自动化部署OPEA应用(ChatQna)

5. 压力测试中实时对系统的相关指标进行观测

6. 产出性能数据报告,微服务的延迟指标,系统利用率等等

核心性能指标KPI(Key Performance Indicator)

图片

表 1 OPEA性能评估核心性能指标

数据集Dataset

数据集在RAG系统的评估中至关重要,为了模拟实际的用户场景,我们选择使用来自 PubMed 的工业数据。PubMed 包含来自多个 NLM 文献资源的生物医学文献的引文和摘要,是使用最广泛的文献资源,包含超过 3600 万篇生物医学文章。

我们使用的数据集是 PubMed 的一个子集,包含 2390 万篇具有有效标题和摘要的文章。

每一行都是 PubMed 的一个片段,其中包括以下内容:

  • id: 片段的唯一标识符

  • title: 收集该片段的 PubMed 文章的标题

  • content: 收集该片段的 PubMed 文章的摘要

  • contents: 'title' 和 'content' 的合并

为了观察和比较 ChatQnA 流程在不同规模的数据集上的性能,我们创建了四个文件:pubmed_10.txt、pubmed_100.txt、pubmed_1000.txt 和 pubmed_10000.txt。这些文件分别包含从 pubmed23n0001.jsonl 中提取的 10 条、100 条、1,000 条和 10,000 条数据记录。

随机Random Prompt

基本上,在每一轮基准测试中,我们会发送一个从查询列表中随机选择的查询。通常,这些随机查询是基于摄入数据集的 10% 生成的。例如,如果我们导入了 pubmed_10000.txt,那么查询列表将包含来自 PubMed 数据的 1000 条记录。每个请求都将从这 1000 条记录中随机选择。

由于 pubmed_10.txt 和 pubmed_100.txt 中的记录数量有限,随机查询也将基于这些文件。然而,对于 pubmed_1000.txt 和 pubmed_10000.txt,随机查询将基于摄入数据集的 10%,分别对应 100 条和 1000 条记录。

压力测试工具Load Generator – GenAIEval

OPEA 社区的GenAIEval微服务基准测试工具,是专为微服务性能测试和基准评估而设计。它允许你基于 YAML 配置为各种服务定义测试用例,使用构建在 locust 之上的 stresscli 运行负载测试,并分析结果以获得性能洞察。

功能

  • 服务负载测试:模拟高并发级别,以测试 LLM(大型语言模型)、reranking(重排序)、ASR(自动语音识别)、E2E(端到端)等服务。

  • 基于 YAML 的配置:轻松定义测试用例、服务终结点和参数。

  • 服务指标收集:可选择收集服务指标以分析性能瓶颈。

  • 灵活的测试:支持各种测试,如 chatqna(聊天问答)、codegen(代码生成)、codetrans(代码翻译)、faqgen(FAQ 生成)、audioqna(音频问答)和 visualqna(视觉问答)。

  • 数据分析和可视化:可视化测试结果,以发现性能趋势和瓶颈。

图片

图 2:  OPEA性能评估数据报告范例

微服务延迟数据分析

通过收集每一次的评测中微服务的延迟数据,我们可能很容易地分析整个pipeline中各个组件的延迟情况并进行分析

图片

图 3:  OPEA性能评估 – 各微服务延迟数据示例

系统资源利用率

通过监控和分析各个微服务的 CPU、内存和带宽使用情况,我们可以:

  • 识别资源瓶颈: 找出系统中性能受限的组件。

  • 评估扩展能力: 判断哪些服务可以通过增加实例来提高性能。

  • 优化资源分配: 根据实际需求更合理地分配计算资源。

  • 预测未来需求: 基于历史数据趋势预测未来的资源需求,进行容量规划。

  • 指导架构设计: 为未来的系统架构演进提供数据支撑。

图片

表 2:  ChatQnA 采集各微服务的资源利用情况示例

结语

本文系统地阐述了 OPEA 应用的性能评估方法论,并以 ChatQnA 为例,详细介绍了 OPEA 完整的性能评估流程以及 OPEA Eval 工具集的核心功能与应用场景。我们衷心希望本文能够为 OPEA 的开发者提供有价值的参考,助力他们更好地理解和评估 OPEA 应用的性能特点,从而进行更高效的开发和优化工作。

注:

1. 欲了解更多关于 OPEA 开源项目的详细信息,请参阅我们的:"OPEA开源项目深度解析"

2. 关于 OPEA Eval 评估工具的具体操作步骤和使用指南,请查阅我们的另一篇文章:"用GenAIEval做OPEA应用的性能评估"

参考文献:

1. "OPEA: Open Platform for Enterprise AI," https://opea.dev (Linux Foundation).

2. "OPEA: GenAIEval" https://github.com/opea-project/GenAIEval

3.  "OPEA: ChatQna"

https://github.com/opea-project/GenAIExamples/tree/main/ChatQnA

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐