zl程序教程

您现在的位置是:首页 >  Java

当前栏目

OpenMMLab 正式支持 OneFlow 算法评测!

2023-02-18 16:49:11 时间

OpenMMLab 近期开源了一个跨框架机器学习算法评测库 MMEval。MMEval 包含了最全面、最细分的计算机视觉评测指标,可支持多种机器学习框架数据的输入,具有广泛的适用性。

在 MMEval 近期的更新中,我们新增了对 OneFlow 的适配支持。此次适配只是一个起点,之后我们还将在训练侧展开更全面的合作,敬请期待 OneFlow 同 OpenMMLab 旗下更多算法库的适配合作。

我们也非常欢迎更多的机器学习框架,同 OpenMMLab 在各个方面展开合作,强强联合,给用户带来更好的使用体验。

MMEval 介绍

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

  • 提供丰富的计算机视觉各细分方向评测指标(自然语言处理方向的评测指标正在支持中)
  • 支持多种分布式通信库,实现高效准确的分布式评测。
  • 支持多种机器学习框架,根据输入自动分发对应实现。

MMEval 的架构如下图所示:

MMEval 支持 OneFlow 评测

从 MMEval 0.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

OpenMMLab X OneFlow

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

OpenMMLab(https://github.com/open-mmlab)诞生于 2018 年,是深度学习时代计算机视觉领域最全面、最具影响力的开源算法体系。旨在为学术和产业界提供一个可跨方向、结构精良、跨站性强、易复现的统一算法工具库。

在 2021 年上海人工智能大会上,我们发布了新一代 OpenMMLab,其升级后涵盖了更广泛的算法领域和应用场景,实现了从训练到部署的全链条价值。

今年 9 月,OpenMMLab 2.0 正式亮相。我们发布了新一代训练架构 MMEngine,以统一的执行引擎,灵活支持了各算法库中 20 个以上的计算机视觉任务和半监督、自监督等丰富的训练流程。

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

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

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