近年來(lái),機(jī)器學(xué)習(xí)技術(shù)的發(fā)展歸因于我們有極其龐大的數(shù)據(jù)用來(lái)訓(xùn)練算法。當(dāng)企業(yè)需要落地大規(guī)模機(jī)器學(xué)習(xí)時(shí),往往會(huì)面臨很多難題,如何解決這些問(wèn)題?如何系統(tǒng)了解大規(guī)模機(jī)器學(xué)習(xí)落地的技巧?其適用場(chǎng)景是什么?InfoQ 希望通過(guò)該選題解決這些問(wèn)題,并推動(dòng)企業(yè)在大規(guī)模機(jī)器學(xué)習(xí)方面的實(shí)踐。本文,InfoQ 有幸采訪了阿里云機(jī)器學(xué)習(xí)研究員林偉,聽他分享自己的經(jīng)驗(yàn)和見解。
何為大規(guī)模機(jī)器學(xué)習(xí)
毫無(wú)疑問(wèn),我們已經(jīng)邁入人工智能時(shí)代,機(jī)器學(xué)習(xí)幾乎滲透了我們?nèi)粘I詈凸ぷ鞯姆椒矫婷?,?chuàng)建深度學(xué)習(xí)模型越來(lái)越容易,但大規(guī)模工業(yè)部署卻依然沒有那么容易,第一現(xiàn)在模型變得越來(lái)越大,越來(lái)越深,需要強(qiáng)大算力和海量的數(shù)據(jù)才能夠支撐訓(xùn)練出更好的模型;第二模型訓(xùn)練出來(lái)需要在推理的時(shí)候高效的執(zhí)行才能真正讓模型落地,這個(gè)里面就需要非常多系統(tǒng)工程優(yōu)化,以及模型和工程一起的協(xié)同優(yōu)化。當(dāng)然并不是模型越大,訓(xùn)練效果就會(huì)一定好,模型本身的提高以及訓(xùn)練方式都決定了最終模型實(shí)際效果,這就需要我們也在算法,訓(xùn)練手段層面的突破。
對(duì)眾多深度學(xué)習(xí)開發(fā)者而言,只要擁有一張 GPU 卡,很多流行的 AI 模型都可以得以訓(xùn)練。但對(duì)公司而言,隨著業(yè)務(wù)需求的提高、精度要求的提高,就會(huì)面臨更大模型、更多數(shù)據(jù)訓(xùn)練的需求,此時(shí)就需要更強(qiáng)大分布式訓(xùn)練平臺(tái)以適應(yīng)大規(guī)模的訓(xùn)練的需求,同時(shí)因?yàn)閿?shù)據(jù)量增加,我們需要讓 AI 訓(xùn)練和大數(shù)據(jù)平臺(tái)結(jié)合起來(lái),從而滿足算法研究者各種數(shù)據(jù)組合加工,嘗試不同訓(xùn)練方式,從而能夠快速迭代模型,提高模型的精度。
那么,何為大規(guī)模機(jī)器學(xué)習(xí)有明確的界定嗎?
采訪中,林偉表示,我們所說(shuō)的“大規(guī)?!笨梢越忉尀樾枰獛浊_(tái)機(jī)器、幾千個(gè)工作者一起協(xié)同訓(xùn)練,也可以理解為多硬件資源,比如 GPU。
在阿里巴巴內(nèi)部,林偉所在團(tuán)隊(duì)訓(xùn)練過(guò)非常大規(guī)模的稀疏網(wǎng)絡(luò),這類模型很容易大,而且更多偏向于推薦、搜索等信息流類型,往往需要幾千個(gè)工作者的協(xié)同訓(xùn)練。同時(shí)對(duì)于稠密網(wǎng)絡(luò),比如感知類的 AI 網(wǎng)絡(luò),比如視覺、語(yǔ)音、自然語(yǔ)言處理現(xiàn)在也在變得越來(lái)越大,也需要要幾十張到幾百?gòu)埧ㄒ黄鹩?xùn)練。
如何設(shè)計(jì)相對(duì)完善的機(jī)器學(xué)習(xí)平臺(tái)
根據(jù)林偉介紹,一個(gè)大規(guī)模的機(jī)器學(xué)習(xí)平臺(tái)首先要具備優(yōu)秀的調(diào)度能力,并非所有任務(wù)每天都需要大量資源,但要保證極限情況下的承受能力足夠強(qiáng),而所需資源不多時(shí)又可及時(shí)釋放。所以,大部分機(jī)器學(xué)習(xí)平臺(tái)都是從小規(guī)模逐漸做起來(lái)的,這個(gè)過(guò)程會(huì)積累一些能力,比如沉淀一些框架和平臺(tái),或者幫助開發(fā)者做分布式訓(xùn)練等。
阿里最近推出了機(jī)器學(xué)習(xí)平臺(tái) PAI 的 DSW,其托管在云平臺(tái)之上,非常方便,開發(fā)者可隨時(shí)打開 IDE,該平臺(tái)可自動(dòng)保存工作內(nèi)容,然后可以快速開發(fā)。如果開發(fā)者覺得模型基本完成,希望無(wú)感知提交到更大的集群中時(shí)就涉及關(guān)于模型的開發(fā)。
模型離不開數(shù)據(jù),在數(shù)據(jù)處理中,開發(fā)人員需要有配套的大數(shù)據(jù)處理能力,需要對(duì)數(shù)據(jù)進(jìn)行清洗和提純,這就要求平臺(tái)需要具備大數(shù)據(jù)能力,這也是為什么計(jì)算平臺(tái)會(huì)把 AI 和大數(shù)據(jù)作為兩大引擎,因?yàn)楸舜酥g需要交互。同時(shí),平臺(tái)上訓(xùn)練出的模型需要在業(yè)務(wù)中達(dá)到一定效果,比如讓服務(wù)做到低延時(shí)、高吞吐,保證服務(wù)發(fā)布、更新、迭代、切換以及報(bào)警、監(jiān)控等。
事實(shí)上,AI 屬于計(jì)算密集型任務(wù),需要大量數(shù)據(jù)交互,所以分配資源的時(shí)候要根據(jù)任務(wù)大小來(lái)考慮如何對(duì)應(yīng)到底層硬件的拓?fù)浣Y(jié)構(gòu)上,使之能夠充分利用異構(gòu)特性完成整個(gè)過(guò)程,我們能夠充分利用系統(tǒng)對(duì)訓(xùn)練任務(wù)的理解,有效調(diào)度不同部分到不同的資源上面,充分地利用多種硬件資源,發(fā)揮系統(tǒng)的最高效率。
此外,要考慮容錯(cuò),因?yàn)檫^(guò)大的集群經(jīng)常容易發(fā)生錯(cuò)誤,機(jī)器并不是永動(dòng)機(jī),隨時(shí)可能出現(xiàn)問(wèn)題,軟件也不能保證沒有 bug,容錯(cuò)需要和調(diào)度系統(tǒng)配合在一起。
在這個(gè)流程中,為了提高效率,還需要配備各種性能優(yōu)化和加速工具,包括推理、量化、壓縮、蒸餾等,這些工具彼此之間的連接也是平臺(tái)需要做的事情。
總之,AI 工程非常復(fù)雜,牽涉很多環(huán)節(jié)。
阿里大規(guī)模機(jī)器學(xué)習(xí)實(shí)踐
回顧阿里的機(jī)器學(xué)習(xí)研發(fā)之路,林偉表示,與所有事物的發(fā)展過(guò)程一樣。起初都是希望通過(guò)各種技術(shù)手段提升商業(yè)效果,當(dāng)時(shí)阿里內(nèi)部各個(gè)部門都有自己的算法團(tuán)隊(duì),從集團(tuán)的橫向?qū)用鎭?lái)看,這種煙囪式結(jié)構(gòu)是比較低效的,因此希望沉淀出一些通用能力,這就是 PAI 的前身。
那時(shí),深度學(xué)習(xí)還沒有火起來(lái),更多的是傳統(tǒng)機(jī)器學(xué)習(xí)、傳統(tǒng)的訓(xùn)練模型或者統(tǒng)計(jì)算法,阿里希望能夠復(fù)用這些算法,進(jìn)而提高整個(gè)集團(tuán)的研發(fā)效率,于是就推出了?PAI-Studio,其實(shí)就是把算法沉淀為組件,在數(shù)據(jù)處理和算法之間做串聯(lián),使之能夠圖形化管理,這是 PAI-Studio1.0 時(shí)代,這個(gè)時(shí)代就是更好的把工作流程串成可視化的圖。
隨著深度學(xué)習(xí)的出現(xiàn),業(yè)界開始出現(xiàn)形形色色的算法。此時(shí),阿里希望可以把深度學(xué)習(xí)的能力做起來(lái),因?yàn)榘⒗飪?nèi)部有大量數(shù)據(jù),特別是核心電商領(lǐng)域,由于數(shù)據(jù)量過(guò)于龐大, 開源引擎的問(wèn)題開始暴露出來(lái),會(huì)遇到各種各樣規(guī)模性問(wèn)題,這促使阿里在這方面走得很快。
隨著優(yōu)化的逐漸深入,大家已經(jīng)開始應(yīng)用深度學(xué)習(xí)做感知類應(yīng)用。在這種情況下,阿里自研的機(jī)器學(xué)習(xí)引擎在外面也是有市場(chǎng)的。阿里開始對(duì)外輸出,服務(wù)更多的企業(yè)客戶。
一直以來(lái),林偉認(rèn)為做系統(tǒng)的人可以分為三類:第一類是做出來(lái)的系統(tǒng)可以解決業(yè)務(wù)問(wèn)題;第二類是做出來(lái)的系統(tǒng)可以在未來(lái) 5 年持續(xù)不斷地在原來(lái)的設(shè)計(jì)上疊加新功能,并且具備一定可擴(kuò)展性,這樣的系統(tǒng)具備一定生命力;第三類是通過(guò)一些部分的重構(gòu)和變革,可以讓系統(tǒng)隨著業(yè)務(wù)規(guī)模的增長(zhǎng)持續(xù)發(fā)展,這一類是最強(qiáng)的也是最難的,基于這些想法,林偉整個(gè)團(tuán)隊(duì)不斷迭代機(jī)器學(xué)習(xí)平臺(tái) PAI,并且在阿里巴巴內(nèi)部業(yè)務(wù)和外部業(yè)務(wù)均取得了不錯(cuò)的效果。
機(jī)器學(xué)習(xí) PAI 平臺(tái)的目的是希望算法開發(fā)同學(xué)能夠更加高效地開發(fā)應(yīng)用算法,幫開發(fā)者做到更好的性能,更大規(guī)模和更低成本的訓(xùn)練。
在阿里巴巴內(nèi)部,業(yè)務(wù)場(chǎng)景數(shù)量很多,數(shù)據(jù)規(guī)模也很大,這讓我們能夠訓(xùn)練出一些有效模型。但這些訓(xùn)練模型往往需要很多異構(gòu)機(jī)器協(xié)同,我們會(huì)搭建一個(gè)很大的共享平臺(tái),讓形形色色的任務(wù)都在平臺(tái)上跑,最大的任務(wù)可能要處理 TB 級(jí)別的數(shù)據(jù)。如何讓訓(xùn)練任務(wù)跑得起來(lái),在需要共享的集群里面做好調(diào)度和系統(tǒng)配合,使得我們充分利用這些資源提高集群效率,是我們整個(gè)平臺(tái)的愿景。
最開始,PAI 在 Studio 方面做得比較多,林偉整個(gè)團(tuán)隊(duì)將阿里巴巴的 AI 能力以 Studio 的模式開放出去。其中包括智能數(shù)據(jù)標(biāo)注、可視化建模、在線預(yù)測(cè)部署等全托管的 AI 工程服務(wù)
最近這一年,PAI 更加注重云原生,與 K8s 等進(jìn)行了緊密結(jié)合,使服務(wù)能夠?qū)υ粕系目蛻趔w系更加規(guī)則。包括云原生交互式開發(fā)平臺(tái) PAI-DSW,以及云原生分布式深度學(xué)習(xí)訓(xùn)練平臺(tái) PAI-DLC
另外,林偉帶領(lǐng)團(tuán)隊(duì)在使用體驗(yàn)上不斷投入,包括產(chǎn)品的易用性和敏捷性,以及 Open API ,希望可以幫助更多個(gè)人和小型企業(yè)慢慢成長(zhǎng)。
PAI 同樣是一個(gè)開放的平臺(tái),在深度學(xué)習(xí)框架這層一直是擁抱開源、兼容生態(tài),比如會(huì)在開源的 TF 框架下面做優(yōu)化,同時(shí)將更改及時(shí)提交到開源社區(qū),也與 Facebook 形成戰(zhàn)略合作,推動(dòng)有關(guān) Pytorch 的一系列優(yōu)化想法。在開源開放層面,開源的 ALink 與 Flink 形成數(shù)據(jù)和算法的有效結(jié)合。如今,阿里在集群管理層面也開始參與到 K8s 社區(qū),希望有更多貢獻(xiàn)。
實(shí)踐建議
如果企業(yè)希望內(nèi)部實(shí)踐大規(guī)模機(jī)器學(xué)習(xí)平臺(tái),林偉建議,在人才層面,想要構(gòu)建大規(guī)模機(jī)器學(xué)習(xí)平臺(tái)需要對(duì)業(yè)務(wù)有所理解,算法團(tuán)隊(duì)需要具備一些基本功,雖然現(xiàn)在的機(jī)器學(xué)習(xí)沒有傳統(tǒng)的機(jī)器學(xué)習(xí)對(duì)算法要求那么高,但迭代模型還是需要建立在對(duì)算法、數(shù)據(jù)、模型原理的理解上,并且需要具備一定數(shù)學(xué)基礎(chǔ)。
在工程上面,林偉表示,工程是模型落地、產(chǎn)業(yè)化很重要的一環(huán),企業(yè)需要深入考慮各種引擎的優(yōu)劣,挑選適合自己需求的,可能是研發(fā)為主,也可能是效率或者模型很大的情況下需要分布式的訓(xùn)練、服務(wù)和推理平臺(tái)等。
同時(shí),AI 工程比較復(fù)雜,不僅局限于訓(xùn)練和推理,還需要關(guān)注數(shù)據(jù)的處理,現(xiàn)在業(yè)界也有很多做深度學(xué)習(xí)的企業(yè),如果具備有算法團(tuán)隊(duì),再加上開源框架,單機(jī)或許就可以訓(xùn)練模型,這種方式遇到大規(guī)模訓(xùn)練的時(shí)候,其實(shí)是有很多挑戰(zhàn)的,最開始碰到的可能是數(shù)據(jù)問(wèn)題,數(shù)據(jù)該怎么管,怎么樣存、再往后可能就是訓(xùn)練的問(wèn)題,所以是否可以有效管理并探索出適合自己的方向,可能是比較重要的事情。
“我不是打廣告,我覺得選擇云平臺(tái)最終可以幫助企業(yè)提高效率、節(jié)省成本,并且開發(fā)人員應(yīng)該把自己的關(guān)注點(diǎn)放在業(yè)務(wù)相關(guān)的算法層面,這一層其實(shí)有大量發(fā)展空間。同時(shí),因?yàn)榘⒗镌萍嫒莞黝惿鷳B(tài)和標(biāo)準(zhǔn),因此也不存在綁定問(wèn)題,不滿意隨時(shí)可以搬下去,但上云確實(shí)是業(yè)界的趨勢(shì)?!?/p>
初始上云時(shí),企業(yè)可能在考慮與使用物理機(jī)相比到底有沒有競(jìng)爭(zhēng)力,但從長(zhǎng)遠(yuǎn)來(lái)看,云平臺(tái)提供的彈性和靈活等特性會(huì)大大節(jié)省成本。而且,對(duì)于有技術(shù)夢(mèng)想的公司來(lái)說(shuō),云平臺(tái)其實(shí)有很多想象和實(shí)驗(yàn)的空間,企業(yè)可以根據(jù)自己的需求選擇不同層次的 API,接入不同的能力,然后提高自己公司的生產(chǎn)效率,更好地應(yīng)對(duì)業(yè)務(wù)發(fā)展。
結(jié)束語(yǔ)
在過(guò)往 15 年分布式系統(tǒng)的從業(yè)生涯中,林偉同樣見證了開發(fā)者生產(chǎn)力被一步步解放的過(guò)程,自從云計(jì)算、人工智能等新興技術(shù)出現(xiàn),市面上不時(shí)就可以聽到開發(fā)者對(duì)這些技術(shù)將取代人工的擔(dān)憂。
對(duì)此,林偉表示,其實(shí)你從另一個(gè)層面來(lái)看就會(huì)發(fā)現(xiàn)技術(shù)的世界一直在更新?lián)Q代,以操作系統(tǒng)為例,當(dāng) Linux 和 Windows 占據(jù)上風(fēng)之后,其他操作系統(tǒng)都慢慢消失了,那曾經(jīng)的這群開發(fā)者去哪里了呢?要么積極加入到 Linux 和 Windows 的開發(fā)中,要么擁抱新的技術(shù)變化,去看看下一個(gè)技術(shù)熱點(diǎn)是什么。事實(shí)上,每一個(gè)業(yè)務(wù)場(chǎng)景發(fā)生變化的時(shí)候,都可能是新的機(jī)會(huì),可以嘗試做下一波要爆發(fā)的技術(shù),從中獲得的滿足感將會(huì)很大。
對(duì)于做平臺(tái)的研發(fā)人員而言,只要場(chǎng)景清晰了,就會(huì)開始沉淀,但肯定也會(huì)有一些混沌的、未知的領(lǐng)域,這些地方就會(huì)有大量新的思路和想法出現(xiàn),身處其中的每個(gè)人都在發(fā)揮自己的長(zhǎng)處,然后慢慢沉淀。
嘉賓介紹:
林偉,阿里云機(jī)器學(xué)習(xí)研究員,對(duì)大規(guī)模并發(fā)系統(tǒng)有 10 年以上的系統(tǒng)架構(gòu)設(shè)計(jì)及研發(fā)經(jīng)驗(yàn),并在國(guó)際一流 ODSI、NSDI、SIGMOD 會(huì)議上多次發(fā)表論文。原微軟大數(shù)據(jù)平臺(tái)組的核心成員,曾在微軟亞洲搜索技術(shù)中心和微軟美國(guó)工作 10 年,一直從事分布式系統(tǒng)開發(fā)和大數(shù)據(jù)平臺(tái)的相關(guān)工作。
評(píng)論