模型訓(xùn)練中除了數(shù)據(jù)和算法外,開發(fā)者花了大量時間在模型參數(shù)設(shè)計上。模型訓(xùn)練的參數(shù)直接影響模型的精度以及模型收斂時間,參數(shù)的選擇極大依賴于開發(fā)者的經(jīng)驗,參數(shù)選擇不當會導(dǎo)致模型精度無法達到預(yù)期結(jié)果,或者模型訓(xùn)練時間大大增加。

為了降低開發(fā)者的專業(yè)要求,提升開發(fā)者模型訓(xùn)練的開發(fā)效率及訓(xùn)練性能,ModelArts提供了可視化作業(yè)管理、資源管理、版本管理等功能,基于機器學(xué)習(xí)算法及強化學(xué)習(xí)的模型訓(xùn)練自動超參調(diào)優(yōu),如learning rate、batch size等自動的調(diào)參策略;預(yù)置和調(diào)優(yōu)常用模型,簡化模型開發(fā)和全流程訓(xùn)練管理。

當前大多數(shù)開發(fā)者開發(fā)模型時,為了滿足精度需求,模型往往達到幾十層,甚至上百層,參數(shù)規(guī)模達到百兆甚至在GB規(guī)格以上,導(dǎo)致對計算資源的規(guī)格要求極高,主要體現(xiàn)在對硬件資源的算力及內(nèi)存、ROM的規(guī)格的需求上。端側(cè)資源規(guī)格限制極為嚴格,以端側(cè)智能攝像頭為例,通常端側(cè)算力在1TFLOPS,內(nèi)存在2GB規(guī)格左右,ROM空間在2GB左右,需要將端側(cè)模型大小控制在百KB級別,推理時延控制在百毫秒級別。

這就需要借助模型精度無損或微損下的壓縮技術(shù),如通過剪枝、量化、知識蒸餾等技術(shù),實現(xiàn)模型的自動壓縮及調(diào)優(yōu),進行模型壓縮和重新訓(xùn)練的自動迭代,以保證模型的精度損失極小。無需重新訓(xùn)練的低比特量化技術(shù)實現(xiàn)模型從高精度浮點向定點運算轉(zhuǎn)換,多種壓縮技術(shù)和調(diào)優(yōu)技術(shù)實現(xiàn)模型計算量滿足端、邊小硬件資源下的輕量化需求,模型壓縮技術(shù)在特定領(lǐng)域場景下實現(xiàn)精度損失<1%。

當訓(xùn)練數(shù)據(jù)量很大時,深度學(xué)習(xí)模型的訓(xùn)練將會非常耗時。在計算機視覺中,ImageNet-1k(包含 1000 個類別的圖像分類數(shù)據(jù)集,以下簡稱 ImageNet)是經(jīng)典、常用的一個數(shù)據(jù)集,如果我們在該數(shù)據(jù)集上用一塊P100 GPU訓(xùn)練一個ResNet-50模型,則需要耗時將近1周,嚴重阻礙了深度學(xué)習(xí)應(yīng)用的開發(fā)進度。因此,深度學(xué)習(xí)訓(xùn)練加速一直是學(xué)術(shù)界和工業(yè)界所關(guān)注的重要問題。

分布式訓(xùn)練加速需要從軟硬件兩方面協(xié)同來考慮,僅單一的調(diào)優(yōu)手段無法達到期望的加速效果。所以分布式加速的調(diào)優(yōu)是一個系統(tǒng)工程,需要從硬件角度(芯片、硬件設(shè)計)考慮分布式訓(xùn)練架構(gòu),如系統(tǒng)的整體計算規(guī)格、網(wǎng)絡(luò)帶寬、高速緩存、功耗、散熱等因素,充分考慮計算和通信的吞吐量關(guān)系,以實現(xiàn)計算和通信時延的隱藏。

軟件設(shè)計需要結(jié)合高性能硬件特性,充分利用硬件高速網(wǎng)絡(luò)實現(xiàn)高帶寬分布式通信,實現(xiàn)高效的數(shù)據(jù)集本地數(shù)據(jù)緩存技術(shù),通過訓(xùn)練調(diào)優(yōu)算法,如混合并行,梯度壓縮、卷積加速等技術(shù),實現(xiàn)分布式訓(xùn)練系統(tǒng)軟硬件端到端的高效協(xié)同優(yōu)化,實現(xiàn)多機多卡分布式環(huán)境下訓(xùn)練加速。ModelArts 在千級別資源規(guī)格多機多卡分布式環(huán)境下,典型模型 ResNet50 在 ImageNet 數(shù)據(jù)集上實現(xiàn)加速比>0.8,是行業(yè)領(lǐng)先水平。

衡量分布式深度學(xué)習(xí)的加速性能時,主要有如下2個重要指標:

  • 吞吐量,即單位時間內(nèi)處理的數(shù)據(jù)量。

  • 收斂時間,即達到一定的收斂精度所需的時間。

吞吐量一般取決于服務(wù)器硬件(如更多、更大FLOPS處理能力的AI加速芯片,更大的通信帶寬等)、數(shù)據(jù)讀取和緩存、數(shù)據(jù)預(yù)處理、模型計算(如卷積算法選擇等)、通信拓撲等方面的優(yōu)化。除了低bit計算和梯度(或參數(shù))壓縮等,大部分技術(shù)在提升吞吐量的同時,不會造成對模型精度的影響。為了達到最短的收斂時間,需要在優(yōu)化吞吐量的同時,對調(diào)參方面也做調(diào)優(yōu)。調(diào)參不到位會導(dǎo)致吞吐量難以優(yōu)化,當batch size超參不足夠大時,模型訓(xùn)練的并行度就會相對較差,吞吐量難以通過增加計算節(jié)點個數(shù)而提升。

對用戶而言,最終關(guān)心的指標是收斂時間,因此ModelArts的MoXing實現(xiàn)了全棧優(yōu)化,極大縮短了訓(xùn)練收斂時間。在數(shù)據(jù)讀取和預(yù)處理方面,MoXing通過利用多級并發(fā)輸入流水線使得數(shù)據(jù) IO 不會成為瓶頸;在模型計算方面,MoXing對上層模型提供半精度和單精度組成的混合精度計算,通過自適應(yīng)的尺度縮放減小由于精度計算帶來的損失;在超參調(diào)優(yōu)方面,采用動態(tài)超參策略(如 momentum、batch size等)使得模型收斂所需epoch個數(shù)降到最低;在底層優(yōu)化方面,MoXing與底層華為服務(wù)器和通信計算庫相結(jié)合,使得分布式加速進一步提升。

ModelArts高性能分布式訓(xùn)練優(yōu)化點

  • 自動混合精度訓(xùn)練(充分發(fā)揮硬件計算能力)

  • 動態(tài)超參調(diào)整技術(shù)(動態(tài) batch size、image size、momentum 等)

  • 模型梯度的自動融合、拆分

  • 基于BP bubble自適應(yīng)的計算,通信算子調(diào)度優(yōu)化

  • 分布式高性能通信庫(nstack、HCCL)

  • 分布式數(shù)據(jù)-模型混合并行

  • 訓(xùn)練數(shù)據(jù)壓縮、多級緩存