天天看點

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

全新的 MindSpore 1.5 來啦,這次它有了中文名:昇思。從 8 卡訓練 600 億參數模型,到釋出電磁仿真、藥物分子模拟等科學計算套件 MindScience,這次,昇思 MindSpore正探索深度學習架構的未來。

從去年 3 月份正式開源,現在經過 1 年半的完善、衆多社群小夥伴送出的代碼改進,MindSpore 也已步入成熟。那麼我們對它的印象是什麼樣的呢?是好用的自動微分機制,還是超便捷的全自動并行訓練,亦或是具有很強可讀性的模型代碼?

現在,MindSpore 正式推出 1.5 版本,并釋出了中文名:昇思。

小夥伴們可别以為這隻是正常的一次版本号更新,新版本繼續在自動分布式訓練上給出新的成績, 32 塊卡就能訓練 2420 億參數量的模型(稀疏模型),在這之前可是做不到的。

昇思 MindSpore 也首次探索将科學計算與深度學習結合,将數值計算與深度學習相結合,推出了MindScience。利用 DL 架構支援電磁仿真、藥物分子仿真等等,我們看到的就是未來的科研吧。

當然,MindSpore 1.5 還有很多特性,例如大規模分布式訓練的叢集調優、完善控制流的使用等等。但我們在這篇文章中,将重點關注昇思 MindSpore在科學計算及并行訓練上的新突破。

MindSpore 1.5 新特性:

https://gitee.com/mindspore/mindspore/tree/r1.5
為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

昇思MindSpore:計算與模型的藝術

我們在看到「昇思」這個名字時,首先眼前浮現的是代表着「思」的深度學習模型,它們強大的能力确實已經慢慢接近「深度思考」這一範疇了。其次是「昇」,它也許代表的昇騰硬體平台,代表着最強大的計算力。這樣一來,模型加算力,的确就是深度學習架構最關心的東西了。

确實早一段時間釋出的兩千億參數大模型鵬程.盤古 ,就已經展現出了 昇思 MindSpore那種模型與計算相結合的藝術。它在訓練過程中能自動将模型切分到不同的裝置,并高效地利用兩千多張計算裝置完成并行訓練。

在 MindSpore 1.5 中,同樣有很多特性展現了這種藝術。

當昇思将計算與模型作為基礎設施,這一藝術就又能催生出科學計算方面的新能力,為電磁仿真、藥物分子設計等科學研發提供最強大的基礎能力。

當我們擁有強大的混合專家模型(MoE)時,沿着這種思路,MindSpore 1.5 推出了 MoE 的專屬并行訓練方法,充分利用異構硬體,8 卡就能訓練六百多億參數量的模型。

未來:為科學創新插上模型的翅膀

科學創新,在于發掘現象背後的原理,而自然現象、社會現象本質上是一系列資料。例如萬有引力定理,研究者通過大量實驗和觀察發現引力與品質成正比,與物體距離的平方成反比。尋找資料的内在關系,這可不就是機器學習模型最擅長的麼?

深度學習架構的核心,自動微分已經比較完善了,而 昇思MindSpore在大規模,多種裝置的訓練上又有獨特的優勢。這兩部分基礎設施能為科學研究提供更大的助力,是以作為架構未來的發展方向之一,昇思 MindSpore 将重心放在科學計算領域 。

昇思 MindSpore團隊計劃面向 8 大科學計算行業打造 MindScience 系列套件。這些行業套件包含業界領先的資料集、基礎模型、預置高精度模型和前後處理工具,加速科學行業應用開發。 

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

目前,昇思 MindSpore團隊推出面向電子資訊行業的 MindElec 套件和面向生命科學行業的 MindSPONGE 套件,分别實作了電磁仿真性能提升 10 倍和生物制藥化合物模拟效率提升 50%。 

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來
  • MindElec v0.1:将 CAD結構轉化為張量,并通過電磁仿真AI 模型進行訓練,以實作電磁仿真能力; 
  • MindSPONGE v0.1:第一個根植于 AI 計算架構的分子模拟工具,目前已内置 Molecular CT、SchNet 等模型,可高效進行分子動力學模拟; 

科學仿真用上 AI 架構及模型,最明顯的效果就是性能上的提升。MindElec v0.1 在手機電磁仿真領域已取得技術突破,仿真精度媲美傳統科學計算軟體,同時性能提升 10 倍。

