天天看點

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

自 2015 年底谷歌開源深度架構 TensorFlow 以來,越來越多的科技巨頭、創業公司注重架構的投入與研發。而商湯科技作為國内 AI 創業公司的代表,自創辦開始就走在自研深度學習架構的道路上。

過去幾年,我們能夠或多或少的聽到商湯深度學習架構 SenseParrots 的資訊,但因為該架構并未開源而無法有系統性的了解。在不久之前的 WAIC 2019 開發者日深度學習架構分論壇上,商湯科技聯合創始人林達華教授首次對外系統性的介紹 SenseParrots,解讀了該自研架構的核心技術子產品。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
點此檢視完整視訊

以下是機器之心對林達華老師演講内容的梳理:

各位朋友,非常感謝機器之心今天舉辦這個論壇,讓對深度學習架構感興趣的朋友能夠彙聚在黃浦江邊一起共論深度學習未來發展。今天我也非常有幸在這裡跟大家分享商湯科技這方面的工作。

今天,我想利用這個機會跟大家講一個故事,一個關于商湯原創的故事。

在這個故事裡,我将向大家分享我們如何走上自己研發深度學習架構的道路,如何一步步地把這樣一個技術架構發展成為一個工業級的算法生産平台,為商湯以 AI 技術賦能百業的願景提供有力的支撐。

在過去的這幾年,人工智能技術突飛猛進地發展,給我們的社會、生活帶來了巨大的變化。但是人工智能的成功,在我看來不是單一要素的結果。在這個成功的背後,它是深度學習算法的改進、GPU 提供的高性能算力,以及大資料這三個重要的要素曆史性的彙聚在一起,所産生的爆發。

如果我們回顧深度學習在過去七八年波瀾壯闊的發展曆史,我們會看到這背後有一系列的标志性事件。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

在 2012 年的時候,AlexNet 獲得了 ImageNet 比賽的冠軍,震驚了整個計算機視覺。在此之後,很多的研究小組投入到深度學習模型結構的研發,一系列更加先進的模型結構湧現出來,把圖像識别的準确率提高到一個曆史性的高度。到了 2017 年,深度學習在自然語言領域取得了新的突破性的進展。到了 2019 年,從頭開始訓練的 AlphaGo Zero 橫空出世。

如果我們從一個更長的時間尺度來看,我們會看到,這一系列成功故事的背後還蘊含着另外一層重要的趨勢,就是它們所需要的計算能力的指數式的增長。從 AlexNet 到 AlphaGo Zero,在短短的五六年時間裡面,對算力需求增長了超過三十萬倍,可以說這幾年深度學習的成功,人工智能的爆發,在一定程度上就是把算力連接配接到有價值的産業應用所促成的結果。

而深度學習架構就是這種連接配接最核心的樞紐。

商湯也在這一個人工智能浪潮裡面,取得了巨大的成功。在過去幾年走到今天,成為了人工智能領域領先的企業,而這背後最重要的核心,在我看來就是兩個字,原創。

在 2012 年的時候,當時 CVPR 總共隻有兩篇是關于深度學習的,而這兩篇都來自于我們實驗室。到了 2013 年,ICCV 有八篇 paper 關于深度學習,其中六篇來自于我們實驗室。正因為我們實驗室把深度學習引入計算機視覺的先驅性,我們在 GTC 2016 年被評為全世界深度學習十大先驅的實驗室之一。我想這段小曆史,也能夠很好的诠釋了商湯人所說的原創精神。

原創之路風光無限,但是它的背後也蘊含了無限的艱辛,在我們一開始做深度學習的時候,那時候的環境和現在非常不一樣,沒有 TensorFlow、沒有 PyTorch、連 GPU 都沒有。在那個時候,我們是依靠着人工手寫的一行行 C++代碼,完成整個神經網絡的計算。每一個模型的訓練都需要一兩個月的時間。

