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

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

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

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

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

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

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

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

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

  • 收斂時(shí)間,即達(dá)到一定的收斂精度所需的時(shí)間。

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

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

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

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

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

  • 模型梯度的自動(dòng)融合、拆分

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

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

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

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