機器之心原創
作者:一鳴
随着深度學習逐漸從實驗室走向工業應用,各大企業都在探索構建算法架構、實現模型的工具和平台。和使用 TensorFlow 或 PyTorch 等開源框架的公司不同,曠視走向了一條自主研制的道路,建立了從算法研發到部署應用的全流程、一站式人工智能算法平台 Brain 。在 Brain 投入使用 5 年之際,機器之心在此為讀者揭開 Brain 的神秘面紗。
曠視自研人工智能算法平台示意圖
如果說算法模型是果實,那麼開發它的環境和框架就是培育果樹的土壤。盡管平時在開發中,框架和底層環境沒有那麼引人矚目,但沒有這些底層技術的支持,優秀的思路和創意也就無從實現。當前,深度學習社區基本上被 TensorFlow 和 PyTorch 兩大框架壟斷。開源框架固然具有很高的人氣和易用性,但是在國際環境變幻莫測的大背景下,是否依賴這些框架就足夠保險呢?同時,如果企業有新的想法和業務需求,開源框架能否完美實現?是否能夠無縫嵌入業務之中?這些都是 AI 企業需要思考的問題。
近日,曠視自主研發的人工智能算法平台 Brain 榮獲第六屆世界互聯網大會「世界互聯網領先科技成果」。
曠視聯合創始人兼 CTO 唐文斌在大會上表示,「2014 年我們開始研發 Brain ,它是一套端到端的 AI 算法平台,目标是讓研發人員獲得從數據到算法産業化的一攬子技術能力,不用重複造輪子也可以推進 AI 快速落地。我們的 Brain 還引入了 AutoML 技術,可以讓算法來訓練算法,讓 AI 來創造 AI。」
通過曠視從 2014 年開始自研深度學習框架,到現如今構建了一整套圍繞 AI 開發的整體系統,似乎以上這些問題可以得到一個解答。
Brain :曠視自研人工智能算法平台
很多人會誤以為這僅僅隻是曠視的一個深度學習框架,或者是企業内部開發的雲計算平台。而事實上,Brain 在曠視内部已成為了支撐算法研究和開發的整體基礎底層平台。
Brain 涵蓋了深度學習算法開發的整個流程。
具體而言,Brain 涵蓋了深度學習算法開發的所有環節。從數據的獲取、清洗、預處理、标注和存儲開始,到研究人員設計算法架構、設計實驗環節、搭建訓練環境、訓練、加速、調參、模型效果評估和産生模型,到最終的模型分發和部署應用,Brain 為曠視的研發人員提供了一站式全流程的 AI 工程解決方案。 總體架構上,Brain 可以大體分為三部分,包括作為主體的深度學習算法開發框架 MegEngine、提供算力支持的 MegCompute、以及用于提供數據服務和支持的 MegData。
據曠視方面透露,Brain 其實是國内很早就開始研發構建的深度學習系統之一。早在 2014 年,Brain 就已經開發出來,在當時作為算法框架在公司内部開始使用。其中,曠視在 2017 年拿下 3 項 COCO 冠軍,2018年拿下 4 項 COCO 冠軍,以及今年發布的全新的通用物體檢測數據集 Objects365,都與 Brain 的功勞密不可分。
人工智能平台 Brain 這一系統内部是什麼樣的?機器之心接下來會按照組成模塊進行解讀。
三大支柱模塊成就 Brain 曠視原創自研的新一代人工智能算法平台 Brain 由三大支柱構成,分别是深度學習框架 MegEngine、深度學習雲計算平台 MegCompute 和數據管理平台 MegData。
MegEngine:極緻性能
MegEngine 是 Brain 的核心組件,是為開發者和研究人員提供開發的深度學習框架。這一框架主要用于曠視内部進行計算機視覺領域的算法開發工作,包括大規模的人臉識别、圖像分割、姿态識别等。
1. 基于計算圖的深度學習框架
MegEngine 的整體架構。
從架構來說,MegEngine 分為四個層,包括計算引擎、運行時管理、編譯和優化以及編程和表示。計算引擎以 MegDNN 為核心,發揮計算作用。MegDNN 是一個基于異構架構,有着統一的交互方法的内核,可以根據設備本身啟發式地選擇最優内核,也可以讓用戶自己選擇最适合的内核進行計算。
在運行時管理層中包括兩個模塊,分别是内核調度和内存管理和優化兩大模塊。在内存管理和優化模塊中,MegEngine 采用了動态、靜态内存分配并存的方式。
在編譯層和優化層,MegEngine 使用了基于計算圖的編譯和優化方法。編程和表示層進行用戶交互,能夠使用高級編程語言(如 Python)執行用戶的命令。
2. 框架優勢
曠視的深度學習框架 MegEngine 有着多種多樣的優勢,相比于開源的大部分深度學習框架,MegEngine 具有:
- 運算速度快:MegEngine 動态、靜态結合的内存優化機制,因此速度比 TensorFlow 更快;
- 内存占用少:通過分析整個執行方案的内存使用情況,MegEngine 充分優化内存,特别是亞線性内存優化,可以支持複雜的網絡結構,自動利用部分冗餘計算縮減内存占用,可達兩個數量級,從而支持更大規模的模型訓練;
- 易用性好:MegEngine 封裝了平台細節,易于新人用戶快速上手;
- 支持多種硬件平台和異構計算:MegEngine 支持通用 CPU、GPU、FPGA 以及其他移動設備端硬件,可多卡多機進行訓練;
- 訓練部署一體化:整個框架既可用于訓練又同時支持推理,實現模型一次訓練,多設備部署,避免複雜的轉換過程造成的性能下降和精度損失。
3. 和主流深度學習框架對比
MegEngine 之所以能夠成為的核心算法框架,主要依靠其底層幾大技術。
首先,MegEngine 基于 C 開發,可幫助用戶借助編程語言進行高性能的運算執行。在框架内部,使用了目前流行的計算圖方式。和其他框架不同,MegEngine 使用的是異構架構,方便使用框架進行分布式計算。
此外,MegEngine 内部的計算以算子的形式進行,它支持多種算子節點和變量算子,包括常用的卷積、全連接、ReLU 和用戶可定制的算子,甚至可以計算二階梯度,從而進行更多底層和靈活的運算。可以說,MegEngine 在盡全力提升深度學習計算性能的基礎上,為用戶提供了靈活易用的模型構建工具,極大地提升了開發效率。
根據曠視提供的資料,MegEngine 和當前開源的主流深度學習框架——TensorFlow、PyTorch 進行了對比。
MegEngine和 TensorFlow、PyTorch 框架的性能對比。
從圖上可以看出,在主流的計算機視覺模型(Resnet50 和 ShuffleNet V1)上,MegEngine 在訓練上可以和主流框架媲美。
4. 并行計算支持
值得一提的是,MegEngine 為了提升大規模圖像數據進行處理和模型訓練的效率,在分布式計算方面下足了功夫。分布式計算中的數據并行和模型并行方式都被用在了 MegEngine 中,極大提升了模型訓練效率。 在模型并行方面,MegEngine 提供原語級别的支持,方便用戶進行模型并行設置和執行。最終,模型并行可以和數據并行模式混合使用。有了深度學習框架天生對分布式計算的支持,MegEngine 在訓練和推理效率上達到了很高的水平。
5. 原生 AutoML 支持
MegEngine 還集成了曠視最新的 AutoML 技術,對深度學習算法的各個關鍵環節進行自動化的設計、搜索和優化。這項技術以 One-Shot 方法為核心,通過一次訓練完成自動化過程,将計算代價減小至傳統 AutoML 方法的萬分之一,在可控的時間内搜索出高性能、易部署的模型結構。
曠視 AutoML 技術圖示。
相比于市場上的 AutoML 技術,曠視的 AutoML 技術有以下優勢:
- 計算代價小。傳統的 AutoML 技術常常需要多次訓練模型甚至會遍曆部分模型空間,計算代價巨大。曠視的 AutoML 技術隻需訓練一次即可得到整個模型空間的刻畫,大大減小了計算代價,隻是平常訓練代價的 1-3 倍。
- 應用範圍廣。曠視 AutoML 技術提供了一套完整的解決方案,覆蓋了大部分業務,包括活體檢測、人臉識别、物體檢測、語義分割等。
- 部署方便。曠視 AutoML 技術涵蓋了數據處理、模型訓練、模型壓縮、模型量化等流程,自動處理從數據到落地。
- 精度高。曠視 AutoML 技術在諸多視覺任務上,超過人類手工設計,達到了業界最優。
除了支持深度學習框架中所有的基本功能,MegEngine 還有很多高級功能,如支持神經架構搜索、網絡剪枝和構建低比特的小型神經網絡(基于曠視提出的 DoReFaNet)等。
MegCompute:高效靈活
有了性能極佳的深度學習框架和全面的數據平台支持,Brain 也需要強大的算力支撐才能發揮完全的能力。深度學習框架的基礎之上,曠視開發出了支撐整個平台計算的系統,稱為 MegCompute。
這是一個包括了硬件基礎設施、數據存儲和計算調度的平台。用于協助研究人員部署訓練環境、設計訓練流程、提供算力和資源分配服務、監控實驗進程、提供可視化效果展示、管理用戶權限、存儲數據等。
MegCompute 平台的整體架構。
MegCompute 的總體架構可以概括為「三駕馬車」,分别為基礎設施、數據存儲和計算。基礎設施方面,通過高性能硬件支持深度學習計算和大規模數據傳輸。在數據存儲方面,考慮到計算機視覺數據普遍為海量小文件,數據存儲平台采用了分布式對象存儲系統,具有大容量可彈性擴展的存儲能力。此外,在雲計算方面,使用精細的算力管理方式,給用戶靈活分配計算資源,同時避免算力浪費。
MegCompute會為每個用戶會分配若幹台虛拟機做開發,這稱之為 Workspace, 其中自帶了 JupyterLab 方便研究員使用;曠視還通過開發可分享的插件,方便研究員将 JupyterLab 中的内容分享給指定的同事。為杜絕浪費,Workspace 中不帶 GPU,那訓練程序需要 GPU 怎麼辦呢?
MegCompute 提供了一種新穎的動态分配使用 GPU 的方式,當需要使用 GPU 運行程序時,可使用 rlaunch 命令将程序直接分配到若幹台 GPU 運行,并可以在終端的标準輸出獲取到遠程命令執行的結果。這種方式跟任務提交相比,可以做到無縫執行,不需要将程序打包成鏡像進行分發,因為 rlaunch 可以做到跟本地擁有 GPU 類似的使用體驗,而廣受研究員歡迎。
此外,計算平台提供任務的優先級機制,讓集群資源能夠高效的利用。同時,通過 GPU 拓撲和網絡拓撲感知功能,讓大規模多機訓練的網絡更加快速和穩定,達到更高效的訓練效率。
總體而言,MegCompute 從功能上,真正将曠視自研的深度學習框架擴展到了企業級别的系統服務平台,通過連接硬件、數據和深度學習框架,将構建深度學習模型的所有環節串聯了起來。MegCompute 有以下幾大特點:
- 性能強大:MegCompute 有豐富的 GPU 計算資源,同時也支持各類硬件,可靈活高效地分配計算任務。
- 全流程覆蓋:MegCompute 支持模型構建的全部流程環節,讓研究人員能夠實現一站式的業務應用服務,滿足工業級的 AI 能力研發測試、部署上線和業務生産方面的工作。
- 彈性部署:MegCompute 采用了 Docker 容器技術,可以讓用戶彈性化地構建部署訓練環境,在不需要使用的時候直接銷毀,使得資源可以及時釋放給其他用戶,具有非常彈性的特點。
- 用戶友好:用戶使用過程中,通過可視化界面進行環境搭建和訓練設計方面的工作,也可以通過可視化的方式查看模型測試的結果,不需要關注太多的底層技術細節,使用非常方便。
- 支持多種深度學習框架:除了和 MegEngine 自研深度學習框架緊密結合外,MegCompute 也支持使用 TensorFlow 和 PyTorch。
MegData:數據綜合處理
在構建模型的時候,也需要大量的數據支持。Brain 中的 MegData 是負責提供數據方面的服務,主要有四個方面:1)數據管理;2)數據标注;3)數據處理;4)數據安全。
曠視 Brain 的核心組件 MegData。
曠視在研發過程中需要使用大量的圖像數據,因此需要一個綜合平台提供管理、标注、處理和存儲安全相關的服務。根據曠視介紹,MegData 可以提供完整的數據服務,為用戶提供了全流程的解決方案。
在标注方面,MegData 提供了數據标注相關的服務,将人工标注和輔助算法相結合,提升标注效率。經過多次的業務打磨,MegData 平台現已擁有全生命周期的項目管理平台,進一步實現 AI 助力,解放人工。另外,MegData 還将曠視原創算法引入标注平台中,利用數據輔助算法實現标注效率的大幅提升。這些标注算法都是基于雲的,可以伸縮和擴展。 在自動标注上,曠視采用了很多算法。比如,使用聚類算法,曠視可以使某項标注任務的成本下降為原有的 10%。一些标注任務通過算法輔助驗收,效率提升 150% 以上。 相比于其他同類平台,MegData 在數據層面為 AI 模型研究提供了安全、高效的數據存儲和處理方式。同時,由于它是基于雲的,具有很高的靈活性。最後,MegData 補全了 AI 算法研發中數據處理的缺失環節,使研發人員不需要花太多精力在數據層面,很大程度上提升了效率,節省了時間和研發成本。
總體而言,雖然不似其他兩個 Brain 模塊那樣引人關注,MegData 在系統中發揮着重要的功能,負責完成了深度學習訓練前很大一部分的數據管理、處理、标注和安全的工作。這些都是整個流程環節必不可少的。
自研平台驅動整體技術發展
Brain 系統凸顯了曠視在技術開發上的三個趨勢。首先,Brain 完全是自主研發的深度學習系統,涵蓋了 AI 業務的整體流程。這說明曠視能夠完全掌握核心的研發工具和平台。曠視 Brain 是為計算機視覺場景而專門研發的,這是一個以業務為導向的專業 AI 服務系統,因此曠視可以拿出很多精力,針對業務中的需求提出專門的解決方案,而新方法可以快速在實際應用中得到測試和驗證,通過業務驅動框架的發展。
最後,由于曠視對 Brain 本身具有完整的掌握能力,并且通過計算機視覺相關場景驅動 Brain 的發展,它的叠代速度非常快。當前,新算法層出不窮,企業急需要能夠快速實現算法的人工智能平台,能夠迅速将新方法投入實際的生産中。Brain 能夠快速根據新的變化進行調整,能夠為曠視在新技術的研發和應用上搶占先機,使企業牢牢占領技術高地,保持技術能力常新常青。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!