MMEval正式支持OneFlow评测

Posted OneFlow深度学习框架

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MMEval正式支持OneFlow评测相关的知识,希望对你有一定的参考价值。

1

MMEval 介绍

MMEval(https://github.com/open-mmlab/mmeval)是一个跨框架的机器学习算法评测库,提供高效准确的分布式评测以及多种机器学习框架后端支持,具有以下特点:

  • 提供丰富的计算机视觉各细分方向评测指标(自然语言处理方向的评测指标正在支持中)

  • 支持多种分布式通信库,实现高效准确的分布式评测

  • 支持多种机器学习框架,根据输入自动分发对应实现

MMEval 的架构如下图所示:

2

MMEval 支持 OneFlow 评测

从 MMEval 2.0 起,开始支持 OneFlow 的评测!目前已经为 7 个 Metric 适配支持了 oneflow.Tensor 作为输入。它们分别是 Accuracy,SingleLabelMetric,MultiLabelMetric,AveragePrecision,MeanIoU,F1Metric 和 EndPointError。下面以 Accuracy 为例,展示 MMEval 对 OneFlow 的评测支持。

首先需要安装 MMEval 和 OneFlow,我们可以通过 pip 来进行安装:


 
pip install mmeval
pip install --pre oneflow -f https://staging.oneflow.info/branch/master/cu112

使用 oneflow.Tensor 作为 Accuracy 的输入:

import oneflow as flow
from mmeval import Accuracy


accuracy = Accuracy()


predicts = flow.Tensor([1, 2, 3, 4])
labels = flow.Tensor([3, 2, 1, 4])
results = accuracy(predicts, labels)
# 'top1': 0.5

同时,MMEval 也添加了一个分布式通信后端 OneFlowDist,以支持 OneFlow 的分布式评测。可以使用以下两种方式来设置使用 OneFlowDist 分布式后端:


 
from mmeval.core import set_default_dist_backend
from mmeval import Accuracy


# 1. 设置全局默认分布式通信后端
set_default_dist_backend('oneflow')


# 2. 初始化评测指标时候通过 `dist_backend` 传参
accuracy = Accuracy(dist_backend='oneflow')

以下是使用 MMEval 和 OneFlow 实现分布式评测的简单示例,下述代码将放置在 oneflow_dist_eval.py 中:


 
import oneflow as flow
from mmeval import Accuracy


# 初始化 Accuracy,指定使用的分布式通信后端。
accuracy = Accuracy(dist_backend='oneflow')


for i in range(100):
    predicts = flow.randint(high=10, size=(10,))
    labels = flow.randint(high=10, size=(10,))
    # 每个进程每个 Batch 的数据都会调用 add 方法,报错指标计算中间结果。
    accuracy.add(predicts, labels)


# 调用 compute 方法,自动完成进程同步后计算准确率。
accuracy.compute()
# 清空保存的指标计算中间结果
accuracy.reset()

然后使用 OneFlow 中的 distributed 模块来启动上述代码,进行分布式评测:

python3 -m oneflow.distributed.launch \\
    --nproc_per_node 4 \\
    --master_port 1234 \\
    oneflow_dist_eval.py

3

OpenMMLab X OneFlow

MMEval 评测库是 OpenMMLab 与 OneFlow 合作的起点,之后将在训练测进行更全面的合作,敬请期待!

OpenMMLab(https://github.com/open-mmlab)诞生于 2018 年,是深度学习时代计算机视觉领域最全面、最具影响力的开源算法体系。旨在为学术和产业界提供一个可跨方向、结构精良、跨站性强、易复现的统一算法工具库。在 2021 年上海人工智能大会上,发布了新一代 OpenMMLab,其升级后涵盖了更广泛的算法领域和应用场景,实现了从训练到部署的全链条价值。

目前,OpenMMLab 已经累计开源了超过 30 个算法库,涵盖分类、检测、分割、视频理解等众多算法领域,有超过 300 种算法实现、2,400 多个预训练模型。在 GitHub 上获得超过 70,000 个标星,同时吸引了超过 1,500 名社区开发者参与项目贡献,用户遍及超过 110 个国家和地区,覆盖全国全球顶尖高校、研究机构和企业。

OneFlow(https://github.com/Oneflow-Inc/oneflow)分布式深度学习框架是基于对人工智能技术和应用发展需求的领先数年的前瞻性思考,针对超大规模训练、分布式、异构等带来的挑战,采用全新的“静态编译+流式系统”架构,突破了自动并行、静态调度、去中心化和全链路异步流式执行四大关键核心技术和一系列创新性难题,不仅能够大幅提升硬件资源利用率,而且能够简单方便地实现基于异构集群训练任务的大规模分布式扩展,将系统整体性能提升到极致,从而降低训练成本,提升人工智能应用水平。

作为一款易用、高效、高扩展、自主研发的开源深度学习框架,OneFlow引领并代表了新一代深度学习框架的技术演进和产品迭代方向,获得了国内外高度关注和认可,也得到同行和友商的研究和追随。

以上是关于MMEval正式支持OneFlow评测的主要内容,如果未能解决你的问题,请参考以下文章

OneFlow v0.6.0正式发布

OneFlow v0.4.0 正式发布

OneFlow v0.8.0正式发布

OneFlow v0.9.0正式发布

OneFlow v0.9.0正式发布

正式支持多线程!Redis 6.0与老版性能对比评测