正是在這樣一個艱辛的環境下面,我們打開了把深度學習應用于計算機視覺的道路。也正是在這樣一個艱辛的環境裡面,我們深切的體會到一個好的架構對于 AI 基礎核心性的作用。于是 2014 年,從商湯科技創辦的第一天開始,我們就下定了決心要走自研深度學習架構的道路。

SenseParrots 發展曆程

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

我們把自己研發的深度學習架構,命名為 Parrots,這背後寄托了我們對它良好的祝願,聰明、美麗而又能夠自由的飛翔。

從那時候開始,Parrots 跟商湯共同成長,經曆了五年的發展。2015 年的時候,幾乎與 TensorFlow 同時,我們釋出了第一版的 SenseParrots。那時候它已經具備了多機多卡聯合訓練和多路徑執行的領先業界的特性。之後又經過了三年的發展,我們于去年内部釋出了 SenseParrots 的第二代。在這一代它不但具有了一系列更加重要的特性,具備了更豐富的能力和更高的性能,而且也逐漸成為了商湯賦能 AI 産業的戰略支撐。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

首先,簡單的回顧一下我們第一代(三年前)SenseParrots。SenseParrots 在 2015 年出來的時候,已經具備了超越當時開源架構的卓越性能,它在業界率先實作了在 64 個 GPU 上接近線性的拓展。而且它通過極緻的記憶體優化,允許一個超大型的模型在單個 GPU 上進行訓練。

正是在這樣一個架構上面,我們訓練出了 1207 層的超大型卷積神經網絡,這個網絡就叫 PolyNet,取得了當時圖像識别性能的世界記錄,并且把這個記錄保持了一年時間。在這樣強有力的網絡支援下,我們在一系列的比賽,包括 ImageNet、ActivityNet,取得了一系列的冠軍。

雖然我們取得了一些成績,但是我們說,深度學習、人工智能這個領域是一個快速發展的領域,如果我們不能夠有效的把握這個領域發展的趨勢,有一天我們會落後于時代發展的潮流。從 2015 年開始,我們繼續觀察深度學習的發展,發現這個領域有一個根本性的重要的變化,就是深度學習技術已經走出了實驗室,走向了更廣泛的産業落地。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
與此同時,在技術層面,也發生了很多深刻的變化。

  • 首先,越來越多的研究員,越來越多的工程師,開始使用動态模型來表達複雜的計算邏輯,而不再依賴于靜态的網絡結構;
  • 深度學習模型開始走出了實驗室的機房,落地到了越來越多樣化的裝置裡面,包括車載裝置、手機攝像頭、機器人等;
  • 我們對于算法的需求,從單一的追求大模型、高精度,變成了去追求更重要更有價值的事情,就是在真正的産品上落地,是以在這個時候我們會更加關注性能跟成本的平衡。這樣新的追求下面,一系列新的成果,包括專門為移動端設計的 MobileNet,包括量化壓縮等降低模型成本的技術,成為了熱門的技術。
  • 最後,我們的深度學習研發是通過研究員進行的。是以,研究員的生産力制約了我們這個領域的發展。為了提高研究員的研發效率,越來越多的自動化方法應運而生,包括網絡結構搜尋,包括自動設計損失函數。

是以歸納起來,在過去這幾年的發展,一個很重要的趨勢,就是我們從單一的性能追求變成了更加多元的價值追求。這樣多元的價值追求,它給深度學習架構的發展提供了一個巨大的空間。與此同時我們也看到,國際主流的開源的平台,包括 TensorFlow、PyTorch,也逐漸成熟,形成了成熟的社群生态。而且它們的性能也能滿足大部分正常應用的需求。

可是為什麼在這樣的情況下,我們依然要堅持自主研發深度學習架構的道路?這是因為我們在産業落地過程中發現,這些開源的架構主要是面向普及應用進行研發的。真正的 AI 工業化應用面前,它們依然有着巨大的差距。