抗生素的出現讓人類的壽命延長了數十年,然而,由于細菌的耐藥性變強,人類迫切需要尋找到下一代抗生素——抗菌肽(作為一種可以有效殺滅耐藥性病原菌的肽類物質)。鵬城實驗室基于昇思 MindSpore 開發的鵬程.神農平台,具有強大的氨基酸序列生成能力,其利用鵬程.盤古大模型完成預訓練再通過 finetune 生成新的氨基酸序列,有望極大提升新型抗菌肽的發現速度。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

推出親和算法庫——MindSpore Boost

衆所周知,訓練是一個複雜的計算過程,端到端訓練包含很多步驟。如下圖所示,深度學習訓練過程本身是個高備援的計算過程,需要圍繞多個子產品分别進行計算優化,最終實作不同AI場景下端到端訓練的效率優化。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

端到端訓練要素

在MindSpore 1.5版本中,華為中央媒體技術院與MindSpore共同推出親和算法庫MindSpore Boost 1.0,目标都是為了在不同的AI場景下,保持使用者訓練精度的同時,為使用者提供高效的訓練體驗,包含資料、網絡、通信、訓練政策和優化器等次元的加速算法,架構圖如下所示。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

MindSpore Boost 1.0架構

除了親和算法外,我們還提供簡易模式,進行算法封裝,為使用者提供三種不同層級的選擇,即O1/O2/O3,随着層級的遞增,其加速比例增加,這種模式下,使用者無需了解算法細節,僅需要在調用Model的訓練入口時,打開加速開關和選擇加速層級即可,使用方法如下圖所示。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

簡易模式使用示意

當 AI 基礎設施已經完善到一定程度,需要大量計算力、需要處理大量資料的科學創新理應能利用上這些資源。未來,不應該隻有深度學習模型能利用上這些便利,傳統科學計算、數值計算領域的創新同樣需要它們,而MindScience 正是邁出這一步的關鍵。

也許以後在MindScience這樣科學套件的幫助下,人類探索真理,追求真實的腳步會越來越快,也就需要更大的計算力,更快的并行速度,以及更強的模型能力。

32 卡跑 2 千億參數模型國産架構是專業的

很多算法工程師在複現論文或者模型時,可能最開始會考慮 TensorFlow 或者 PyTorch 這樣的架構。然而當我們驗證了模型效果,确定要用在産品上時,通常需要擴大模型的參數量與資料量,并期待能獲得更好的效果。

然而很多模型,尤其是自然語言處理領域的模型,大到上億參數量後,就需要很多工程來獲得更好的分布式訓練效果。實際上,TensorFlow 和 PyTorch 本身隻支援簡單的資料并行,它們是滿足不了大模型的。而像 Mesh、Lingvo這樣的官方并行訓練庫,小編認為它們還是挺難用的,需要不少的開發、适配工作。

國内的深度學習架構在這一點上就做得特别好,如昇思 MindSpore,之前在訓練 2000億參數量的鵬程.盤古大模型時,就采用了架構自帶的自動分布式訓練政策。也就是說,除了簡單的資料并行,模型算子并行、優化器并行、Pipeline并行、中間結果重計算都在 昇思 MindSpore的考慮範圍内。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

上圖是簡化版的盤古腳本,其中紅色加粗字型表示的在 昇思 MindSpore中的并行政策。将紅色加粗字型去掉,則是單機腳本。

這些并行優化全都由昇思 MindSpore自行完成,這可會節省很大一筆功夫,遠比 PyTorch或 TensorFlow實作大規模分布式訓練簡單得多。昇思MindSpore并沒有滿足于自動并行政策,在最近釋出的 1.5 中,又新增了多種并行調優,訓練起來更友善。

模型:MoE 專屬并行

Transformer 目前已經成為了深度學習模型的基礎元件,之前加大模型的思路就是,在基礎元件上單純地增加模型層數與隐藏層寬度,并期待模型在訓練中能充分利用所有參數。但是混合專家模型(Mixture of Expert,MoE)提出了另一種解決思路,即模型中每一個專家獨立地去處理資料,并最後一起統籌結果。

MoE 已被驗證過在多種任務上有優異的效果,是超大規模模型的基礎結構。

