官术网_书友最值得收藏!

PREFACE前言

緣起

我在2020年來到了愛丁堡大學(xué)信息學(xué)院,愛丁堡大學(xué)是AI(Artificial Intelligence,人工智能)研究的發(fā)源地之一,很多學(xué)生慕名而來學(xué)習(xí)機器學(xué)習(xí)技術(shù)。愛丁堡大學(xué)擁有許多出色的機器學(xué)習(xí)課程(如自然語言處理、計算機視覺、計算神經(jīng)學(xué)等),同時也擁有一系列關(guān)于計算機系統(tǒng)的基礎(chǔ)課程(如操作系統(tǒng)、編程語言、編譯器、計算機體系架構(gòu)等)。但是當(dāng)我在教學(xué)的過程中問起學(xué)生:機器學(xué)習(xí)是如何利用計算機系統(tǒng)實現(xiàn)計算加速和部署的?許多學(xué)生投來疑惑的眼神。這促使我思考在愛丁堡大學(xué)乃至于其他世界頂尖大學(xué)的教學(xué)大綱中,是不是缺一門銜接機器學(xué)習(xí)和計算機系統(tǒng)的課程。

我的第一反應(yīng)是基于一門已有的課程進行拓展。那時,加州大學(xué)伯克利分校的AI Systems(人工智能系統(tǒng))課程較為知名。這門課描述了機器學(xué)習(xí)系統(tǒng)的不同研究方向,以研讀論文為主進行教學(xué)。可惜的是,許多論文已經(jīng)無法經(jīng)受住時間的檢驗。更重要的是,這門課缺乏對于知識的整體梳理,未能形成完整的知識體系架構(gòu)。學(xué)習(xí)完這門課程,學(xué)生未能形成對于從頭搭建機器學(xué)習(xí)系統(tǒng)的明確思路。我調(diào)研了其他學(xué)校,華盛頓大學(xué)曾短期開過Deep Learning Systems(深度學(xué)習(xí)系統(tǒng))課程,這門課程講述了機器學(xué)習(xí)程序的編譯過程。而這門課程以講述Apache TVM(Tensor Virtual Machine,張量虛擬機)深度學(xué)習(xí)編譯器為主要目的,對于機器學(xué)習(xí)系統(tǒng)缺乏完整的教學(xué)。另外,斯坦福大學(xué)的課程Machine Learning Systems Design(機器學(xué)習(xí)系統(tǒng)設(shè)計),課程設(shè)計人的研究領(lǐng)域以數(shù)據(jù)庫為主,因此該課程專注于數(shù)據(jù)清洗、數(shù)據(jù)管理、數(shù)據(jù)標(biāo)注等主題。

當(dāng)時覺得比較合適的是微軟亞洲研究院的AI Systems課程。這門課程講述了機器學(xué)習(xí)系統(tǒng)背后的設(shè)計理念。但是當(dāng)我準(zhǔn)備將其教授給本科生的時候,我發(fā)現(xiàn)這門課對于機器學(xué)習(xí)系統(tǒng)核心設(shè)計理念講解得很淺,同時這門課要求學(xué)生有大量計算機系統(tǒng)的背景知識,實際上它更適合博士生。上述課程的共同問題是:其課程教學(xué)方式都以研讀相關(guān)論文為主,因此教授的內(nèi)容都是高深和零散的,而不是通俗易懂,知識脈絡(luò)清晰的,這給學(xué)生學(xué)習(xí)機器學(xué)習(xí)系統(tǒng)造成了極大的困難。

回首2020年,我們已經(jīng)擁有了優(yōu)秀的操作系統(tǒng)、數(shù)據(jù)庫、分布式系統(tǒng)等基礎(chǔ)性教材。同時,在機器學(xué)習(xí)相關(guān)算法方面也有了一系列教材。然而,無論在國內(nèi)外,我很難找到一本系統(tǒng)性講述機器學(xué)習(xí)系統(tǒng)的教材。因此,許多公司和高校實驗室不得不花費大量的人力和物力從頭培養(yǎng)學(xué)生和工程師,使他們加強對于機器學(xué)習(xí)底層基礎(chǔ)設(shè)施的認識。這類教材的缺乏已經(jīng)制約了高校的人才培養(yǎng),不利于高校培養(yǎng)出符合業(yè)界與學(xué)界和時代發(fā)展需求的人才了。因此,我開始思考:我們是不是應(yīng)該推出一本有關(guān)機器學(xué)習(xí)系統(tǒng)的教科書呢?