在商湯内部的工業化的産業落地的業務裡面,我們經常要表達邏輯非常複雜的模型,要把這個模型在數百張、上千張的 GPU 的大規模并行環境中進行訓練。這樣的環境裡面,開源架構不能夠為我們提供足夠的性能。另外我們要把我們訓練出來的模型,放在很多樣化的裝置裡面,各種各樣的手機、IoT 裝置、機器人。而現有的開源架構,對于多元化的裝置的支援是非常有限的,嚴重不足的。而且它們訓練出來的模型,離投入具體的業務場景的部署依然有着非常長的路要走,中間要經曆非常複雜的環節,而這種複雜的環節,從根本上制約了我們研發的效率和疊代的速度。

我們商湯的願景,是要以 AI 技術賦能百業,是以我們别無選擇,必然要面對這樣的挑戰。在這些問題對于我們來說是巨大的挑戰,但是對于自研深度學習架構來說也是一個重要的機遇。

商湯經過過去将近五年的發展,已經把業務拓展到了十幾個不同的業務線,我們給數以百計的大型的企業進行 AI 産業賦能,正是這樣廣泛而深度的落地實踐給深度學習架構的研發提供了非常豐沃的土壤。在這個土壤上面,我們能深切的認識到 AI 産業化第一線的需求和最大的痛點是什麼。在這樣的土壤上面,我們走出了自己差異化發展的道路。是以産業落地的過程當中,我們為下一代深度學習架構,定義了新的發展目标。具體來說有三點。

  • 第一,就是我們要支援商湯業務範疇裡面的工業級的應用,其中包括很多具有非常複雜的動态邏輯的大規模模型的并行訓練。
  • 第二,我們在我們衆多的多元化的落地場景裡面,對我們的模型進行極緻優化,建構我們在這些場景裡面的核心競争力,這不僅是算法精度,也包括模型運作的性能。
  • 第三,就是剛剛說到的,我們也非常關注研究員的生産效率,是以在我們新一代的訓練架構研發裡面,非常重要的一個目标就是關注生産力的提升。通過把資料采集、模型的訓練和部署,以及到最後在業務場景上面應用的全鍊條進行打通,聯合優化。這樣能夠非常有效地提高研究員的生産效率,加快我們産品疊代的速度。
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

這就是現在商湯的整個的平台的技術架構。我們看到最底層是我們的基礎系統,它提供包括存儲、網絡、虛拟化、排程等基礎系統的能力。在這個系統基礎之上,我們建立了我們新一代的 SenseParrots,它包含了從表達、編譯與排程、計算、通信以及最終連接配接到模型部署的一系列的關鍵技術子產品。

再往上,我們建構了算法工具鍊,它沉澱了商湯在這過去五年所凝練出來的很多業界最先進的算法。最上層是我們的垂直應用平台,通過對于這些算法進行組合、重構,我們構造出了适應各個行業落地的垂直平台,真正的賦能百業。

關鍵技術子產品解讀

接下來我将對 SenseParrots 的一些關鍵技術子產品做一個簡要的講解。

動态編譯與排程

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

SenseParrots 的核心是一個動态的編譯與排程引擎,這也是 SenseParrots 最重要的技術特色。當一個計算過程進來的時候,我們通過這樣一個引擎,首先把它動态地實時編譯成為可以執行的中間代碼,然後通過一個可以高并發的執行引擎,在大規模的并行環境中執行。

我們知道現在主流的訓練架構有兩種,一種是對于靜态的網絡結構進行預編譯,讓它能夠真正大規模的并行;另外一種就以 PyTorch 為代表,對一個動态的計算過程進行解釋性的運作。

而 SenseParrots 在這一點上面,有所不同,它走的是動态實時編譯的道路。所有的代碼,都是在運作過程當中即時編譯,并且放到引擎上大規模地并行執行。這就讓它具備了像傳統的靜态深度網絡的伸縮性,同時也具備了當代的動态程式設計模型的靈活性。達到了這兩者最佳的組合。

