COSCon'19 | 如何設計新一代的圖數(shù)據(jù)庫 Nebula
1192
2025-04-03
MLsys不能算是一種方向,而是一種思路。比如對于system研究者來說,可以把ML作為我們開發(fā)的系統(tǒng)要適配的一種benchmark,就像transaction對于數(shù)據(jù)庫、某種文件場景對于File System的意義一樣。這樣一想可做的空間就寬廣多了。
下面簡單推薦一些坑比較少得方向,希望大家可以適應這個潮流。
1. 分布式機器學習(Distributed DNN Training)
這個又可以分為兩個方面:from ML / system perspective。
ML
從ML的角度做,主要是發(fā)明或改進分布式訓練算法,保證在分布式加速的同時,仍然能達到原來的學習效果(loss/accuracy)。因此很多工作也被投在像ICML、NIPS這種專業(yè)ML會議上。主要用到的方法包括優(yōu)化(optimization)和統(tǒng)計學習理論(statistical learning theory)。
還有一類工作涉及到如何把單機算法改造成分布式[ch9],比如同步/異步SGD等。這里主要涉及到的問題是如何降低分布式環(huán)境下的通信開銷,提高加速比。
System
還有一個就是從System的角度做。從分布式計算的角度來看,可以把相關(guān)工作分為以下幾類:
對于計算量太大的場景(計算并行),可以多線程/多節(jié)點并行計算,多節(jié)點共享公共的存儲空間。常用的一個算法就是同步隨機梯度下降(synchronous stochastic gradient descent),含義大致相當于K個(K是節(jié)點數(shù))mini-batch SGD
對于訓練數(shù)據(jù)太多,單機放不下的場景(數(shù)據(jù)并行,也是最主要的場景),需要將數(shù)據(jù)劃分到多個節(jié)點上訓練。每個節(jié)點先用本地的數(shù)據(jù)先訓練出一個子模型,同時和其他節(jié)點保持通信(比如更新參數(shù))以保證最終可以有效整合來自各個節(jié)點的訓練結(jié)果,并得到全局的ML模型。
對于模型太大的場景,需要把模型(例如NN中的不同層)劃分到不同節(jié)點上進行訓練。此時不同節(jié)點之間可能需要頻繁的sync。這個叫做模型并行。
Pipeline Parallelism:這是去年(SOSP19 PipeDream)才出現(xiàn)的概念。Pipeline Parallelism相當于把數(shù)據(jù)并行和模型并行結(jié)合起來,把數(shù)據(jù)劃分成多個chunk,也把訓練模型的過程分成了Forward Pass和Backward Pass兩個stage。然后用流水線的思想進行計算。
大致涉及以下幾個點:
分布式ML系統(tǒng)設計
Edge Computing
大量計算資源的Scheduling / device placement
communication相關(guān)
2. 深度學習模型壓縮/加速
對DL model進行壓縮主要考慮兩個角度:減少計算量(例如conv層的計算量) / 內(nèi)存占用(NN的參數(shù)數(shù)量)。不僅要考慮ML上的metric,也要考慮system層面的performance(例如latency / throughput / 功耗。有時候這些比ML模型的accuracy還重要)。
2.1 通過Quantized(量化)降低計算精度要求
量化的含義是將卷積層(the weights and / or activations of a CNN)通常要用到的32位浮點數(shù)用更低位的數(shù)來表示,如int32, int16, int8等等,來降低資源占用(float32無論是計算還是存儲都是很吃資源的..)。量化之后無疑會損失一部分精度,但神經(jīng)網(wǎng)絡對噪聲并不是特別敏感,因此控制好量化的程度之后對ML任務的影響可以很小。
2.2 新硬件 / DL Acclerator
在純硬件方面針對DL workload的工作也有很多,這里來看幾個parallel相關(guān)的技術(shù)。最近Data-Level Parallelism不僅在深度學習中,在其他一些領(lǐng)域(比如數(shù)據(jù)庫)也有了越來越多的應用。
CPU、SIMD、VLIW、GPU、系統(tǒng)結(jié)構(gòu)、專用硬件等。
2.3 矩陣算子優(yōu)化
神經(jīng)網(wǎng)絡中的很多運算本質(zhì)上就是對矩陣運算,因此可以用一些矩陣乘法優(yōu)化方案來加速。
3. 深度學習框架/系統(tǒng)設計
和Distributed Training的區(qū)別是這里更關(guān)注一些工程上的東西(框架設計、API設計等等)
幾個關(guān)鍵要素:
支持各種算子(op) 和 tensor (data)
計算圖的定義方式(動態(tài) v.s. 靜態(tài))
Auto Diff
Optimizer(例如Adam)
各種加速和優(yōu)化的庫:cudnn, openblas,mkl等
4. 用ML優(yōu)化傳統(tǒng)的system問題
用ML去優(yōu)化一個傳統(tǒng)system問題中,一些需要人工經(jīng)驗調(diào)整、或者說可以從歷史情況learn到一些東西的模塊。比如數(shù)據(jù)庫參數(shù)、操作系統(tǒng)頁表、數(shù)據(jù)庫索引等等。一個模塊可以被ML化的前提是它必須是empirical的,參考它在頁表(OS的工作集原理)、數(shù)據(jù)庫(DBA是個很吃經(jīng)驗的活...)中的應用。
基本就這4個方向,如果想做這些東西,需要掌握一定基礎(chǔ)知識點才能更好的入門及應用。
工程基礎(chǔ):C/C++、OO programming。閱讀源碼是個很好的學習方式
OS
編譯原理。特別是編譯器優(yōu)化技術(shù)、LLVM、memory optimization。Parser之類不喜歡也可以不看
Computer Architecture。另外還需要了解:1.GPU架構(gòu),例如顯存分配機制、CPU與GPU交互。 2.CPU、存儲系統(tǒng)相關(guān)的新技術(shù)。 3.有條件可以了解下深度學習專用硬件。
常見的并行計算框架,例如MPI/OpenMP/CUDA
機器學習基礎(chǔ)
常見的分布式機器學習算法、DL模型壓縮、模型加速方法(根據(jù)具體方向而定)
這里需要注意的是,如果想研究的比較有深度,有時間多閱讀一下別人的源碼,比較有利于個人能力的提升,多動手記的比較牢靠一點。
機器學習是個很大的領(lǐng)域,也是個很成功的領(lǐng)域:從純學術(shù)角度來說,這個領(lǐng)域“坑”大,維度很廣,不管是算法、理論,還是模型、系統(tǒng),有非常多值得探索和研究的問題;從工業(yè)應用來說,這個領(lǐng)域相比其他某些領(lǐng)域與工業(yè)和實際應用貼的更近,所以這個領(lǐng)域的成果相比其他一些領(lǐng)域也更容易被部署到開發(fā)過程和產(chǎn)品中。
機器學習是一個多維度(multi-dimensional)的研究領(lǐng)域,也是一個跨領(lǐng)域(cross-domain)的研究領(lǐng)域,上到理論證明,算法設計,下到模型設計、應用、系統(tǒng)設計和研究。
這種學習如果想出成果,還是離不開老師和同事們的協(xié)助,有那種氛圍比較容易解決問題,不用自己一個人鉆牛角尖,這里有一些名校及比較好的老師推薦一下:
牛X的名校
北美:業(yè)界當然是Google Brain和MSR最有影響力。CMU的Catalyst,除了大家比較熟悉的陳天奇(TVM,XGBoost,MXNet),Zhihao Jia的研究也很promising(TASO),另外兩位senior的老師都已經(jīng)很有名了。
歐洲:MSR Cambridge。ETH Systems Group幾位AP做MLSys,拓展寬一些的話,Arch背景的Onur Mutlu和HPC背景的
Torsten Hoefler
都很厲害有MLSys的項目。PARSA at EPFL。德國馬普所軟件系統(tǒng)所MPI-SWS實力也很強。
國內(nèi):工業(yè)界里面MSRA的系統(tǒng)和網(wǎng)絡組可能是做的最好的,字節(jié)、阿里、亞馬遜ASAIL也都在特定領(lǐng)域里面有一些影響。
硬核的老師
1.UTK,Jack Dongarra的ICL。代表作大家耳熟能詳,起草了BLAS,LAPACK,open MPI。包括大家今天以dag為基礎(chǔ)的tensorflow,其實icl早就有相應的包給大規(guī)模hpc系統(tǒng)了(PARSEC,類似還有斯坦福的legion)。這個實驗室,發(fā)paper一般,學校一般,但是做東西極其底層和硬核,一直是我非常尊敬的實驗室之一。
2.Berkeley James Demmel和他在新加坡國大的學生You Yang。James做的比較偏算法一些,最近幾年跟尤洋弄大batch分布式機器學習挺火熱的。
對于比較喜歡ML的同學,我還是比較推薦大家可以考慮使用已有的系統(tǒng)提升各種ML算法,非深度學習算法是個性價比很高的事情,因為這個方向?qū)τ诤芏喙I(yè)界都有很重要的里程碑意義,主要是因為這個東西做的人比較少,畢竟它不僅僅需要了解一些系統(tǒng)知識,更重要的你需要對機器學習算法的深刻理解。最后祝大家都能學有所成,乘風破浪。
本期內(nèi)容就分享到這里,我們下期見!
本文整理自華為云社區(qū)【內(nèi)容共創(chuàng)】活動第12期。
查看活動詳情:https://bbs.huaweicloud.com/blogs/325315
相關(guān)任務詳情:任務38推薦機器學習系統(tǒng)MLSys中的研究方向,并說明理由
機器學習 深度學習
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。