天天看點

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

2022年5月20日,Wave Summit 2022深度學習開發者峰會線上成功舉辦,飛槳深度學習開源架構2.3版本正式釋出。

新版本架構在深度定制開發能力、全流程的自動化水準等方面有大幅更新,涉及開發、訓練、推理部署和雲上飛槳各環節。API體系更加豐富,更便捷支援包括AI科學計算在内各領域模型開發;針對高階開發者深度定制開發需求,飛槳架構2.3版本推出高複用性算子庫、高擴充性參數伺服器架構,進一步降低架構深度定制開發的成本;推出業内首個全流程自動調優方案,大幅提升性能調優的自動化水準;降低模型壓縮技術的應用門檻,推出業内首個開源的自動化壓縮功能;深度優化端邊雲全場景推理引擎,支援開發者取得最佳的部署性能。同時,針對大模型技術發展和産業應用需求,飛槳架構2.3版本的大模型訓練和推理能力實作全面更新。此外,為了更好地跟雲計算對接,本次更新正式推出“雲上飛槳”的能力,包括業内首個異構多雲自适應分布式訓練架構以及雲上部署編排工具PaddleCloud。

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

飛槳架構2.3版本共包含3200+個commits,共有210+個貢獻者參與開發,下面讓我們看看該版本的重點更新:

  • 更加豐富的API體系
  • 高複用性算子庫PHI
  • 高擴充性參數伺服器
  • 全流程硬體感覺的性能自動調優
  • 自動化壓縮和推理引擎性能優化
  • 大模型訓練和推理能力全面更新
  • 異構多雲自适應分布式訓練架構

1 更加豐富的API體系

支援各領域模型開發

相比2.2版本,2.3版本新增100多個API,覆寫機率分布、自動微分、稀疏張量、線性代數、視覺計算、架構性能分析、硬體裝置管理等方面。

  • 機率分布類API擴充到2.3版本的25個,新增6個基礎分布、13個分布變換及2個KL散度API。
  • 新增4個自動微分API:Jacobian、Hessian、jvp、vjp并應用到賽槳PaddleScience中,同時支援lazy模式的計算,能夠在複雜偏微分方程組中避免計算無用導數項,提升計算性能。
  • 新增11個稀疏張量API,支援建立 COO、CRS格式的Sparse Tensor,并能與Tensor互相轉換,已經應用到3D檢測(支援自動駕駛),圖神經網絡和NLP模型中。
  • 新增2個拟牛頓法二階優化API:minimize_bfgs和minimize_lbfgs,已應用到賽槳PaddleScience中,加快了模型收斂速度。

2 高複用性算子庫PHI

降低算子開發門檻

算子庫是深度學習架構極為重要的基礎組成部分,也是硬體和架構适配的重要橋梁,但算子開發對很多開發者而言挑戰比較大。飛槳架構2.3版本打造了高複用性的算子庫PHI,通過函數式接口為高階開發者提供了更簡單的算子開發方式,有效降低算子開發門檻,提升開發效率,并且能夠大幅降低晶片對飛槳架構的算子适配成本。下面具體看一下PHI算子庫的三個特點:

  • 函數式算子接口,可以通過函數調用的方式複用基礎算子來進行更複雜的組合算子開發。例如,通過對矩陣乘、加減乘除法等基礎算子函數式接口的調用,很容易實作一個FC或者SGD算子,高效支撐自定義算子開發需求。以非常複雜的Einsum算子為例,通過利用PHI算子庫,這類複雜算子的開發有低成本的顯著優勢。
  • 插件式算子管理機制,避免和架構代碼耦合,支援低成本地複用硬體加速庫的能力。
  • 提供Primitive的算子核心開發接口,實作不同晶片之間的算子核心開發代碼的複用,提升算子核心的開發效率。例如,飛槳在GPU和XPU上,已實作了大量基于Primitive接口的算子核心的複用,大幅降低了硬體算子适配的成本。
飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

3 高擴充性通用異構參數伺服器

提升二次開發體驗

參數伺服器架構在搜尋推薦系統應用非常廣泛。飛槳架構在2.0版本推出了業内首個通用異構參數伺服器架構,在2.3版本中我們進一步提升其擴充性,主要是将其中的基礎子產品通用化,提升二次開發體驗,高效支援産業應用中廣泛的定制開發需求。

