|
近年來,AI 領域?qū)椰F(xiàn)突破性進展,吸引了全球企業(yè)爭相采用 AI 技術來培育新增長、形成新動能、加快產(chǎn)業(yè)與科技的創(chuàng)新融合。在這個背景下,AI 人才開始供不應求,AI 產(chǎn)品迎來爆發(fā)。 然而新技術總有一定壁壘,機器學習不僅需要算法科學家構(gòu)建新模型,工程師應用新模型,還需要工程師合力建設機器學習平臺。而在應用機器學習的企業(yè)和團隊中,建設機器學習平臺正是重要一環(huán)。 那么機器學習平臺是什么呢?它又有什么突出特性?今天,才云科技 AI 平臺工程師 gaocegege 將為各位答疑解惑。 機器學習平臺對于不同工程師角色而言,有著不同的含義。在之前發(fā)布的關于 Kubeflow 的文章中,有不少網(wǎng)友私下詢問到底什么是機器學習平臺,它與機器學習框架有何不同。在這篇文章里,我將從不同的維度來介紹一直談論的機器學習平臺到底是什么。 01 如果你有一個算法工程師首先,我給大家講個故事: 小咩是 TooYoung 科技的算法工程師,最近他正在為公司實現(xiàn)一個圖像識別的模型。為了支持他的工作,公司 Infra 團隊的工程師小嬸給了他四臺機器,每臺各自配有 4 塊英偉達顯卡。 臨走前,小嬸拍了拍小咩的肩膀:兄弟,之后一個月,這些機器隨便你用。小咩表面風輕云淡,心里其實已經(jīng)樂開了花,他已經(jīng)很久沒有在這么多顯卡的機器上放飛過自我了。 ![]() 拿到機器后,小咩需要做的第一件事是配環(huán)境。經(jīng)過簡單的權衡,小咩決定使用自己熟悉的 TensorFlow 來進行模型的開發(fā)工作。盡管 TensorFlow 已經(jīng)發(fā)布 2.0 版本,但小咩是一個戀舊的人,他還是習慣使用經(jīng)典的 1.4 版本。他登錄到了機器上,發(fā)現(xiàn)事情并不簡單。 四臺機器中: 機器 A 的 TensorFlow 只支持 CPU; 機器 B 的 TensorFlow 的版本是 1.13; 機器 C 是公司里的算法科學家小莎在投稿 NeurIPS 時做實驗用的,只安裝了 PyTorch。 小咩嘆了一口氣,他飛快下樓買了一瓶快樂水,擼起了袖子,開始環(huán)境配置之旅。 第一臺機器的問題在于已裝的 TensorFlow 版本不支持 GPU。小咩熟練地卸載了機器 A 的環(huán)境,首先確認機器 A 上沒有安裝開源的英偉達驅(qū)動 Nouveau。之后,他開始安裝英偉達的官方驅(qū)動以及 cuDNN,最后安裝了支持 GPU 的 TensorFlow 版本??粗聊簧洗虺龅?Hello World,小咩嘴角揚起了微笑。 第二臺機器的問題在于 TensorFlow 的版本太新了。于是小咩依樣畫葫蘆,卸載了新版本,安裝了舊版本。但在這個過程中,他發(fā)現(xiàn) TensorFlow v1.4 不支持機器 B 上的 CUDA 9.0。雖然有些不情愿,小咩還是打開了谷歌,熟練鍵入“Remove CUDA 9.0 and install CUDA 8.0”。按照網(wǎng)友的指示,他終于解決了這個問題。 第三臺機器問題比較少,小咩很快就處理好了。 接下來,小咩就可以開始自己的算法實驗了。為了方便,他先在自己的筆記本電腦上建立了一個 Jupyter Notebook,將數(shù)據(jù)下載到電腦上,進行了小規(guī)模的實驗。 經(jīng)過一天的努力,他覺得自己的算法效果還算不錯,可以放到服務器上進行分布式訓練,以期更快的訓練速度。于是他利用 /etc/hosts 給四臺機器做了一個簡單的服務發(fā)現(xiàn),利用 TensorFlow 的分布式訓練功能進行了分布式的訓練。 經(jīng)過數(shù)天調(diào)參,小咩模型的各項 metrics 都達到了公司的要求,于是他準備將模型發(fā)布到公司的生產(chǎn)環(huán)境中。小咩利用了開源項目 TensorFlow Serving,在公司內(nèi)部的 PaaS 平臺上新建了一個服務,并將自己訓練的模型發(fā)布到了公司的生產(chǎn)集群上??粗髁糠€(wěn)定地灌入自己的模型服務,小咩深吸了一口氣。 02 如果你有一個機器學習平臺時間一天天過去了,這個模型不知不覺已經(jīng)在線上服務了數(shù)月,小咩也由工程師變成了公司里的 Tech Lead。最近,這一模型有了相關的增量模型,但小咩已經(jīng)沒有足夠的時間再參與到一線的開發(fā)工作中了。為了進一步提升模型性能,小咩團隊里的新進工程師小豆接起了這項任務,利用新的數(shù)據(jù)集重新訓練模型,并再次發(fā)布。 在幾個星期之前,Infra 團隊利用開源項目 Kubeflow 為算法工程師和算法科學家們搭建了一個麻雀雖小五臟俱全的機器學習平臺。小豆決定利用這一平臺對模型進行訓練。 他首先利用 Infra 團隊已經(jīng)打包好的 TensorFlow v1.4 的 Docker 鏡像,用平臺發(fā)起了一次分布式訓練。訓練中的服務發(fā)現(xiàn),異常處理等都由平臺自動完成。 訓練間隙,小豆在查看文檔發(fā)現(xiàn)平臺還支持超參數(shù)訓練,而且使用起來非常簡單,只需要指定相應的參數(shù)搜索空間即可。于是他又發(fā)起了一次超參數(shù)學習任務,對模型的超參數(shù)選擇進行了優(yōu)化。 模型訓練結(jié)束后,小豆利用平臺上已有的模型服務功能,直接將訓練好的模型上傳到分布式存儲中。平臺根據(jù)配置自動完成了模型的部署,并針對算法工程師們關注的指標進行了細粒度監(jiān)控。 ![]() 通過以上故事,我們可以了解到,機器學習平臺的用戶往往是機器學習算法科學家或工程師。而機器學習平臺希望解決的是機器學習工程化落地的問題。 在小咩第一次進行模型開發(fā)與部署的時候,他遇到了很多來自系統(tǒng)環(huán)境和服務發(fā)現(xiàn)等原本應該由 Infra 來解決的問題。這其中包括服務器上的顯卡驅(qū)動問題、TensorFlow 版本的問題、服務發(fā)現(xiàn)的問題、訓練過程中的跟蹤與錯誤恢復等。而當小豆在機器學習平臺上進行模型訓練和模型發(fā)布時,這些問題已經(jīng)都交由平臺來自動化處理,他可以專注于業(yè)務的開發(fā)。 對于機器學習工程師,TensorFlow、PyTorch 這些框架改變的是機器學習的編程范式,而機器學習平臺改變的是機器學習的開發(fā)與發(fā)布流程。 而從基礎架構(gòu)工程師的角度來看,機器學習平臺某種程度上類似 PaaS,但又有所不同。兩者相同之處在于都涉及到資源的管理與調(diào)度、服務發(fā)現(xiàn)等功能,不同之處在于機器學習平臺對于 GPU 有極其強烈的需求,與此同時,和傳統(tǒng)的應用相比,機器學習有著不同的工作流程。 舉個例子,傳統(tǒng)應用可以很好地抽象出持續(xù)集成與持續(xù)部署工作流,應用的每一次提交都可以觸發(fā)對應的測試與發(fā)布流程。而對于機器學習任務來說,測試往往并不是對代碼本身的測試,而是對模型效果的測試。 類似的諸多差異導致了目前的 PaaS 等平臺不能很好地處理機器學習這一應用場景的需求。換句話說,這時候我們需要一個新的平臺,它既繼承了 PaaS 的某些功能,又針對更好地支持機器學習業(yè)務,增加了大量新特性。 下面我們就來具體地談談,這些特性包括什么。 ![]() 準備數(shù)據(jù)是一次機器學習任務的起點,但數(shù)據(jù)準備的平臺化,從實現(xiàn)上來說應該是比較困難的。因為數(shù)據(jù)準備是一個需求差異非常大、很難將其標準化的過程。目前開源領域也有一些針對不同場景的打標工具,如 labelme 等,但這一方面的工程實現(xiàn)和研究性工作其實都不太常見。 訓練是機器學習任務中的重中之重。機器學習平臺的訓練支持指的是,用戶通過指定使用的資源數(shù)量、分布式模型(AllReduce、ParameterServer 等)、分布式配置(ParameterServer 數(shù)量等)等,直接在平臺上進行模型訓練。 從平臺的角度來看,這一特性主要涉及到對不同類型的框架、不同的分布式模型、不同的硬件的支持,以及分布式訓練任務的服務發(fā)現(xiàn)、錯誤處理,不同任務的資源隔離與復用等問題。除此之外,有些場景對于在線訓練也有需要,如何支持在線訓練,是一個機器學習全流程都需要考慮的問題。 再接下來,就是模型服務。這一特性與傳統(tǒng)的 PaaS 比較類似,因為模型服務目前多是以 RESTful API 暴露給外部的,與傳統(tǒng)的 Web 服務非常類似。不過從實現(xiàn)角度而言,不同的框架訓練的模型往往需要用不同的方式發(fā)布出去,而且模型服務關注的度量指標與傳統(tǒng) Web 服務也有較大差別。 回到版本管理,傳統(tǒng)的應用往往只涉及配置與代碼的管理,而機器學習則多了不少新的維度,如模型、版本等。這一部分的特性雖然比較 dirty work,但是卻與用戶的使用體驗息息相關。除此之外,還有整個過程中的監(jiān)控問題(訓練過程監(jiān)控,服務過程監(jiān)控),也是同樣性質(zhì)的工作。 在解決完上面的問題后,機器學習工作流的構(gòu)建這一特性就水到渠成地擺到臺面上了。如何讓用戶用盡可能少的交互取得他 / 她想要的效果,以及如何加強這一過程的自動化,是離不開工作流方面的工作的。 至于超參數(shù)訓練與模型結(jié)構(gòu)搜索,這是機器學習平臺的高級特性。雖然自動機器學習聽上去非常有前途,但相關技術目前仍處于研究階段。對于超參數(shù)訓練來說,最難過的一關是性價比問題。Random Search、Grid Search 和貝葉斯優(yōu)化方法是最常用的調(diào)參方法,它們找到的參數(shù)確實可能比人工調(diào)參有更好的效果,但與此同時,它們也會需要更多的硬件資源。因此這一特性屬于錦上添花,而不能起到雪中送炭的作用。至于模型結(jié)構(gòu)搜索,就更遙遠了。 05 小結(jié)上述的介紹是掛一漏萬的,一個成熟的平臺系統(tǒng)一定有更多的細節(jié)值得去討論,限于篇幅關系,這里不再展開。我撰寫此文只是想大致說明一下,機器學習平臺究竟是怎樣的一個存在,它可以幫助到用戶做到什么事情,提高了哪些方面的效率。 介紹完之后,再打一個小小的廣告。我們團隊目前正在招聘中。如果你對構(gòu)建基于 Kubernetes 的 Cloud Native 機器學習平臺系統(tǒng)感興趣,可以了解下我司才云科技的產(chǎn)品 Caicloud Clever。一直以來,我們始終在這一方面努力攻堅,目前才云科技在機器學習平臺開源項目 Kubeflow 上的貢獻位列全球前三。 |
|
|
來自: flyk0tcfb46p9f > 《AI》