開端

帶著寫書的構(gòu)想,我開始和朋友溝通。大家都非常認可編寫這類書的巨大價值,但是現(xiàn)實的情況是:很少有人愿意做這么一件費力的事情。我當(dāng)時的博士后導(dǎo)師也勸我:你現(xiàn)在處在教師職業(yè)生涯的初期,追求高影響力的學(xué)術(shù)論文是當(dāng)務(wù)之急,寫一本書要耗費大量的時間和精力,最后可能也無法出版面世。而我和同行交流時也發(fā)現(xiàn):他們更愿意改進市面上已經(jīng)有的教科書,即做有跡可循的事情,而不是摸著石頭過河,做從無到有的事情。特別是對于機器學(xué)習(xí)系統(tǒng)這個快速發(fā)展、頻繁試錯的領(lǐng)域,能不能寫出經(jīng)受住時間檢驗的書也是一個未知數(shù)。

考慮到寫作的巨大挑戰(zhàn),我將寫書的構(gòu)想藏于心中,直到一次回國和MindSpore的架構(gòu)師金雪鋒聊天。和雪鋒的相識大約是在2019年的圣誕節(jié),雪鋒來倫敦訪問,他正在領(lǐng)導(dǎo)MindSpore的開發(fā)(當(dāng)時MindSpore 1.0還沒有發(fā)布)。而對于機器學(xué)習(xí)系統(tǒng)的開發(fā),我也有很深的興趣。我在2018年也和好友一起從頭搭建一個機器學(xué)習(xí)框架(類似于PyTorch),雖然最終資源不足無疾而終,不過許多的思考成就了我之后發(fā)表的多篇機器學(xué)習(xí)系統(tǒng)論文。和雪鋒聊起來,我們都對AI系統(tǒng)開發(fā)之難深有同感。我們共同的感慨就是:找到懂機器學(xué)習(xí)系統(tǒng)開發(fā)的人太難了。現(xiàn)今的學(xué)生都一心學(xué)習(xí)機器學(xué)習(xí)算法,很多學(xué)生對于底層系統(tǒng)的運作原理理解得很淺,也不夠重視。而當(dāng)他們在實際中應(yīng)用機器學(xué)習(xí)技術(shù)時才意識到系統(tǒng)的重要性,那時想去學(xué)習(xí),卻沒有了充沛的學(xué)習(xí)時間。我對雪鋒苦笑道:“我是準(zhǔn)備寫一本機器學(xué)習(xí)系統(tǒng)教材的,但是可能還要等三四年才能完成。”雪鋒說:“我也有這個想法啊。你要是寫的話,我能幫助到你嗎?”

這句話點醒了我。傳統(tǒng)的圖書寫作,往往依賴于一兩個教授將學(xué)科十余年的發(fā)展慢慢總結(jié)整理成書。這種模式類似于傳統(tǒng)軟件開發(fā)的瀑布流方式。可是,在科技世界,這已經(jīng)變了!軟件的發(fā)展從傳統(tǒng)的瀑布流進化到如今的開源敏捷開發(fā)。而圖書的寫作為什么還要停留在傳統(tǒng)方式呢?MXNet開源社區(qū)編寫的專注于深度學(xué)習(xí)算法的圖書Deep Dive into Deep Learning就是一個很好的例子啊。我因此馬上找到當(dāng)年一起創(chuàng)立TensorLayer開源社區(qū)的小伙伴——北京大學(xué)的董豪。我們一拍即合,說干就干。雪鋒也很高興我和董豪愿意開始做這件事,也邀請了他的同事干志良來幫忙。我們終于開始圖書的寫作了!