以新增支援昆侖芯XPU的參數伺服器為例,在複用通用子產品的基礎上,隻需增加三個硬體相關的定制子產品,使得開發量從原來的萬行減少至千行。再比如,擴充業務場景至GPU圖神經網絡訓練,僅需要在存儲子產品中添加圖采樣政策即可開發完成GPU三級存儲圖檢索引擎,支援GPU圖分布式訓練。

4. 全流程硬體感覺的性能自動調優

持平專家級手工優化

目前各個架構都在性能方面做了很多優化,但對開發者而言,要想充分發揮架構的極緻性能,往往需要對架構以及硬體特性非常熟悉,通過調整各種配置才能實作,這對開發者的要求非常高,是以性能調優也常常成為開發者苦惱的問題。針對這一痛點,飛槳架構2.3版本大幅提升性能調優的自動化水準,推出的業内首個全流程自動調優方案,使得開發者更便捷獲得架構最優性能體驗。

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

訓練前

  • 針對不同硬體環境下預設的DataLoader參數配置無法發揮硬體最優性能的問題,飛槳實作了DataLoader參數自動搜尋功能,結合硬體特性達到最優性能配置;
  • 混合精度訓練等硬體相關的加速政策,往往與模型代碼耦合。飛槳本次更新後,開發者無需修改模型代碼,架構自動調整資料布局等設定,即可充分發揮硬體加速效果。

訓練中

  • 不同算子核心版本,針對不同的硬體加速庫各有優勢,飛槳利用CostModel預估與硬體實測相結合的方法,在運作時自動選擇不同條件下的最優算子核心,無需手工配置;
  • 同時借助飛槳神經網絡編譯器CINN的auto tune功能,實作在訓練疊代過程進行子圖、算子編譯優化,自适應硬體特性,減少調優等待時間,更快達到最優性能。
  • 通過實驗對比分析,飛槳架構自動調優後的訓練性能,可以達到與專家級手工配置優化持平或超越的效果,而且在不少模型上相對飛槳或其他架構的預設配置都有較大幅度的性能提升。
飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

5 自動化壓縮和推理引擎深度性能優化

高效支撐全場景部署落地

在産業落地的過程中,由于實際場景在硬體裝置、推理性能等方面的限制,常常需要模型壓縮的技術。然而模型壓縮要想做到模型精度和推理性能的平衡,非常有挑戰。以往開發者需要考慮模型訓練、硬體環境等複雜因素,憑借實驗從大量的壓縮政策中選擇适合的政策。

為了降低模型壓縮技術的應用門檻,飛槳推出了業内首個開源的自動化壓縮功能,采用自動硬體感覺技術,比對最優壓縮方案,并通過蒸餾微調解除對模型原訓練代碼的依賴,大大簡化了開發工作。經測試,自動化壓縮方案的代碼量可減少50%以上,大幅降低了開發成本,并且壓縮精度與推理速度仍能與手工壓縮水準持平。

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

同時,飛槳推理引擎也在持續進行深度的性能優化,支援開發者取得最佳的部署性能。本次更新,飛槳在資料處理、計算圖優化、執行排程、軟硬體融合的核心調優等方面進一步進行深度優化,推理性能進一步提升。以端側為例,在ARM CPU上,我們支援了稀疏計算功能,在高通865手機,FP32精度單線程下,稀疏度75%,相對稠密模型性能有高達30%提升,并且精度損失<1%。在邊緣、雲也都實作了深度優化,實作了端、邊、雲多平台推理性能的全面提升。

6 大模型訓練和推理能力全面更新

提供訓推一體全流程方案

針對MoE模型的海量稀疏參數,飛槳采用了包括HBM顯存/MEM記憶體/AEP/SSD等在内的通用多級存儲模式,實作36機即可訓練十萬億模型,并采用2D預取排程和參數融合提高異構存儲效率。同時針對All-to-All通信壓力,研發了硬體拓撲感覺層次通信,通信效率提升20%。針對MoE訓練中的負載不均衡情況,提出彈性訓練通過增删節點平衡負載,整體效率提升18%。此外,針對MoE大模型推理,飛槳提出Ring Memory Offloading政策,有效解決單節點大模型訓練推理存儲問題,減少顯存碎片。