如下圖所示,Transformer 中每層是由Multi-Head Attention 和 FeedForward(FFN) 這兩個基礎結構組成的。将 FFN 看做是一個專家(expert),MoE 結構是由多個專家并行組成,并由路由(router)負責将資訊分發給各個專家,最後對各個專家的輸出進行權重和獲得最終結果。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

其中比較關鍵的是路由政策,一般我們可以讓模型學會分發到最能處理這類資訊的單個專家或者多個專家。但也正是這種路由政策,正常的并行政策并不好處理。

MindSpore1.5已實作了 MoE 的結構和專家并行的功能,允許多專家在多裝置上并行執行。如下 Router 經過 AllToAll 算子将 需要計算的資訊配置設定到各個裝置上的專家進行計算,而後,又通過 AllToAll 彙聚計算後的結果。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

硬體:NPU/GPU/CPU異構并行

一般我們的 GPU/NPU 記憶體都不會特别大,單塊 64GB 已經算是非常大了。但是伺服器的CPU記憶體可以特别大,TB 這樣的量級都能上得去。是以如果在并行訓練中能利用這些資源,做異構的計算,那麼不妨為擴充大模型的一種可行途徑。

在 MindSpore1.5 中,異構并行會分析計算圖上算子記憶體占用的大小和計算密集的程度,将記憶體消耗巨大且适合 CPU 處理的算子切分到 CPU 子圖,将記憶體消耗較小且計算密集的算子切分到GPU/NPU子圖。

昇思 MindSpore通過協調不同子圖進行訓練,能夠充分利用異構硬體特點, 有效的提升單卡可訓練模型規模。隻有這樣充分利用伺服器的硬體資源,才能盡可能訓練大的模型。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

對于大規模預訓練模型,其主要的瓶頸往往在于參數量過大,裝置顯存無法存放下來。Mindspore1.5 版本在處理大規模預訓練網絡時,可以通過優化器異構将優化器指定到 CPU 上,以減少優化器狀态量顯存占用開銷,進而擴充可訓練模型規模。如下圖所示,将 FP32 的 Adam 優化器放置于CPU 上進行運算,可以減少 60%多的參數顯存占用。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

實驗:幾張卡也能訓練超大模型

MindSpore團隊使用 MoE 結構擴充鵬程.盤古模型,同時應用了上述兩種技術。如下圖所示,優化器相關的狀态及其計算放到 CPU 端,而模型計算相關的過程都放到了 Device(GPU 或 NPU)中。

此外,因為MoE的專屬并行方式,第一個專家 FFN1 放到了第一台伺服器,第二個專家 FFN2放到了第二台伺服器,兩個專家之間的「交流」就通過 AllToAll 算子完成。此外,因為 FFN 裡面的矩陣乘法特别大,那麼也可以通過模型并行将矩陣乘法算子切分為兩部分,并分别放到各伺服器上的不同 GPU/NPU中。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

昇思 MindSpore開發者分别在 8 卡、16 卡、32 卡上驗證了優化器異構和專家并行對訓練模型規模提升的效果。

如下圖所示,使用優化器異構基本都能達到 3 倍的模型規模提升,在 8 卡上可以跑得動612 億參數量的模型,16 卡上可以跑到 1210 億參數量,32卡上可以跑到 2420 億 參數量的模型規模。

為科學創新插上模型的翅膀,MindSpore 「昇思」正在探索架構的未來

為模型打造最合适的計算政策,為計算賦予最強大的模型能力,便是計算與模型相結合的藝術。

在我們看來,這正是「昇思」二字的含義,「昇」代表着昇騰硬體平台的計算力,「思」代表着深度學習模型拟合、思考的能力。當兩者像藝術一般相結合,就能為生産、科研提供最堅實的基礎。

昇思 MindSpore 在 1.5 中已經将這種架構的邏輯貫徹到底,當昇思擁有了這些基礎設施後,MindScience這種結合科學計算與深度學習,MindSpore Boost這種更高階好用的API等等都能極大地提升 AI 開發效率,這也是昇思MindSpore成為人工智能根技術的重要标志之一。

可能多年以後,當AI遍布生活生産的每個角落,MindSpore這樣的深度學習架構會成為一種必不可少,且每個人都能用的「AI作業系統」,它也就成為我們生活的一部分。

繼續閱讀