忘記密碼
2022 世界人工智能大會(WAIC)期間,上海人工智能實驗室發布了基于新一代訓練架構MMEngine的視覺算法體系OpenMMLab 2.0,涵蓋30多個研究領域的算法庫。近日,OpenMMLab團隊將各算法庫原有評測指標進行集成,全新推出了統一開放的跨框架算法評測庫MMEval。
MMEval能夠提供計算機視覺各細分方向豐富的評測指標,可支持多種分布式通信庫,實現高效準確的分布式評測,并支持多種機器學習框架,根據輸入自動分發對應實現。
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為例:
同時,MMEval還支持分布式評測功能,使用方式可參考教程:mmeval.readthedocs.io/zh_CN/latest/tutorials/dist_evaluation.html
【多分布式通信后端支持】
在評測過程中,通常會以數據并行的形式,在每張卡上推理部分數據集的結果,以加快評測速度。而在每個數據子集上計算得到的結果,往往不能通過簡單的求平均與整個數據集的評測結果進行等價。因此,常見的做法是在分布式評測過程中,將每張卡得到的推理結果或指標計算中間結果保存下來,在所有進程中進行all-gather操作,最后再計算整個評測數據集的指標結果。
MMEval所需的分布式通信需求主要有以下兩個:
? 將各個進程中保存的評測指標計算中間結果all-gather。
? 將rank 0進程計算得到的指標結果broadcast給所有進程。
為了能夠靈活地支持多種分布式通信庫,MMEval將上述分布式通信需求抽象定義了一個分布式通信接口BaseDistBackend,其接口設計如下圖所示:
MMEval中已經預置實現了一些分布式通信后端,如下表所示:
【多機器學習框架支持】
由于所有機器學習框架的Tensor數據類型都能轉為NumPy的數組,因此,MMEval能夠支持多種機器學習框架最為簡單的方案,就是令所有評測指標的計算都支持NumPy。但是在某些情況中可能存在問題:? NumPy有一些常用算子尚未實現,如topk,會影響評測指標的計算速度。
? 大量的Tensor從CUDA設備搬運到CPU內存耗時較多。
? 如果希望評測指標的計算過程可導,就需要用各自機器學習框架的Tensor數據類型進行計算。
為應對上述問題,MMEval提供了一些特定機器學習框架的指標計算實現。同時,為了應對不同指標計算方式的分發問題,MMEval采用了基于類型注釋的動態多分派機制,可根據輸入的數據類型,動態選擇不同的計算方式。
一個基于類型注釋的多分派簡單示例如下:
【愿景】
在機器學習模型實驗和生產過程中,訓練和評測是其中的兩個重要階段。MMEngine已經提供了靈活強大的訓練架構,而MMEval則希望提供統一開放的模型評測庫。統一,體現在不同領域、不同任務的模型評測需求都能夠滿足;開放,體現為與機器學習框架解耦,以更加開放的方式為不同的機器學習框架生態提供評測功能。
目前,MMEval仍處于早期階段,很多評測指標還在添加當中。接下來,MMEval將不斷補充添加評測指標,逐步擴展到NLP、語音、推薦系統等更多任務領域,并努力支持更多機器學習框架,探索多機器學習框架支持的新方式。
*GitHub主頁:github.com/open-mmlab/mmeval
*中文文檔:mmeval.readthedocs.io/zh_CN/latest
關注OpenMMLab,了解MMEval最新動態