更多詳情請見:

SE-MoE: A Scalable and Efficient Mixture-of-Experts Distributed Training and Inference System(https://arxiv.org/abs/2205.10034).

針對生物計算蛋白質結構分析模型存在多分支特征計算、中間計算結果較大、參數量小、參數個數較多、小算子較多等特點,飛槳提出了分支并行分布式政策提高并行效率,數千個參數、梯度、優化器變量使用張量融合政策和BF16通信政策以提高通信及參數更新效率,小算子使用算子融合政策提高計算效率等;此外,進一步支援了GPU/DCU等多種硬體環境下端到端的高擴充分布式訓練。

飛槳整體推出了針對大模型的壓縮、推理、服務化全流程部署方案。該方案通過面向大模型的精度無損模型壓縮技術、自适應分布式推理技術,可自動感覺硬體特性,完成模型壓縮、自動切分和混合并行推理計算,可比模型測試達到領先性能。并且,整體方案通用且可擴充,能廣泛支援不同種類的模型結構高速推理,目前已支撐了如自然語言了解、對話、跨模态生成等大模型的實時線上應用。

7 異構多雲自适應分布式訓練

實作算力和模型共享

針對多算力中心資料、算力共享面臨的安全、效率挑戰,飛槳推出了業内首個異構多雲自适應分布式訓練架構,支援雲際環境下的異構硬體聯合訓練,實作算力共享(多個算力中心互聯訓練)或知識共享(雲化方式利用各自的大模型)。該架構融合了混合并行訓練、通信壓縮、異構通信、安全加密等技術,并已在“鵬城雲腦II+百度百舸”下完成多個模型的驗證。

通過算力共享方式成功訓練了多語言知識融合的ERNIE模型,可以做到精度無損和性能基本無損。在該場景下,各算力中心會收到全量訓練資料和自适應切分的不同模型網絡層,并采用集合通信、模型并行等技術訓練各網絡層,參數伺服器架構将中間層輸出與梯度資訊進行通信壓縮和安全加密後,傳遞至其它算力中心,完成聯合訓練。多算力中心算力聯合訓練,将是一種更靈活的大模型訓練方式。

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

在知識共享場景下,以翻譯模型為例,算力中心C會向A和B發送模型請求。A和B上的單語言模型依據請求上的資料計算出中間層輸出結果,并同樣利用參數伺服器架構發送給算力中心C。C使用中間層輸出結果完成訓練,這可看成是知識共享的訓練。鵬城雲腦II和百度百舸以這種知識共享方式成功訓練了英語-西班牙語翻譯模型。預訓練大模型也可用于其它模型高品質生産。

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

更多詳情請見:

Nebula-I: A General Framework for Collaboratively Training Deep Learning Models on Low-Bandwidth Cloud Clusters(https://arxiv.org/abs/2205.09470).

7 雲上飛槳編排部署工具PaddleCloud

支援極簡安裝與多模型編排

為了讓開發者更便捷地使用雲上飛槳的功能,飛槳推出了雲上部署編排工具PaddleCloud。僅需簡單的兩行配置,就可以在各個雲環境上定制專屬的完整的飛槳開發部署環境。PaddleCloud完成與主流雲上存儲與網絡的适配,并通過在環境内部自适應的對接各類異構硬體。雲上環境會随飛槳版本自動更新,使用者能使用PaddleCloud快速體驗飛槳新版功能。

此外,PaddleCloud基于飛槳K8s Operator和DAG實作多開發套件、多模型之間的靈活快速編排。内置經典行業案例模闆,可輕松完成雲上一鍵安裝,及多模型系統串聯,實作複雜AI應用高效落地。

飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新

歡迎大家下載下傳體驗飛槳深度學習開源架構2.3.0版本!

相關閱讀

  • 百度CTO王海峰:飛槳助力普惠AI,賦能千行百業,惠及千家萬戶
  • 百度吳甜提出大模型落地關鍵路徑 業内首發行業大模型
飛槳架構v2.3釋出,高複用性算子庫、異構多雲分布式訓練等多項新特性重磅更新