<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          支持跨框架評(píng)測(cè),這個(gè)是你想要的算法評(píng)測(cè)庫(kù)嗎?

          共 3634字,需瀏覽 8分鐘

           ·

          2022-11-01 15:34



          在前段時(shí)間 2022 世界人工智能大會(huì)(WAIC)上, OpenMMLab 基于新一代訓(xùn)練架構(gòu) MMEngine ,發(fā)布了全新的 OpenMMLab 2.0 視覺(jué)算法體系,詳細(xì)見(jiàn)上一期內(nèi)容。


          MMEngine 提供了強(qiáng)大靈活的訓(xùn)練引擎,以及常見(jiàn)的訓(xùn)練技術(shù),以滿足用戶多樣的模型訓(xùn)練需求。對(duì)于模型評(píng)測(cè)的需求,MMEngine 也提供了評(píng)測(cè)指標(biāo)(Metric)和評(píng)測(cè)器(Evaluator)模塊,下游算法庫(kù)基于 MMEngine 提供的評(píng)測(cè)指標(biāo)基類,實(shí)現(xiàn)對(duì)應(yīng)任務(wù)所需的評(píng)測(cè)指標(biāo)。


          OpenMMLab 是深度學(xué)習(xí)時(shí)代最完整的計(jì)算機(jī)視覺(jué)開(kāi)源算法體系,目前已涵蓋 30+ 研究領(lǐng)域,這些研究領(lǐng)域都有各自任務(wù)的評(píng)測(cè)指標(biāo)。我們希望能夠?qū)⑦@些評(píng)測(cè)指標(biāo)統(tǒng)一起來(lái),以更加易用和開(kāi)放的方式服務(wù)于更多用戶。因此,我們?cè)?MMEngine 中的評(píng)測(cè)指標(biāo)模塊基礎(chǔ)上,將原 OpenMMLab 各算法庫(kù)的評(píng)測(cè)指標(biāo)集成進(jìn)來(lái),開(kāi)發(fā)了一個(gè)統(tǒng)一開(kāi)放的跨框架算法評(píng)測(cè)庫(kù):MMEval。


          GitHub 主頁(yè):

          https://github.com/open-mmlab/mmeval

          (文末點(diǎn)擊閱讀原文可直達(dá))

          歡迎大家來(lái) star~


          中文文檔:

          https://mmeval.readthedocs.io/zh_CN/latest



          MMEval 簡(jiǎn)介


          MMEval 是一個(gè)跨框架的機(jī)器學(xué)習(xí)算法評(píng)測(cè)庫(kù),提供高效準(zhǔn)確的分布式評(píng)測(cè)以及多種機(jī)器學(xué)習(xí)框架后端支持,具有以下特點(diǎn):


          1. 提供豐富的計(jì)算機(jī)視覺(jué)各細(xì)分方向評(píng)測(cè)指標(biāo)(自然語(yǔ)言處理方向的評(píng)測(cè)指標(biāo)正在支持中)

          2. 支持多種分布式通信庫(kù),實(shí)現(xiàn)高效準(zhǔn)確的分布式評(píng)測(cè)

          3. 支持多種機(jī)器學(xué)習(xí)框架,根據(jù)輸入自動(dòng)分發(fā)對(duì)應(yīng)實(shí)現(xiàn)


          MMEval 的架構(gòu)如下圖所示:



          和已有一些開(kāi)源的算法評(píng)測(cè)庫(kù)相比,比如 Lightning-AI/metrics,huggingface/evaluate,以及近日開(kāi)源的 pytorch/torcheval,MMEval 的區(qū)別主要在于對(duì)計(jì)算機(jī)視覺(jué)領(lǐng)域評(píng)測(cè)指標(biāo)的更全面支持,以及提供跨框架評(píng)測(cè)的能力。


          MMEval 目前提供了 20+ 評(píng)測(cè)指標(biāo),涵蓋了分類,目標(biāo)檢測(cè),圖像分割,點(diǎn)云分割,關(guān)鍵點(diǎn)檢測(cè)和光流估計(jì)等任務(wù),MMEval 已支持的評(píng)測(cè)指標(biāo)可以在文檔中的支持矩陣中查看:https://mmeval.readthedocs.io/zh_CN/latest/get_started/support_matrix.html



          MMEval 安裝與使用


          MMEval 依賴 Python 3.6+,可以通過(guò) pip 來(lái)安裝 MMEval:pip install mmeval


          MMEval 中的評(píng)測(cè)指標(biāo)提供兩種使用方式,以 Accuracy 為例:


          from mmeval import Accuracyimport numpy as np
          accuracy = Accuracy()
          # 第一種是直接調(diào)用實(shí)例化的 Accuracy 對(duì)象,計(jì)算評(píng)測(cè)指標(biāo)。labels = np.asarray([0, 1, 2, 3])preds = np.asarray([0, 2, 1, 3])accuracy(preds, labels)# {'top1': 0.5}
          # 第二種是累積多個(gè)批次的數(shù)據(jù)后,計(jì)算評(píng)測(cè)指標(biāo)。for i in range(10):    labels = np.random.randint(0, 4, size=(100, ))    predicts = np.random.randint(0, 4, size=(100, ))    # 調(diào)用 `add` 方法,保存指標(biāo)計(jì)算中間結(jié)果。    accuracy.add(predicts, labels)
          # 調(diào)用 compute 方法計(jì)算評(píng)測(cè)指標(biāo)accuracy.compute()# {'top1': ...}# 調(diào)用 reset 方法,清除保存的中間結(jié)果。accuracy.reset()


          MMEval 中的評(píng)測(cè)指標(biāo)還支持分布式評(píng)測(cè)功能,關(guān)于分布式評(píng)測(cè)的使用方式可以參考教程:https://mmeval.readthedocs.io/zh_CN/latest/tutorials/dist_evaluation.html



          多分布式通信后端支持


          在評(píng)測(cè)過(guò)程中,通常會(huì)以數(shù)據(jù)并行的形式,在每張卡上推理部分?jǐn)?shù)據(jù)集的結(jié)果,以加快評(píng)測(cè)速度。而在每個(gè)數(shù)據(jù)子集上計(jì)算得到的評(píng)測(cè)結(jié)果,通常不能通過(guò)簡(jiǎn)單的求平均來(lái)與整個(gè)數(shù)據(jù)集的評(píng)測(cè)結(jié)果進(jìn)行等價(jià)。因此,通常的做法是在分布式評(píng)測(cè)過(guò)程中,將每張卡得到的推理結(jié)果或者指標(biāo)計(jì)算中間結(jié)果保存下來(lái),在所有進(jìn)程中進(jìn)行 all-gather 操作,最后再計(jì)算整個(gè)評(píng)測(cè)數(shù)據(jù)集的指標(biāo)結(jié)果。


          MMEval 在分布式評(píng)測(cè)過(guò)程中所需的分布式通信需求,主要有以下兩個(gè):


          • 將各個(gè)進(jìn)程中保存的評(píng)測(cè)指標(biāo)計(jì)算中間結(jié)果 all-gather

          • 將 rank 0 進(jìn)程計(jì)算得到的指標(biāo)結(jié)果 broadcast 給所有進(jìn)程


          為了能夠靈活的支持多種分布式通信庫(kù),MMEval 將上述分布式通信需求抽象定義了一個(gè)分布式通信接口 BaseDistBackend,其接口設(shè)計(jì)如下圖所示:



          MMEval 中已經(jīng)預(yù)置實(shí)現(xiàn)了一些分布式通信后端,如下表所示:



          MPI4Py

          torch.distributed

          Horovod

          paddle.distributed

          MPI4PyDist

          TorchCPUDist & TorchCUDADist

          TFHorovodDist

          PaddleDist



          多機(jī)器學(xué)習(xí)框架支持


          MMEval 希望能夠支持多種機(jī)器學(xué)習(xí)框架,一個(gè)最為簡(jiǎn)單的方案是讓所有評(píng)測(cè)指標(biāo)的計(jì)算都支持 NumPy 即可。這樣做可以實(shí)現(xiàn)大部分評(píng)測(cè)需求,因?yàn)樗袡C(jī)器學(xué)習(xí)框架的 Tensor 數(shù)據(jù)類型都可以轉(zhuǎn)為 NumPy 的數(shù)組。


          但是在某些情況下可能會(huì)存在一些問(wèn)題:


          • NumPy 有一些常用算子尚未實(shí)現(xiàn),如 topk,會(huì)影響評(píng)測(cè)指標(biāo)的計(jì)算速度

          • 大量的 Tensor 從 CUDA 設(shè)備搬運(yùn)到 CPU 內(nèi)存會(huì)比較耗時(shí)

          • 如果希望評(píng)測(cè)指標(biāo)的計(jì)算過(guò)程是可導(dǎo)的,那么就需要用各自機(jī)器學(xué)習(xí)框架的 Tensor 數(shù)據(jù)類型進(jìn)行計(jì)算


          為了應(yīng)對(duì)上述問(wèn)題,MMEval 的評(píng)測(cè)指標(biāo)提供了一些特定機(jī)器學(xué)習(xí)框架的指標(biāo)計(jì)算實(shí)現(xiàn)。同時(shí),為了應(yīng)對(duì)不同指標(biāo)計(jì)算方式的分發(fā)問(wèn)題,MMEval 采用了基于類型注釋的動(dòng)態(tài)多分派機(jī)制,可以根據(jù)輸入的數(shù)據(jù)類型,動(dòng)態(tài)的選擇不同的計(jì)算方式。


          一個(gè)基于類型注釋的多分派簡(jiǎn)單示例如下:


          from mmeval.core import dispatch
          @dispatchdef compute(x: int, y: int):    print('this is int')
          @dispatchdef compute(x: str, y: str):    print('this is str')
          compute(1, 1)# this is int
          compute('1', '1')# this is str



          愿景


          在機(jī)器學(xué)習(xí)模型實(shí)驗(yàn)和生產(chǎn)過(guò)程中,訓(xùn)練和評(píng)測(cè)是其中兩個(gè)非常重要的階段。


          MMEngine 已經(jīng)提供了一個(gè)靈活強(qiáng)大的訓(xùn)練架構(gòu),而 MMEval 則希望能夠提供一個(gè)統(tǒng)一開(kāi)放的模型評(píng)測(cè)庫(kù)。其中,統(tǒng)一體現(xiàn)在不同領(lǐng)域不同任務(wù)的模型評(píng)測(cè)需求都能夠滿足,開(kāi)放則體現(xiàn)為與機(jī)器學(xué)習(xí)框架解耦,以更加開(kāi)放的方式為不同的機(jī)器學(xué)習(xí)框架生態(tài)提供評(píng)測(cè)功能。


          目前 MMEval 仍處于早期階段,有很多評(píng)測(cè)指標(biāo)仍在添加當(dāng)中,有一些架構(gòu)設(shè)計(jì)可能不夠成熟。在之后的一段時(shí)間里,MMEval 將主要圍繞以下兩個(gè)方向去持續(xù)迭代完善:


          • 持續(xù)的補(bǔ)充添加評(píng)測(cè)指標(biāo),不斷擴(kuò)展到 NLP、語(yǔ)音、推薦系統(tǒng)等更多的任務(wù)領(lǐng)域

          • 支持更多機(jī)器學(xué)習(xí)框架,并且探索多機(jī)器學(xué)習(xí)框架支持的新方式


          非常歡迎社區(qū)小伙伴來(lái)體驗(yàn) MMEval,提出寶貴意見(jiàn),如果覺(jué)得好用,也歡迎給我們點(diǎn)個(gè) star~




          文末點(diǎn)擊閱讀原文,直達(dá) MMEval GitHub 主頁(yè),歡迎體驗(yàn)~




          推薦閱讀

          深入理解生成模型VAE

          DropBlock的原理和實(shí)現(xiàn)

          SOTA模型Swin Transformer是如何煉成的!

          有碼有顏!你要的生成模型VQ-VAE來(lái)了!

          集成YYDS!讓你的模型更快更準(zhǔn)!

          輔助模塊加速收斂,精度大幅提升!移動(dòng)端實(shí)時(shí)的NanoDet-Plus來(lái)了!

          SimMIM:一種更簡(jiǎn)單的MIM方法

          SSD的torchvision版本實(shí)現(xiàn)詳解


          機(jī)器學(xué)習(xí)算法工程師


                                              一個(gè)用心的公眾號(hào)


          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲草逼图 | 无码破解日韩AV无码 | 曰韩欧美综合黄色 | 蜜桃视频APP在线观看久久 | 毛片小视频 |