經(jīng)過幾輪的討論,我們將書名定為《機器學(xué)習(xí)系統(tǒng):設(shè)計和實踐》。我們希望通過教給學(xué)生機器學(xué)習(xí)系統(tǒng)設(shè)計原理,同時也為學(xué)生提供大量的系統(tǒng)實現(xiàn)經(jīng)驗分享,讓他們在將來工作和科研中遇到實際問題時知道該如何分析和解決。

社區(qū)的構(gòu)建

考慮到機器學(xué)習(xí)系統(tǒng)本身就是一個不斷發(fā)展并且孕育細分領(lǐng)域的學(xué)科。我從一開始就在思考:如何設(shè)計一個可擴展(Scalable)的社區(qū)架構(gòu)保證這本書的可持續(xù)發(fā)展呢?因為我專注于大規(guī)模軟件系統(tǒng),故決定借鑒幾個分布式系統(tǒng)的設(shè)計要點構(gòu)建社區(qū)。

(1)預(yù)防單點故障和瓶頸:現(xiàn)代分布式系統(tǒng)往往采用控制層和數(shù)據(jù)層分離的設(shè)計避免單點故障和瓶頸。那么我們在設(shè)計高度可擴展的寫作社區(qū)的時候也要如此。因此,我們設(shè)計了如下分布式機制:編輯決定花最多的時間來尋找優(yōu)秀的、主動的、負責(zé)任的書稿章節(jié)負責(zé)人。章節(jié)負責(zé)人可以進一步尋找其他作者共同協(xié)作。章節(jié)負責(zé)人和章節(jié)作者進行密切的溝通,按照給定時間節(jié)點,全速異步推進。編輯和章節(jié)負責(zé)人設(shè)定了每周討論同步寫作的進展,確保并行完成的章節(jié)內(nèi)容質(zhì)量能夠持續(xù)符合編輯和社區(qū)的整體預(yù)期。

(2)迭代式改進:深度學(xué)習(xí)的優(yōu)化算法——隨機梯度下降本質(zhì)上是在復(fù)雜問題中利用局部梯度進行海量迭代,最終找到局部最優(yōu)解。因此我們利用了同樣的思路設(shè)計圖書質(zhì)量的迭代提高。我們首先在Overleaf上寫作好書籍的初版(類似于初始參數(shù))。接下來,將圖書的內(nèi)容做成標(biāo)準(zhǔn)的Git代碼倉庫。建立機制鼓勵開源社區(qū)和廣大讀者開啟GitHub問題(Issue)和拉取請求(Pull Request,PR),持續(xù)改進圖書質(zhì)量,而我們設(shè)置好完善的圖書構(gòu)建工具、持續(xù)集成工具、貢獻者討論會等,就可以讓圖書的質(zhì)量持續(xù)提高,實現(xiàn)與隨機梯度下降(Stochastic Gradient Descent)一樣的最優(yōu)結(jié)果。

(3)高可用性:構(gòu)建7×24小時在線的寫作平臺,讓圖書參與者可以在全球任何時區(qū)、任何語言平臺下都能參與開發(fā)圖書,傾聽社區(qū)的反饋。因此將Git倉庫放置在GitHub上,并準(zhǔn)備之后在Gitee做好鏡像。這樣,就搭建了一套高可用的寫作平臺了。

(4)內(nèi)容中立:一個分布式系統(tǒng)要能長久運行,其中的每一個節(jié)點都要同等對待,遇到故障才能用統(tǒng)一的辦法進行故障恢復(fù)。考慮到圖書寫作中的故障(設(shè)計無法經(jīng)受時間檢驗,寫作人中途不得不退出等)可能來源于方方面面,我們讓不同背景的參與者共同完成每一個章節(jié),確保寫出中立、客觀、包容的內(nèi)容,并且寫作不會因為故障而中斷。

現(xiàn)狀和未來

