乐趣区

关于机器学习:MMEval正式支持OneFlow评测

1

MMEval 介绍

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

  • 提供丰盛的计算机视觉各细分方向评测指标(自然语言解决方向的评测指标正在反对中)
  • 反对多种分布式通信库,实现高效精确的分布式评测
  • 反对多种机器学习框架,依据输出主动散发对应实现

MMEval 的架构如下图所示:

2

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

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-In…)分布式深度学习框架是基于对人工智能技术和利用倒退需要的当先数年的前瞻性思考,针对超大规模训练、分布式、异构等带来的挑战,采纳全新的“动态编译 + 流式零碎”架构,冲破了主动并行、动态调度、去中心化和全链路异步流式执行四大要害核心技术和一系列创新性难题,不仅可能大幅晋升硬件资源利用率,而且可能简略不便地实现基于异构集群训练任务的大规模分布式扩大,将零碎整体性能晋升到极致,从而升高训练老本,晋升人工智能利用程度。

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

欢送 Star、试用 OneFlow 最新版本:https://github.com/Oneflow-In…

退出移动版