版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaosongluo/article/details/85255440
笔者所在团队目前主要负责研发 AI 引擎,日常工作中常常需要解答如下问题:
- 某个版本提特征的并发是多少
- 某个版本在 5000W 规模得数据库上的检索并发是多少
- 某个版本的识别率如何
- 现在识别率最高的版本时哪个
…
虽然团队已经开发相应的自动化测试工具,而且将测试结果随着版本一起发布。但不难发现,对于 AI 引擎类产品来说,性能数据的集中化展示特别重要,跟其他数据不同的是,性能本身就是用来对比的。
先看看有没有现成的
令人遗憾的是,现有的性能数据的集中化展示方案没有适合 AI 引擎的:
- Catapult- Chromium性能看板解决方案:https://blog.csdn.net/xiaosongluo/article/details/84262679
- Logkit + InfluxDB + Grafana- 开源时序数据看板解决方案:https://blog.csdn.net/xiaosongluo/article/details/84311717
- Octopus- 腾讯自研性能看板解决方案:https://blog.csdn.net/xiaosongluo/article/details/84312162
看来得造一个轮子!
再重新整理用户场景
(高频)典型场景1:
时间:项目交付
地点:客户机房现场
人物:交付工程师
欲望:明确客户需求后,想拿到满足需求(多半会选择达到客户并发要求的基础上识别率最高的版本)的 AI 软件版本进行交付
(中频)典型场景2:
时间:产品设计/项目方案设计
地点:会议室(多半正在与他人沟通中)
人物:产品经理/技术负责人
欲望:拿到某个版本的详细性能数据进行技术方案设计或标书撰写
(中频)典型场景3:
时间:迭代开发
地点:工位
人物:算法工程师
欲望:拿到新训练的模型在测试集上的性能测试数据,验证成果
(低频)典型场景4:
时间:迭代开发
地点:工位
人物:研发工程师
欲望:完成迭代开发后,拿到新版本软件性能数据,判断是否有性能提升/下降
最后提炼需求点
我们先归总一下核心需求点。为了称呼方便,这个自研的性能看板名字先确定为 AIDash。
AIDash 主要设计于展示 AI 类产品中具有版本间比较价值的性能数据,这里有两个关键点:
- AI 类产品:做此限定,主要是为了统一被展示对象的基本逻辑,简化业务复杂度。
- 具有版本间比较价值的性能数据:做此限定是为了聚焦价值点,为特定测试集中的识别率指标、特定接口的 TPS等暂无现成展示方式又有展示需求的数据提供解决方案。
因为 AIDash 聚焦 AI 产品,所以一般可以存在三层概念:
- 产品:提供直接满足客户需求的产品或者方便集成的服务(如 HTTP 接口等)
- 算法SDK:定义某类算法问题的解决方案
- 算法模型:可理解为不同版本的算法SDK参数配置
结合用户场景,简单归纳用户需求点如下:
- 作为交付工程师,希望 AIDash 能够支持单产品多指标筛选及排序功能,方便快速找到满足交付的软件版本
- 作为产品经理/技术负责人,希望能从 AIDash 中能够一目了然的看到特定软件版本的核心性能数据,方便标书撰写以及产品规划
- 作为算法工程师,希望 AIDash 能够从展示特定算法模型的性能数据(以识别率为代表),方便对比算法模型的优化效果
- 作为研发工程师,希望 AIDash 能够展示产品集成后的性能指标(以接口TPS为代表),方便对比软件版本间的优化效果
非用户需求点如下:
- 作为测试工程师,希望 AIDash 中的数据可以根据数据类型的不同选择合适的图表形式展示数据,如识别率用ROC曲线,并发性能用吞吐量-用户数曲线,方便数据解读
- 作为测试工程师,希望 AIDash 是一个中心化后台服务同时支持以HTTP接口的方式实现数据增删查改,方便自动化测试结果接入以及后续维护
- 作为运维工程师,希望 AIDash 支持用户管理及权限管理,防止核心数据泄密
- 作为质量工程师,希望 AIDash 报表满足公司对数据测试报告的统一规范:标注清楚数据集、环境、时间、执行人等信息
- 作为 AIDash 产品经理,希望可以从 AIDash 中转跳产品发布平台进行对应版本下载,减少用户查找时间