㈠ ML system 入坑指南
歡迎進入機器學習系統(ML system)的廣闊領域。隨著ChatGpt等大模型的興起,人們愈發關注大模型的實際落地。然而,除了先進的演算法,背後支撐的ML system——從分布式訓練到高效推理的完整鏈路同樣至關重要。優秀的基礎設施是應用爆發的基石。對於剛剛踏入這個領域的「新手」以及對ML system感興趣但並非該領域背景的其他領域人士,本文將分享個人的學習歷程和指引,希望能為你們提供入門和進一步探索的指南。
讓我們先從課程入手。學習路徑的構建離不開堅實的知識基礎。首先,掌握計算機基礎,如數據結構,這是必不可少的。接下來,讓我們深入探討更專業性進階課程:
南京大學JYY老師的操作系統課程:課程內容深入且作業繁重,質量與四大課程相當。
MIT的6.S081操作系統課程:提供全面的資料、實驗(lab)以及課程內容。
CMU的15418並行計算課程:介紹現代多處理器、CPU加速、分布式通訊協議、GPU加速(CUDA編程)、異構計算、同步和緩存等核心概念。
UCB的cs267課程:專注於高性能計算(HPC)的原理和應用。
MIT的分布式系統課程:使用Go語言實現,了解傳統分布式系統知識和歷史對於現代分布式機器學習系統的學習具有一定的幫助,但並非必需。
在課程之外,還有專門針對機器學習系統的課程:
CMU的深度學習系統課程:由陳天奇老師講授,涵蓋神經網路庫實現、自動微分、GPU加速、模型部署和AI編譯部分內容。課程內容全面,適合有一定基礎的學習者閱讀或作為參考。
Mini torch:一個用Python實現的簡單版本torch,涉及自動微分、張量、GPU加速,適合新手入門。
MIT的Tiny ML課程:針對移動設備和嵌入式系統的課程,感謝@江湖騙子 @Lyken 學長的補充。
此外,還有華為Mindspore團隊(我曾在此實習的團隊)和一群專家聯合推出的課程,涵蓋了計算圖、編譯器前後端、分布式訓練等內容,適合有一定基礎的學習者閱讀或作為工具書使用。微軟發起的系統為AI工具書,正在快速迭代更新,補充基礎知識。陳天奇老師的AI編譯器課程以TVM為基礎,是前沿領域的少數課程之一。
對於大型模型的學習,理解最新的演算法和模型架構變化是非常必要的,雖然很難有系統的課程,但通過閱讀論文、官方網站、博客等資源,可以緊跟業界進展。可以參考李沐老師的論文精講,關注影響力巨大的工作,如「多就是一切」(Muli is all you need)。
對於大規模分布式訓練,目前沒有非常系統的課程,但了解分布式訓練的基本知識、並行策略和顯存優化策略等對於學習者至關重要。這里簡單總結了幾個關鍵知識點和參考論文。
編程語言方面,Python是首選,但了解如何調用C(如Cpython、pybind)以及Python高級特性(如hook、裝飾器)對於ML sys領域很有幫助。CUDA、OpenCL等並行計算技術也是非Nvidia晶元設備(如手機SoC)上進行異構加速的通用方案。
此外,還有一些工具和框架,如TensorRT、AI Template、Severing Triton-inference-server、clip-as-service、Mobile inference等,涵蓋了推理引擎、模型服務等不同方面。對於分布式訓練,ColossalAI、Megatron-LM、Deepspeed、huggingface accelerate、Bagua等框架提供了不同層次的支持,幫助解決大規模模型訓練中的問題。
最後,對於學習者來說,探索源碼、實際案例學習是深入理解ML sys領域知識的絕佳途徑。此外,編程語言(如C++、Python)、CUDA、OpenCL等並行計算技術、分布式通訊技術以及大型深度學習框架(如TensorFlow、PyTorch)等都是學習的必備知識。同時,了解AI編譯器、模型優化技術、系統設計和實現等方面的知識,對於構建高效、可擴展的機器學習系統至關重要。