機制一旦建立好,寫作就自動化地運行起來了,參與者也越來越多,我?guī)н^的學(xué)生袁秀龍、丁子涵、符堯、任杰、梁文騰也很用心參與編寫,董豪邀請了鵬城實驗室的韓佳容和賴鋮,志良邀請了許多MindSpore的小伙伴進來做貢獻,許多資深的機器學(xué)習(xí)系統(tǒng)設(shè)計者也和我們在各個渠道展開討論,提供了非常多寶貴的寫作建議。另外,學(xué)界和產(chǎn)業(yè)界的反響也很熱烈。海外很多優(yōu)秀的學(xué)生(斯坦福大學(xué)的孫建凱、卡耐基–梅隆大學(xué)的廖培元、劍橋大學(xué)的王瀚宸、愛丁堡大學(xué)的穆沛),產(chǎn)業(yè)界的朋友(英國葛蘭素史克公司機器學(xué)習(xí)團隊的肖凱嚴)都加入了我們的寫作。同時,學(xué)界的教授(英國倫敦帝國理工學(xué)院的Peter Pietzuch教授、香港科技大學(xué)的陳雷教授等)也持續(xù)給我們提供了寫作意見,改進了圖書質(zhì)量。

充分發(fā)動了“分布式系統(tǒng)”的力量后,圖書的內(nèi)容得以持續(xù)高質(zhì)量地添加。當(dāng)我們開源了圖書以后,圖書的受眾快速增長,GitHub上關(guān)注度的增長讓我們受寵若驚。在社區(qū)的推動下,圖書的中文版、英文版、阿拉伯語版都已經(jīng)開始推進。這么多年來,我第一次意識到我在分布式系統(tǒng)和機器學(xué)習(xí)中學(xué)習(xí)到的知識,在解決現(xiàn)實復(fù)雜問題的時候是如此的有用!

很多時候,當(dāng)我們面對未知而巨大的困難時,個人的力量真的很渺小。而和朋友、社區(qū)一起就變成了強大的力量,讓我們鼓起勇氣,走出了最關(guān)鍵的第一步!希望我的一些思考,能給其他復(fù)雜問題的求解帶來一些小小的啟發(fā)。

截至2022年5月,本書的核心作者和編輯包括麥絡(luò)、董豪、金雪鋒和干志良,譚志鵬策劃了本書。本書各章節(jié)由以下作者參與編寫:導(dǎo)論(麥絡(luò)、董豪、干志良)、編程模型(賴鋮、麥絡(luò)、董豪)、計算圖(韓佳容、麥絡(luò)、董豪)、AI編譯器和前端技術(shù)(梁志博、張清華、黃炳堅、余堅峰、干志良)、AI編譯器后端和運行時(褚金錦、穆沛、蔡福璧)、硬件加速器(張任偉、任杰、梁文騰、劉超、陳鋼、黎明奇)、數(shù)據(jù)處理(袁秀龍)、模型部署(韓剛強、唐業(yè)輝、翟智強、李姍妮)、分布式訓(xùn)練(麥絡(luò)、廖培元)、聯(lián)邦學(xué)習(xí)系統(tǒng)(吳天誠、王瀚宸)、推薦系統(tǒng)(符堯、裴貝、麥絡(luò))、強化學(xué)習(xí)系統(tǒng)(丁子涵)、可解釋AI系統(tǒng)(李昊陽、李小慧)、機器人系統(tǒng)(孫建凱、肖凱嚴)。

最后,我們非常歡迎新成員的加入以擴展內(nèi)容并提升圖書質(zhì)量,感興趣的讀者可以通過圖書的GitHub社區(qū)(1)聯(lián)系我們。我們非常期待和大家一起努力,編寫出一本推動業(yè)界發(fā)展的機器學(xué)習(xí)系統(tǒng)圖書!

麥絡(luò)

英國愛丁堡

2023年2月


(1) 可參考網(wǎng)址為:https://github.com/openmlsys/。

主站蜘蛛池模板: 柳河县| 金阳县| 西宁市| 贞丰县| 响水县| 贵州省| 夏邑县| 连山| 竹溪县| 宣化县| 隆化县| 民丰县| 四平市| 杭锦后旗| 荣成市| 镇巴县| 同心县| 无极县| 嘉定区| 台州市| 封丘县| 渑池县| 宿松县| 利津县| 东山县| 常熟市| 龙泉市| 深水埗区| 广德县| 万荣县| 稻城县| 肥东县| 如皋市| 安龙县| 潜山县| 喀什市| 德惠市| 林州市| 太白县| 菏泽市| 瑞丽市|