別再讓數(shù)據(jù)科學(xué)家管理Kubernetes集群了……
生產(chǎn)機(jī)器學(xué)習(xí)具有組織性問(wèn)題。
該問(wèn)題是伴隨其出現(xiàn)的副產(chǎn)品,因?yàn)樯a(chǎn)機(jī)器學(xué)習(xí)出現(xiàn)時(shí)間相對(duì)較短。
盡管更成熟的領(lǐng)域(如網(wǎng)絡(luò)開(kāi)發(fā))經(jīng)過(guò)數(shù)十年的探索已開(kāi)發(fā)到極致,但生產(chǎn)機(jī)器學(xué)習(xí)還沒(méi)有步入這一階段。
舉個(gè)例子,假如你的任務(wù)是為初創(chuàng)企業(yè)建立一個(gè)產(chǎn)品工程團(tuán)隊(duì),來(lái)負(fù)責(zé)開(kāi)發(fā)某個(gè)網(wǎng)絡(luò)應(yīng)用程序。即使沒(méi)有組建團(tuán)隊(duì)的經(jīng)驗(yàn),你也能找到很多有關(guān)如何建立和發(fā)展工程團(tuán)隊(duì)的文章和書籍。
現(xiàn)在,假如你的公司是一家涉足機(jī)器學(xué)習(xí)的初創(chuàng)企業(yè)。你已經(jīng)聘請(qǐng)了一位數(shù)據(jù)科學(xué)家來(lái)領(lǐng)導(dǎo)完成最初的工作,且成效顯著。機(jī)器學(xué)習(xí)與公司產(chǎn)品的關(guān)系越來(lái)越緊密,數(shù)據(jù)科學(xué)家承擔(dān)的責(zé)任越來(lái)越重大,很明顯,機(jī)器學(xué)習(xí)團(tuán)隊(duì)需要發(fā)展。
這種情況下,沒(méi)有那么多有關(guān)如何組建生產(chǎn)機(jī)器學(xué)習(xí)團(tuán)隊(duì)的文章和書籍供人參考。
這種情況十分普遍,機(jī)器學(xué)習(xí)公司的新責(zé)任(尤其是基礎(chǔ)設(shè)施)交由數(shù)據(jù)科學(xué)家承擔(dān)的情況時(shí)有發(fā)生。
這樣是不對(duì)的。
機(jī)器學(xué)習(xí)和機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施之間的區(qū)別
現(xiàn)在,平臺(tái)工程師和產(chǎn)品工程師之間的區(qū)別已經(jīng)很清楚了。同樣,數(shù)據(jù)分析師和數(shù)據(jù)工程師之間也有著明顯的不同。
很多公司的機(jī)器學(xué)習(xí)仍然缺少這樣的專業(yè)知識(shí)。
要了解區(qū)分機(jī)器學(xué)習(xí)和機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施為什么這么重要,這對(duì)于研究?jī)烧吒髯缘墓ぷ鲀?nèi)容和所需工具會(huì)很有幫助。
為了設(shè)計(jì)和訓(xùn)練新模型,數(shù)據(jù)科學(xué)家需要:
- 花時(shí)間在notebook上分析數(shù)據(jù)、進(jìn)行實(shí)驗(yàn)。
- 考慮數(shù)據(jù)結(jié)構(gòu)、為數(shù)據(jù)集選擇正確的模型體系等問(wèn)題。
- 使用Python、R、Swift或Julia之類的編程語(yǔ)言。
- 在PyTorch或TensorFlow等機(jī)器學(xué)習(xí)框架方面有自己的見(jiàn)解。
換句話說(shuō),數(shù)據(jù)科學(xué)家的職責(zé)、技能和工具將圍繞操縱數(shù)據(jù)來(lái)開(kāi)發(fā)模型,最終輸出的將是能夠提供最準(zhǔn)確預(yù)測(cè)的模型。
機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施與之截然不同。
將模型投入生產(chǎn)的普遍做法是將其作為微服務(wù)部署到云端。要將模型部署為生產(chǎn)應(yīng)用程序界面,工程師需要:
- 同時(shí)關(guān)注分配文件、終端和云服務(wù)商的控制臺(tái),以優(yōu)化穩(wěn)定性、延遲和成本。
- 考慮自動(dòng)伸縮實(shí)例、更新模型(前提是應(yīng)用程序界面不崩潰)、在圖形處理器上進(jìn)行推理等問(wèn)題。
- 使用Docker、Kubernetes、Istio、Flask等工具,以及云服務(wù)商提供的任何服務(wù)或應(yīng)用程序界面。
下圖展示了機(jī)器學(xué)習(xí)和機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施之間的區(qū)別,十分形象,易于理解:

