摘要:AI Benchmark旨在衡量AI模型的效能和效能。
本文分享自華為雲社群《KubeEdge SIG AI釋出首個分散式協同AI Benchmark調研》,作者:KubeEdge SIG AI (成員:張揚,張子陽)。
人工智慧技術已經在我們生活中的方方面面為我們提供服務,尤其是在影象、視訊、語音、推薦系統等方面帶來了突破性成果。AI Benchmark旨在衡量AI模型的效能和效能。KubeEdge SIG AI成員張揚和張子陽博士就AI Benchmark的困難與挑戰,以及新興的邊緣計算領域的分散式協同AI Benchmark發展現狀進行了分析總結。
深度學習技術可以利用有限的資料逼近高維函數。但我們仍未掌握模型引數、系統設定對機器學習、深度學習演演算法的學習動態的影響。目前AI Benchmark領域的困難與挑戰總結如下:
1. 學習動態難解釋:深度學習技術一定程度上是一個高維非凸優化問題,細微的變化會導致不同的優化路徑,嚴重依賴引數調整的經驗。
2. 成本高昂:在我們開啟一次訓練之後,我們必須完整的跑完整個訓練過程。完整訓練一次GPT-3模型的成本約7500萬人民幣。
3. 指標問題:在時間質量(Time to Quality, TTQ)指標上,時間質量嚴重依賴超引數的調整,同時需要解耦架構、系統和演演算法評估模組;在每秒浮點運算次數(floating-point operations per second, FLOPS)上,有半精度浮點、單精度浮點、雙精度浮點、多精度浮點、混合浮點等浮點型別。
4. 需求衝突:主要問題為1.元件基準(component benchmarks)無法在模擬器上執行,2.微基準(Micro benchmarks)可負擔,但不能模擬學習動態。
5. 有效期問題:人工智慧模型的演變和變化往往會超過人工智慧基準。
6. 可拓展性問題:AI問題的規模是固定的,不可拓展。
7. 可重複性問題:基準測試要求測試是可復現的,神經網路的隨機性會影響基準測試的復現性。神經網路中的隨機性包括:隨機種子、模型初始化、資料增強、資料Shuffle、Dropout等等。
隨著邊側算力逐步強化,時代也正在見證邊緣AI往分散式協同AI的持續演變。分散式協同AI技術是指基於邊緣裝置、邊緣伺服器、雲伺服器利用多節點分散式乃至多節點協同方式實現人工智慧系統的技術。除了以上問題外,如果考慮到分散式協同AI,還存在如邊側算力不足、雲邊網路不穩定、資料孤島等實際的約束和限制問題。
本章節首先總結當前學界與業界的分散式協同AI Benchmark,接下來對各個Benchmark展開簡單描述。
Bench Council釋出的AIoT Bench是一個基準套件,AIoTBench專注於評估移動和嵌入式裝置的推理能力,包含三個典型的重量級網路:ResNet50、InceptionV3、DenseNet121以及三個輕量級網路:SqueezeNet、MobileNetV2、MnasNet。每個模型都由三個流行的框架實現:Tensorflow Lite、Caffe2、Pytorch Mobile。對於Tensorflow Lite中的每個模型,還提供了三個量化版本:動態範圍量化(dynamic range quantization)、全整數量化(full integer quantization)、float16量化(float16 quantization)。
圖 1 AIotBench中使用模型的FLOPs、Parameters和準確率
在框架的選擇上,AIoTBench支援了三個流行和具有代表性的框架:Tensorflow Lite、Caffe2、Pytorch Mobile。
最後,在指標上,AIoTBench通過VIPS(Valid Images Per Second, 每秒有效影象)來反映得分。
圖 2 AIotBench中VIPS計算
目前,Bench Council已經發布了Android版本的AIoTBench,它包含四個模組:
1. 設定模組:使用者可以設定模型檔案的路徑和資料集的路徑。預處理引數由檔案設定。我們在預設路徑中提供了資料集、準備的模型和相應的預處理設定。新增新型號很方便。使用者只需要i)準備模型檔案並放入模型路徑,ii)在組態檔中新增該模型的預處理設定。
2. 預處理模組:讀取和預處理影象。
3. 預測模組:由於不同的框架有不同的推理API,AIoT Bench抽象了兩個介面,併為三個框架實現它們:Tensorflow Lite、Caffe2、Pytorch Mobile。prepare()介面負責載入和初始化模型,infer()介面負責執行模型推理。當用戶需要新增新的框架時,只需要根據新框架實現對應的兩個API介面即可。
4. 評分模組:記錄每次測試的準確性和推斷時間,並計算最終的AI基準測試分數。
AI Bench是Bench Council在2018年提出的適用於資料中心、HPC、邊緣和 AIoT 的綜合 AI 基準測試套件,提出了一種場景提取的基準測試方法論和企業級AI基準測試框架和套件。測試資料來源有公共開源資料集和經過保密脫敏處理的合作機構的資料集。
AI Bench框架分為資料輸入、AI問題域、離線訓練、線上推理四個部分。
• 資料輸入(data input)模組:負責將資料輸入其他模組,支援結構化、半機構化、非結構化資料,例如表格、圖形、文字、影象、音訊、視訊等等。同時,資料輸入模組整合了各種開源資料儲存系統,支援大規模資料生成和部署。
• AI問題域:AI Bench確定了最重要的AI問題領域,針對這些領域的AI演演算法的具體實現作為元件基準(component benchmarks)。並對元件基準中最密集的計算單元實現為一組微基準(micro benchmarks)。元件基準和微基準可以自由組合,每個基準也都可以獨立執行。
• 離線訓練(offline training)和線上推理(online inference)模組:構建端到端(End-to-End)的應用程式基準。首先,離線訓練模組通過指定所需的基準ID、輸入資料和批次大小等執行引數,從AI問題域模組中選擇一個或多個元件基準。然後離線訓練模組訓練一個模型並將訓練好的模型提供給線上推理模組。線上推理模組將訓練好的模型載入到推理服務中,與關鍵路徑中的其他非AI模組共同作業,構建端到端應用程式基準。
為了在大規模叢集上輕鬆部署,框架提供了部署工具,提供了Ansible和Kuberneres的兩個自動化部署模板。Ansible主要提供的是在物理機或者虛擬機器器上的1+N複製模式,Kubernetes需要提前構件好叢集,在Master節點上通過組態檔將設定下發至各個節點從而完成部署。
Edge AI Bench是一個基於場景的基準套件,是AI Bench場景基準的一部分,設定了4個典型的邊緣AI場景:自動駕駛、ICU患者監視器、智慧家居、智慧家居。Edge AI Bench提供了一個端到端的應用程式基準框架,包括訓練、驗證和推理階段。
Edge AI Bench涵蓋的場景、模型、資料集情況如下表所示。
AIIA DNN benchmark專案由中國人工智慧產業發展聯盟計算架構與晶片推進組發起。AIIA DNN benchmark專案是用於測試具有機器學習處理能力的加速器或處理器硬體、軟體以及服務的訓練和推理效能的開源基準平臺。它能幫助人工智慧研究人員採用通用標準來衡量用於訓練或推理任務的人工智慧硬體、軟體的最佳效能。旨在客觀反映當前以提升深度學習處理能力的 AI 加速器現狀,為晶片企業提供第三方評測結果,幫助產品市場宣傳;同時為應用企業提供選型參考,幫助產品找到合適其應用場景的晶片。
AIIA DNN benchmark系統架構如下:
AIIA DNN benchmark依據行業應用,區分垂直應用場景對深度神經網路加速器/處理器展開基於真實應用場景的基準測試工作。
AIIA DNN benchmark評測場景與指標如下:
DeepBench 的主要目的是在不同硬體平臺上對深度學習很重要的操作進行基準測試。儘管深度學習背後的基本計算很容易理解,但它們在實踐中的使用方式卻出奇的多樣化。例如,矩陣乘法可能是計算受限的、頻寬受限的或佔用受限的,這取決於被相乘的矩陣的大小和核心實現。由於每個深度學習模型都使用這些具有不同引數的操作,因此針對深度學習的硬體和軟體的優化空間很大且未指定。
DeepBench直接使用神經網路庫(cuDNN, MKL)對不同硬體上基本操作的效能進行基準測試。它不適用於為應用程式構建的深度學習框架或深度學習模型。
DeepBench 由一組基本操作(密集矩陣乘法GEMM、折積Conv)以及一些迴圈神經網路RNN型別組成。DeepBench的測試包括七個硬體平臺的訓練結果,NVIDIA 的 TitanX、M40、TitanX Pascal、TitanXp、1080 Ti、P100 和英特爾的 Knights Landing。推理結果包括三個伺服器平臺,NVIDIA 的 TitanX Pascal、TitanXp 和 1080 Ti。三款移動裝置 iPhone 6 和 7、RaspBerry Pi 3 的推理結果也包括在內。
DeepBench提供多種晶片的測試方法,共有以下5種型別:
1. NVIDIA Benchmarks:需指定MPI_PATH、CUDA_PATH、CUDNN_PATH、NCCL_PATH、GPU數量、精度型別等,通過編譯後,可以執行基準測試。
2. Baidu Benchmarks:需指定MPI_PATH、CUDA_PATH、BAIDU_ALLREDUCE_PATH、GPU數量等引數,之後使用mpirun執行Baidu All-Reduce基準測試。
3. Intel Benchmarks:需要指定Intel工具icc、mkl、mpi路徑,可以進行GEMM、Conv、ALL-Reduce等基準測試。
4. ARM Benchmarks:需要在64位元ARM v8處理器上編譯和執行ARM Benchmarks,可以進行GEMM、Conv、稀疏GEMM基準測試。
5. AMD Benchmarks:需要支援ROCm的平臺、rocBLAS、MIOpen等元件,可以進行Conv、RNN、GEMM基準測試。
MLPerf是一個由來自學術界、研究實驗室和行業的人工智慧領導者組成的聯盟。
MLPerf的訓練測試由八個不同的工作負載組成,涵蓋了各種各樣的用例,包括視覺、語言、推薦和強化學習。
MLPerf推理測試七種不同神經網路的七個不同用例。其中三個用例用於計算機視覺,一個用於推薦系統,兩個用於自然語言處理,一個用於醫學成像。
Jetson Benchmarks是通過高效能推理將各種流行的DNN模型和ML框架部署到邊緣側Jetson裝置中,以實時分類和物件檢測、姿勢估計、語意分割和自然語言處理(NLP)等任務作為工作負載,檢測邊緣側Jetson裝置效能的基準測試工具。
針對各類Jetson裝置,Jetson Benchmarks的指令碼會自動執行如下設定的基準測試,並得到測試結果(FPS)
• Names : Input Image Resolution
• Inception V4 : 299x299
• ResNet-50 : 224x224
• OpenPose : 256x456
• VGG-19 : 224x224
• YOLO-V3 : 608x608
• Super Resolution : 481x321
AIPerf Benchmark由鵬城實驗室、清華大學等團隊聯合提出。AIPerf Benchmark基於微軟NNI開源框架,以自動化機器學習(AutoML)為負載,使用network morphism進行網路結構搜尋和TPE進行超參搜尋。
AIPerf官方提供四種資料集: Flowers、CIFAR-10、MNIST、ImageNet-2012 前三個資料集資料量小,直接呼叫相關指令碼自動會完成下載、轉換(TFRecord格式)的過程。
AIPerf為了保證基準測試結果有效,要求測試需要滿足如下條件:
1. 測試執行時間應不少於1小時;
2. 測試的計算精度不低於FP-16;
3. 測試完成時所取得的最高正確率應大於70%;
AIPerf的工作流如下:
1. 使用者通過SSH登陸主節點,收集叢集內Replica nodes的資訊並建立SLURM設定指令碼
2. 主節點通過SLURM將工作負載分派到對應於請求和可用資源的Replica nodes中,分發的過程是並行且非同步的
3. 各個Replica nodes接收工作負載並執行架構搜尋和模型訓練
4. Replica nodes上的CPU根據當前歷史模型列表搜尋新架構,其中包含詳細的模型資訊和測試資料集的準確性,然後將候選架構儲存在緩衝區(如NFS)中以供後續訓練
5. Replica nodes上的AI加速器載入候選架構和資料集,利用資料並行性和HPO一起訓練,然後將結果儲存在歷史模型列表中
6. 一旦滿足條件(如達到使用者定義的時間),執行終止,根據記錄的指標計算最終結果後得出基準測試報告
圖 3 AIPerf工作流示意圖
Ianvs是KubeEdge SIG AI孵化的開源分散式協同AI基準測試套件,幫助演演算法開發者快速測試分散式協同AI演演算法效能,促進更高效更有效的開發。藉助單機就可以完成分散式協同AI前期研發工作。專案地址:https://github.com/kubeedge/ianvs
Ianvs專案包括如下內容:
• 基於典型的分散式協同AI正規化和應用,提供跨裝置、邊緣節點、雲節點的端到端基準測試套件。
• 與其他組織和社群合作,例如在Kubeedge SIG AI中,建立全面的基準並開發相應的應用,包括但不限於如下內容:
Ianvs的目標使用者包括分散式協同AI演演算法開發者和終端使用者。演演算法開發者可以藉助Ianvs高效地構建和釋出分散式協同AI解決方案;終端使用者則可以藉助Ianvs快速分析比較各分散式協同AI方案的效能。
1、 針對業務資料集難以獲取,資料採集與處理成本高的痛點,ianvs提供豐富AI生態,做到開箱即用。ianvs開源資料集與5+配套演演算法,覆蓋預處理、預訓練、訓練、推理、後處理全流程,零改造開箱即用。
2、 針對封閉測試環境難以跟上各類新業務孵化的痛點,ianvs提供可延伸開放工具鏈。測試環境管理實現自定義動態設定測試資料集、測試指標,告別封閉守舊的測試環境。
3、 針對全場景多正規化測試成本高的痛點,ianvs提供全場景靈活切換。ianvs測試用例管理統一不同場景及其AI演演算法架構與介面,能夠用一套工具同時相容多種AI正規化。
4、 針對個性化場景的測試用例準備繁瑣的痛點,ianvs提供低程式碼生成測試用例。ianvs測試用例管理基於網格搜尋等輔助生成測試用例,比如一個組態檔即可實現多個超參測試,降低超參搜尋時的繁瑣重複程式設計。
Ianvs同步釋出一個新的工業質檢資料集PCB-AoI。PCB-AoI 資料集是首個面向印刷電路板AoI焊點表面缺陷的開源資料集,是開源分散式協同 AI 基準測試專案 KubeEdge-Ianvs 的一部分。工作組將PCB-AoI 公共資料集同時也放在 Kaggle和雲服務上方便開發者下載。
PCB-AoI資料集由KubeEdge SIG AI 來自中國電信和瑞斯康達的成員釋出。在這個資料集中,收集了 230 多個板,影象數量增加到 1200 多個。具體來說,資料集包括兩部分,即訓練集和測試集。訓練集包括 173 個板,而測試集包括 60 個板。也就是說,就 PCB 板而言,train-test 比率約為 3:1。進行了資料增強,將影象方面的訓練測試比率提高到 1211:60(約 20:1)。 train_data 和 test_data 的兩個目錄都包含索引檔案,用於關聯原始影象和註釋標籤。
Ianvs只需一臺機器即可執行,架構圖如上圖所示,關鍵元件包括:
• Test Environment Manager:為全域性使用服務的測試環境的CRUD
• Test Case Controller:管理控制各個Test Case執行時的行為,比如生成和刪除範例
• Story Manager:測試用例的輸出管理和展示,包括排行榜和測試報告生成
KubeEdge-Ianvs專案規劃路標如下圖:
也歡迎關注Ianvs專案,持續獲得第一手獨家公開資料集與完善基準測試配套。社群也持續募集在Ianvs專案上的合作伙伴,共同孵化開源專案、研究報告及行業標準等。開源專案GitHub地址:https://github.com/kubeedge/ianvs
AIoT Bench https://www.benchcouncil.org/aibench/aiotbench/index.html
AI Bench https://www.benchcouncil.org/aibench/index.html
Edge AI Bench http://www.benchcouncil.org/aibench/edge-aibench/index.html
AIIA DNN Benchmark http://aiiaorg.cn/benchmark/zh/index.html
DeepBench https://github.com/baidu-research/DeepBench
MLPerf https://www.nvidia.com/en-us/data-center/resources/mlperf-benchmarks/
Jetson Benchmarks https://developer.nvidia.com/embedded/jetson-benchmarks
AIPerf https://github.com/AI-HPC-Research-Team/AIPerf
Kubeedge-Ianvs https://ianvs.readthedocs.io/en/latest/index.html