從上圖我們可以看到,在很多的主流的模型上面,我們相比另外一個原生支援動态模型的架構 PyTorch,有了一個明顯的性能提高,尤其是在 64 卡大規模并行的環境下。

核心計算庫

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

對每一個算子的具體執行,有一個我們自己研發的核心計算庫 PPL(Parrots Primitive Library)。在這個計算庫裡面,我們對于超過一百個算子在十多種不同的架構上進行了極緻的優化,它們支援了很多商湯業務裡面非常重要的算子。

我們可以在這裡看到,在多個不同的架構上面,對多個不同的算子我們取得了比原廠提供的算子服務顯著的高性能。經過過去幾年的疊代,我們的計算庫達到了真正的工業級的可靠性,正在支援商湯全線産品的落地。

算子編譯工具鍊

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

剛才說到對這一百多個重點的算子,我們手工進行了極緻的優化。但還有很多的算子我們沒有足夠的人力進行同樣深入的優化,是以我們同時建設了一套算子編譯工具鍊。通過這個鍊條,我們可以對于長尾的算子進行優化,這個鍊條內建了很多種不同的優化方式,保證了自動輸出的算子依然具備了具有競争力的高性能,而且也大大的提高了算子優化的效率。

核心通信引擎

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

除了計算以外,對于并行訓練來說另一個重要的核心的元件,就是通信。

在商湯内部的訓練架構裡面,我們并不依賴外部提供的通信庫。我們有自己的核心通信引擎,裡面實作了一系列的領先的先進的性能,包括通過塊狀稀疏;還有通信的延時合并,能大大地節省通信量,提高了在大規模并行情況下的通信效率。

此外,我們通信庫還提供了很多與生産環境緊密關聯、非常有用的性能,包括我們對于兩萬個 GPU 的大型叢集提供實時的性能檢測。在這時候我們看到哪個 GPU 變慢哪個 GPU 變快了,實時地調節訓練任務的部署;而且它允許動态的增删裝置。大家可以想象,在一個超大規模的叢集裡面,各種單獨的裝置變慢或者故障,是時常發生的事情,我們不能讓這樣的故障讓大型的訓練任務被停下來,是以我們提供了動态裝置調整的功能。

這樣的通信引擎支援下,我們實作了在 512 卡同步進行訓練的時候 86% 的并行效率。

部署工具鍊

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

在模型訓練出來之後,最後的一個環節就是把訓練出來的模型部署到業務場景。在這裡面其實是有一系列工序的。如果在實驗室發 paper,我們不需要做這樣的事情,但是在一個工業生産環節,這裡面每個環節都是必不可少、非常重要的。

是以 SenseParrots 還提供了一系列的工具,包括模型量化工具;部署模拟器,它能夠在訓練過程中模拟模型在各種裝置上性能;還提供了專用的網絡結構搜尋的工具,在特定計算限制條件搜尋下一個最高性能的模型;還提供了包括模型剪枝壓縮、模型轉換等工具,讓訓練出來的模型能夠無縫的銜接到我們生産部署的環境中。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

正是在這一系列的工具的支援下,我們建立起來了新一代的 Parrots。在這個上面,我們使用了 512 張 V100,獲得了迄今為止業界最快的訓練的速度,實作了 1.5 分鐘訓練達到 90 輪(epoch),在業界率先實作了每秒訓練一輪的訓練速度,這大大加快了我們内部大型模型的疊代速度,也提高了商湯的核心競争力。

端上訓練

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

除了技術性能的提升之外,我們也在多個層面、多個領域,進行積極的創新,走自己不同于别人的道路。比如現在主流的 AI 研發主要是把模型應用在這些裝置上面進行推理。但是我們也開始了在端上進行訓練的研發,在業界率先落地了我們第一個在端上進行訓練的架構,現在已經投入到實際産品當中使用。