機(jī)器學(xué)習(xí)vs.機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施
直觀來(lái)看,數(shù)據(jù)科學(xué)家應(yīng)該處理左邊的圓圈,而不是右邊的圓圈。
非專業(yè)人士管理基礎(chǔ)設(shè)施有什么問(wèn)題?
假如必須指定某個(gè)人來(lái)管理你的機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施,但你又不想讓他專職完成這項(xiàng)工作,那么只有兩個(gè)選擇:
- 數(shù)據(jù)科學(xué)家,因?yàn)樗麄兪煜C(jī)器學(xué)習(xí)。
- 開(kāi)發(fā)運(yùn)營(yíng)工程師,因?yàn)樗麄兪煜ねㄓ没A(chǔ)設(shè)施。
這兩個(gè)選擇都有問(wèn)題。
首先,數(shù)據(jù)科學(xué)家應(yīng)該用盡可能多的時(shí)間做他們擅長(zhǎng)的工作——數(shù)據(jù)科學(xué)。雖然學(xué)習(xí)基礎(chǔ)設(shè)施對(duì)他們來(lái)說(shuō)并不是難事,但基礎(chǔ)設(shè)施和數(shù)據(jù)科學(xué)都是專職工作,將數(shù)據(jù)科學(xué)家的時(shí)間分配給這兩項(xiàng)工作會(huì)降低工作質(zhì)量。
其次,公司需要專門負(fù)責(zé)機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施的人員。在生產(chǎn)過(guò)程中提供模型與托管網(wǎng)絡(luò)應(yīng)用程序不同,需要有人專門負(fù)責(zé)該項(xiàng)工作,能夠在組織內(nèi)部宣傳機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施。
事實(shí)證明,這樣的宣傳至關(guān)重要。筆者接觸過(guò)很多機(jī)器學(xué)習(xí)公司,令人驚訝的是,公司內(nèi)部成員的瓶頸通常不是來(lái)自技術(shù)方面的挑戰(zhàn),而是來(lái)自公司自身的挑戰(zhàn)。
例如,筆者見(jiàn)過(guò)某些機(jī)器學(xué)習(xí)團(tuán)隊(duì)需要圖形處理器 (GPUs)進(jìn)行推理——GPT-2這樣的大模型基本上需要圖形處理器提供合理的延遲——卻無(wú)法獲得它們,因?yàn)檫@些團(tuán)隊(duì)的基礎(chǔ)設(shè)施由更大的開(kāi)發(fā)運(yùn)營(yíng)團(tuán)隊(duì)管理,而開(kāi)發(fā)運(yùn)營(yíng)團(tuán)隊(duì)并不想把費(fèi)用記在自己的賬上。
有人專門負(fù)責(zé)機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施,意味著該公司不僅擁有了能夠不斷改進(jìn)基礎(chǔ)設(shè)施的團(tuán)隊(duì)成員,還擁有了能夠滿足團(tuán)隊(duì)需要的宣傳者。
那么誰(shuí)來(lái)管理基礎(chǔ)設(shè)施呢?
機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施工程師。
這樣一個(gè)頭銜也許并不能讓人認(rèn)同,先把頭銜的事放到一邊,必須承認(rèn)的是,生產(chǎn)機(jī)器學(xué)習(xí)仍然處于發(fā)展的早期階段,更不用說(shuō)頭銜了。不同的公司可能會(huì)賦予其不同的稱呼:
- 機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施工程師
- 數(shù)據(jù)科學(xué)平臺(tái)工程師
- 機(jī)器學(xué)習(xí)生產(chǎn)工程師
成熟的機(jī)器學(xué)習(xí)公司(比如Spotify)正在招聘這樣的職位:

網(wǎng)飛公司也是如此:

隨著支持機(jī)器學(xué)習(xí)的功能(比如Gmail的Smart Compose、優(yōu)步的ETA預(yù)測(cè)和網(wǎng)飛公司的內(nèi)容推薦)在軟件中越來(lái)越普遍,機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施也變得越來(lái)越重要。
如果人們希望未來(lái)存在大量支持機(jī)器學(xué)習(xí)的軟件,那么消除基礎(chǔ)設(shè)施瓶頸至關(guān)重要——為此,人們需要將其視為真正的專業(yè)知識(shí),讓數(shù)據(jù)科學(xué)家專注于數(shù)據(jù)科學(xué)工作。
別再讓數(shù)據(jù)科學(xué)家管理Kubernetes集群了……