新闻动态

Dynamics

首页 >  新闻动态  > 详情

OpenMMLab全新推出算法评测库MMEval

2022 世界人工智能大会(WAIC)期间,上海人工智能实验室发布了基于新一代训练架构MMEngine的视觉算法体系OpenMMLab 2.0,涵盖30多个研究领域的算法库。近日,OpenMMLab团队将各算法库原有评测指标进行集成,全新推出了统一开放的跨框架算法评测库MMEval。

MMEval能够提供计算机视觉各细分方向丰富的评测指标,可支持多种分布式通信库,实现高效准确的分布式评测,并支持多种机器学习框架,根据输入自动分发对应实现。

e6e30f4f44264725b5ed2ef8866cc12.png

MMEval的架构

和已有一些开源的算法评测库相比,MMEval对计算机视觉领域评测指标的支持更全面,并能提供跨框架评测。目前,MMEval提供了20多种评测指标,涵盖分类、目标检测、图像分割、点云分割、关键点检测和光流估计等任务。可在文档中查看已支持的评测指标:mmeval.readthedocs.io/zh_CN/latest/get_started/support_matrix.html


【MMEval的安装与使用】

MMEval依赖Python 3.6+,可以通过pip来安装MMEval:pip install mmeval。其评测指标提供两种使用方式,以Accuracy为例:

956c70f29d4d9271a5f948e7f346224.png

同时,MMEval还支持分布式评测功能,使用方式可参考教程:mmeval.readthedocs.io/zh_CN/latest/tutorials/dist_evaluation.html

【多分布式通信后端支持】

在评测过程中,通常会以数据并行的形式,在每张卡上推理部分数据集的结果,以加快评测速度。而在每个数据子集上计算得到的结果,往往不能通过简单的求平均与整个数据集的评测结果进行等价。因此,常见的做法是在分布式评测过程中,将每张卡得到的推理结果或指标计算中间结果保存下来,在所有进程中进行all-gather操作,最后再计算整个评测数据集的指标结果。

MMEval所需的分布式通信需求主要有以下两个:

• 将各个进程中保存的评测指标计算中间结果all-gather。

• 将rank 0进程计算得到的指标结果broadcast给所有进程。

为了能够灵活地支持多种分布式通信库,MMEval将上述分布式通信需求抽象定义了一个分布式通信接口BaseDistBackend,其接口设计如下图所示:

6172a4fb41edfca420435f1def75d3e.png

MMEval中已经预置实现了一些分布式通信后端,如下表所示:

a735e95c52a3c68d0a663d9d5e0e7e1.png

【多机器学习框架支持】

由于所有机器学习框架的Tensor数据类型都能转为NumPy的数组,因此,MMEval能够支持多种机器学习框架最为简单的方案,就是令所有评测指标的计算都支持NumPy。但是在某些情况中可能存在问题:• NumPy有一些常用算子尚未实现,如topk,会影响评测指标的计算速度。

• 大量的Tensor从CUDA设备搬运到CPU内存耗时较多。

• 如果希望评测指标的计算过程可导,就需要用各自机器学习框架的Tensor数据类型进行计算。

为应对上述问题,MMEval提供了一些特定机器学习框架的指标计算实现。同时,为了应对不同指标计算方式的分发问题,MMEval采用了基于类型注释的动态多分派机制,可根据输入的数据类型,动态选择不同的计算方式。

一个基于类型注释的多分派简单示例如下:

3c00d89fa42af16dac31f91526a68ca.png

【愿景】

在机器学习模型实验和生产过程中,训练和评测是其中的两个重要阶段。MMEngine已经提供了灵活强大的训练架构,而MMEval则希望提供统一开放的模型评测库。统一,体现在不同领域、不同任务的模型评测需求都能够满足;开放,体现为与机器学习框架解耦,以更加开放的方式为不同的机器学习框架生态提供评测功能。

目前,MMEval仍处于早期阶段,很多评测指标还在添加当中。接下来,MMEval将不断补充添加评测指标,逐步扩展到NLP、语音、推荐系统等更多任务领域,并努力支持更多机器学习框架,探索多机器学习框架支持的新方式。

*GitHub主页:github.com/open-mmlab/mmeval

*中文文档:mmeval.readthedocs.io/zh_CN/latest

8c677baa86b5cf8db20299a755b6b5f.png

关注OpenMMLab,了解MMEval最新动态

comm@pjlab.org.cn

上海市徐汇区云锦路701号西岸国际人工智能中心37-38层

沪ICP备2021009351号-1