AI 內建研發環境

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

最後一個,這是一個上層應用架構,但是它對于提供 AI 研發的生産效率至關重要。正如剛才提到的,在工業化的 AI 生産環境裡面流程非常複雜,需求多樣。在這個時候,如果用傳統的方式去運作整個 AI 研發的流程是非常低效的。是以我們也研發了這個 AI 內建研發環境,它具有全生命周期的管理能力,內建了很多模型生産的工具群組件,能夠自動化地執行研發和業務流程。而且它為研究員提供了一個一站式的非常友好的研發環境,大大提高了他們的工作效率。

開源設想

正如我剛才所說,商湯内部的平台研發主要專注于工業級的産業化賦能。但是我們在研發的過程當中,也從社群裡面獲益。我們深信,跟開源社群的互動和緊密銜接,是商湯平台未來持續具有生命力的活力的源泉。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

是以從去年開始,我們在逐漸設想了一個開源的路線,整個開源路線可以分為三步,是一個從外到内三步走的過程。我們會首先在算法層面進行開源,然後逐漸深入到一系列的外圍工具,最後我們在合适的時候,會把基礎架構的一些技術開源出來。

商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀
商湯自研訓練架構SenseParrots首次亮相,林達華全面解讀

剛才提到了開源,我們已經有了實實在在的工作,以商湯的聯合實驗室 MMLab 開始我們逐漸把這幾年積累下來的很多業界學界領先的算法開源出來,包括我們開源了 MMCV、MMDetection 等一系列的開源庫,這些融會了商湯以及聯合實驗室過去幾年研究的精華。其中 MMDetection 目前已經有超過六千顆星,在學界已經形成了非常廣泛的影響。

AI 模型生産的未來趨勢

正如我剛才所說,技術的發展,最重要的就要把握未來的趨勢。我們自己判斷 AI 的發展,必然會經曆三個主要的發展階段,從實驗室走向大規模的工業賦能,然後從工業賦能走向全社會。我們憧憬,未來十年 AI 的發展一定會讓我們每一個行業每一個人都能從 AI 的技術賦能中獲益,把整個社會連接配接起來,成為整個社會的基礎設施,這就是我們所說的 AI 的普及。我們已經經曆了從實驗室到工業化的道路,我們面向未來就是從工業化到普及化邁進。

具體來說,我覺得有三個重要的趨勢想向大家分享。

  • 首先是随着隐私保護的加強與資料價值的彰顯,AI 模型的生産形态将會從集中訓練逐漸向多主體的形态演進,這裡每個主體各自擁有自己的資料和模型,與其它主體進行互動,而聯邦學習正是這個長期趨勢的起點。
  • 第二,現在商湯内部已經形成了企業内的 AI 生産鍊的分工,我們相信随着這個技術的發展,AI 将成為一個社會性的大規模分工産業。就像幾十年前內建電路一樣,當時隻是一個小的實驗室可以完成的一個流程,現在變成了非常大範圍的社會分工。而 AI 同樣将走這樣的道路,每個環節都将孕育出一大批富有競争力的企業,這些企業之間,将通過标準化的協定進行溝通。
  • 第三,随着 AI 更加廣泛的産業落地,它将進入到更多的裝置,更多的場景,連接配接更多的人,進而構成一個更加豐富多彩的 AI 世界。

最後我們憧憬十年之後,在我們的世界裡面,AI 将會無處不在。在這樣的世界裡面,AI 不會取代人類,但是它将在我們的生活,在我們的工作,在我們的世界的方方面面,成為我們最可信賴的助手。我們正在朝着這樣的願景,朝着這樣的目标努力,也希望與在座的各位共勉,謝謝大家。

本文為機器之心編輯,轉載請聯系本公衆号獲得授權。

繼續閱讀