原作者:云棲社區(qū)-場(chǎng)景研讀
姓名:郭滋棟 班級(jí):1402019 學(xué)號(hào):13020199007
【嵌牛導(dǎo)讀】:在2017云棲大會(huì)深圳峰會(huì)開(kāi)源專(zhuān)場(chǎng)上缚忧,阿里云容器服務(wù)技術(shù)專(zhuān)家車(chē)漾做了題為《在阿里云上構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用》的精彩演講悟泵,車(chē)漾首先從2016年深度學(xué)習(xí)最火的兩個(gè)應(yīng)用AlphaGo與Prisma談起,從宏觀層面分享了機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)所做的事情闪水,并就Prisma的發(fā)展故事談起朽肥,為大家介紹了應(yīng)該學(xué)會(huì)以工程思想思考和解決問(wèn)題,并著重介紹了阿里云基于容器服務(wù)的機(jī)器學(xué)習(xí)解決方案架構(gòu)設(shè)計(jì)以及如何借助阿里云快速搭建自己的機(jī)器學(xué)習(xí)應(yīng)用,精彩不容錯(cuò)過(guò)驼抹。
【嵌牛鼻子】:深度學(xué)習(xí) 阿里云 函數(shù) 容器 負(fù)載均衡 解決方案
【嵌牛正文】:在2016年有兩個(gè)深度學(xué)習(xí)應(yīng)用使得深度學(xué)習(xí)這個(gè)概念走入了平常百姓家明也,大家開(kāi)始意識(shí)到深度學(xué)習(xí)技術(shù)好像和我們的生活開(kāi)始產(chǎn)生聯(lián)系了握玛。第一件事情就是AlphaGo戰(zhàn)勝了圍棋世界的高手李世石愕撰,它向我們證明了一件事情:計(jì)算機(jī)不但具有強(qiáng)大的運(yùn)算能力,它甚至開(kāi)始學(xué)會(huì)學(xué)習(xí)了,更可怕的是計(jì)算機(jī)的學(xué)習(xí)能力是一種縱向深入的學(xué)習(xí)能力点骑,也就是隨著計(jì)算機(jī)看到的數(shù)據(jù)越來(lái)越多袁辈,隨著時(shí)間的不斷往前發(fā)展济舆,計(jì)算機(jī)有可能成為某個(gè)領(lǐng)域的專(zhuān)家,在圍棋中是這樣浅悉,在其他的領(lǐng)域,比如醫(yī)學(xué)等領(lǐng)域也都會(huì)有同樣的影響娇昙。可以說(shuō)兵志,AlphaGo是第一個(gè)使我們真正意識(shí)到機(jī)器學(xué)習(xí)具有一種自我演進(jìn)能力的應(yīng)用楼镐。
第二件事情就比較有意思了妖谴,Prisma這款應(yīng)用是2016年度蘋(píng)果APP Store的排到第一名的最佳手機(jī)應(yīng)用,這款手機(jī)應(yīng)用其實(shí)也是基于深度學(xué)習(xí)技術(shù)來(lái)實(shí)現(xiàn)的,它所做的事情就是像將自己家小區(qū)后院的照片傳上去滋迈,然后指定一個(gè)繪畫(huà)大師的作品皆疹,比如指定梵高的《星空》這個(gè)作品螺戳,將兩者合成一張新的圖片组哩。
合成后的這個(gè)圖片的特點(diǎn)就是內(nèi)容還是樓下的小區(qū)涛浙,但是這張圖片的風(fēng)格看起來(lái)就是梵高畫(huà)出來(lái)的了。那么如果使用機(jī)器學(xué)習(xí)的語(yǔ)言來(lái)解釋一下這是如何做的就是實(shí)際上這個(gè)應(yīng)用做了兩件事情:第一件事情就是從這張梵高的畫(huà)中學(xué)習(xí)出來(lái)一個(gè)函數(shù)f()抱怔,這個(gè)函數(shù)f()的價(jià)值是什么呢固逗?其實(shí)就是反應(yīng)了梵高這幅畫(huà)作的風(fēng)格哈踱,這就是機(jī)器學(xué)習(xí)所做的第一件事情,從這張畫(huà)作學(xué)習(xí)到了一個(gè)能夠反應(yīng)梵高風(fēng)格的函數(shù)。其實(shí)比如說(shuō)產(chǎn)生整個(gè)圖片的工作需要花費(fèi)10個(gè)小時(shí)的話,上面說(shuō)的這個(gè)產(chǎn)生f()函數(shù)的這件事情需要花費(fèi)9個(gè)小時(shí)规个,甚至是9個(gè)小時(shí)55分鐘唤蔗。而最后將這個(gè)函數(shù)f()求出來(lái)之后探遵,將樓下小區(qū)的照片這個(gè)X賦值到f()函數(shù)中,就產(chǎn)生了一個(gè)新的圖片妓柜,其實(shí)剩下的僅有的5分鐘就是用來(lái)做這件事情的箱季。
講到這里大家應(yīng)該就能理解所謂機(jī)器學(xué)習(xí)是在做什么,應(yīng)該怎樣去轉(zhuǎn)換這張圖片棍掐。這時(shí)候可能大家會(huì)產(chǎn)生一個(gè)疑問(wèn)藏雏,其實(shí)早在2010年就已經(jīng)濾鏡程序了,通過(guò)一個(gè)濾鏡打上去其實(shí)也可以產(chǎn)生這樣的效果塌衰,這個(gè)濾鏡程序和深度學(xué)習(xí)的畫(huà)像有什么區(qū)別呢诉稍?其實(shí)兩者之間的區(qū)別就在于這個(gè)f(),這里面最大的區(qū)別就是f()是如何產(chǎn)生的最疆,傳統(tǒng)的濾鏡技術(shù)是依靠一個(gè)程序員實(shí)現(xiàn)的杯巨,讓他去理解這個(gè)畫(huà)像的風(fēng)格是什么樣的,他自己去手敲代碼去實(shí)現(xiàn)f()這個(gè)函數(shù)努酸,而機(jī)器學(xué)習(xí)則是由機(jī)器自己從這個(gè)圖片中提取信息并且計(jì)算出f()服爷。這種區(qū)別產(chǎn)生的影響有兩個(gè):第一個(gè)就是程序員寫(xiě)一個(gè)梵高畫(huà)的風(fēng)格的程序可能需要花費(fèi)兩周的時(shí)間,如果再來(lái)一個(gè)畢加索就可能還需要兩周的時(shí)間获诈,也就是產(chǎn)生的成本比較高仍源,這是第一個(gè)影響,第二個(gè)影響是什么呢舔涎?就是理解性問(wèn)題笼踩,第一種使用濾鏡的方式對(duì)于畫(huà)的理解并不是梵高的理解,而是編寫(xiě)程序的程序員的理解亡嫌,所以在這里面需要為大家解釋清楚的就是機(jī)器學(xué)習(xí)和加濾鏡的區(qū)別就是機(jī)器學(xué)習(xí)的本質(zhì)嚎于,也就是這個(gè)規(guī)律是機(jī)器自己學(xué)習(xí)到的掘而,并不需要人來(lái)教,人只需要給它數(shù)據(jù)集就可以了于购。這個(gè)厲害的深度學(xué)習(xí)算法實(shí)際上并不是Prisma這個(gè)公司的創(chuàng)始人發(fā)明的袍睡,而是在2015年,也就是Prisma大火的前一年肋僧,三個(gè)德國(guó)的數(shù)據(jù)科學(xué)家發(fā)明了這個(gè)算法并且利用這個(gè)算法創(chuàng)辦了自己的創(chuàng)業(yè)公司叫做DeepArt斑胜,它所能做的事情就是提供一個(gè)網(wǎng)站讓用戶將自己的圖片上傳上去并選擇一個(gè)風(fēng)格,經(jīng)過(guò)3到5個(gè)小時(shí)的計(jì)算產(chǎn)生處一個(gè)有自己圖片內(nèi)容的大師風(fēng)格的作品嫌吠。這個(gè)網(wǎng)站上線之后效果還算不錯(cuò)止潘,有一些人愿意花100多歐元去得到這樣一幅作品,但是并沒(méi)有大火居兆。
而在2016年年初的時(shí)候覆山,一個(gè)俄羅斯的軟件工程師看到了這個(gè)論文并且也看到了DeepArt所做的產(chǎn)品竹伸,這個(gè)俄羅斯的工程師就認(rèn)為他們做的產(chǎn)品存在問(wèn)題泥栖。那么這個(gè)網(wǎng)站之所以沒(méi)有火起來(lái)是為什么呢?俄羅斯工程師進(jìn)行了思考勋篓,他發(fā)現(xiàn)原有產(chǎn)品中存在兩個(gè)問(wèn)題吧享,第一個(gè)問(wèn)題就是產(chǎn)生圖片的時(shí)間太長(zhǎng)了,5到6個(gè)小時(shí)譬嚣,沒(méi)有人愿意去等這么長(zhǎng)的時(shí)間钢颂;第二個(gè)問(wèn)題就是DeepArt只提供了一個(gè)網(wǎng)站,大家都知道網(wǎng)站無(wú)法得到高頻的訪問(wèn)拜银,我們需要有個(gè)電腦才能去進(jìn)行登錄再訪問(wèn)殊鞭,所以使用起來(lái)的效果并不好。所以這個(gè)俄羅斯工程師就想開(kāi)發(fā)一個(gè)手機(jī)APP尼桶,并使得手機(jī)APP能夠達(dá)到的效果是將圖片上傳上去之后等待10到20秒就能夠得到已經(jīng)選好風(fēng)格的圖片操灿,所以他就開(kāi)始研究如何讓圖片轉(zhuǎn)換的時(shí)間變短。其實(shí)就像剛才提到的泵督,在這里機(jī)器學(xué)習(xí)主要做兩件事情趾盐,第一件就是去求解代表風(fēng)格的函數(shù),第二件事情就是利用將值賦給這個(gè)函數(shù)去計(jì)算出最后的結(jié)果值小腊,也就是說(shuō)在做風(fēng)格轉(zhuǎn)換時(shí)的工作就是去解這個(gè)方程去求出繪畫(huà)風(fēng)格救鲤。如果能夠像數(shù)據(jù)庫(kù)一樣將風(fēng)格函數(shù)持久化地存儲(chǔ)到硬盤(pán)上,每一次生成新圖片的時(shí)候都將函數(shù)從硬盤(pán)上進(jìn)行加載而免去了計(jì)算的過(guò)程秩冈,就可以將原來(lái)的6小時(shí)變成幾分鐘甚至更短的時(shí)間本缠,實(shí)現(xiàn)后這個(gè)時(shí)間縮短達(dá)到了20秒。這個(gè)俄羅斯工程師實(shí)際上并不是機(jī)器學(xué)習(xí)方面的專(zhuān)家入问,但是他找到了問(wèn)題的癥結(jié)丹锹,并在此基礎(chǔ)之上使用了一個(gè)月的時(shí)間開(kāi)發(fā)出了這套Prisma的APP犹赖,這個(gè)APP在歐洲一上線在大概兩周的時(shí)間內(nèi)就有了三千萬(wàn)的下載量。如下圖所示卷仑,梅德韋杰夫也是Prisma的忠實(shí)粉絲峻村。當(dāng)時(shí)在8月份的時(shí)候,在歐洲人普遍對(duì)于藝術(shù)有較高的鑒賞能力的情況下锡凝,他們都認(rèn)為這個(gè)應(yīng)用比較能夠打動(dòng)內(nèi)心粘昨。
剛才講述的這個(gè)故事實(shí)際上是想告訴大家一個(gè)道理,我們現(xiàn)在正處于AI即將到來(lái)的時(shí)代窜锯,但是AI時(shí)代并不只屬于數(shù)據(jù)科學(xué)家张肾、AI科學(xué)家以及這些程序員們。AI的技術(shù)是非常重要的一件事情锚扎,但比這件事情更重要的是如何利用AI技術(shù)轉(zhuǎn)化出相應(yīng)的產(chǎn)品吞瞪,實(shí)現(xiàn)數(shù)據(jù)、技術(shù)和產(chǎn)品之間的聯(lián)動(dòng)驾孔,真正能夠?qū)I技術(shù)應(yīng)用到大家的日常生活中芍秆,像Prisma一樣應(yīng)用AI來(lái)為大家創(chuàng)造價(jià)值,討得大家的歡心翠勉,這個(gè)才是最重要的妖啥,也是需要大家一起去思考的事情。也許你并不是AI的專(zhuān)家对碌,但是也應(yīng)該去思考如何才能將AI應(yīng)用起來(lái)荆虱。實(shí)際上重要的是我們的想法,如果你有自己的想法朽们,再利用一些開(kāi)源的工具怀读,加上阿里云的資源就可以很容易地構(gòu)建屬于自己的深度學(xué)習(xí)的應(yīng)用。
我們所處的是一個(gè)開(kāi)源的時(shí)代骑脱,很多深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的學(xué)習(xí)庫(kù)實(shí)際上都是開(kāi)放的菜枷,包括谷歌的TensorFlow、微軟的CNTK惜姐、Caffe犁跪、Mxnet等這些都是開(kāi)源的機(jī)器學(xué)習(xí)庫(kù),如果大家想去學(xué)習(xí)這些開(kāi)源庫(kù)歹袁,其實(shí)有很多相關(guān)的資源可以參考坷衍。
在這里主要介紹一下TensorFlow,TensorFlow是2015年谷歌開(kāi)源的一套機(jī)器學(xué)習(xí)庫(kù)条舔,其在深度學(xué)習(xí)方面非常好用枫耳,目前在GitHub上面大約有5萬(wàn)顆星,其實(shí)也是大家開(kāi)始深度學(xué)習(xí)一個(gè)非常好的起點(diǎn)孟抗,它的最大特點(diǎn)是雖然不算性能最好迁杨,但是最為簡(jiǎn)單钻心。
在這里想和大家說(shuō)的是關(guān)于剛才提到的風(fēng)格轉(zhuǎn)換這件事情實(shí)際上有很多個(gè)實(shí)現(xiàn),依賴(lài)于不同的機(jī)器學(xué)習(xí)庫(kù)铅协,包括TensorFlow捷沸、Mxnet、Torch以及Caffe等狐史,在分享的最后也會(huì)給大家看一下一些使用這些庫(kù)實(shí)現(xiàn)應(yīng)用的代碼痒给。
有了這些機(jī)器學(xué)習(xí)庫(kù)和機(jī)器學(xué)習(xí)的代碼可以供大家進(jìn)行學(xué)習(xí),剩下的就是讓大家了解一下如何構(gòu)建自己的機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)的應(yīng)用骏全。剛才提到了整個(gè)機(jī)器學(xué)習(xí)的流程從大的方面可以分為兩個(gè)部分苍柏,一部分可以稱(chēng)之為求解方程,第二部分可以稱(chēng)為給方程賦值姜贡。所以在機(jī)器學(xué)習(xí)的流程中的第一部分就是訓(xùn)練试吁,根據(jù)數(shù)據(jù)如何去訓(xùn)練出這個(gè)機(jī)器學(xué)習(xí)模型,實(shí)際上就是在求解這個(gè)方程楼咳。而第二步當(dāng)這個(gè)方程解完之后熄捍,就可以給方程賦予新的值讓它去做預(yù)測(cè)。具體來(lái)看爬橡,第一步在求解方程中最重要的也是機(jī)器學(xué)習(xí)最核心的事情就是數(shù)據(jù)和計(jì)算量治唤,首先需要準(zhǔn)備數(shù)據(jù)并且上傳到云上棒动,這是在云上進(jìn)行機(jī)器學(xué)習(xí)的最重要的起點(diǎn)糙申。第二步就是需要開(kāi)發(fā)自己的訓(xùn)練程序,這個(gè)訓(xùn)練程序所做的事情就是根據(jù)數(shù)據(jù)來(lái)進(jìn)行訓(xùn)練船惨、求解方程柜裸,并對(duì)于程序的正確性進(jìn)行確認(rèn)。第三步粱锐,當(dāng)我們具有大規(guī)模數(shù)據(jù)的時(shí)候疙挺,就可以執(zhí)行一些訓(xùn)練,剛開(kāi)始時(shí)可能做的是單機(jī)怜浅,但是在真正進(jìn)行訓(xùn)練的時(shí)候铐然,可能因?yàn)樾阅艿男枨蟆?shù)據(jù)量的需求可能需要使用GPU以及分布式的訓(xùn)練恶座,這個(gè)時(shí)候就是第三步執(zhí)行訓(xùn)練任務(wù)搀暑,在執(zhí)行完訓(xùn)練任務(wù)之后有一個(gè)很重要的工作就是導(dǎo)出這個(gè)訓(xùn)練模型,導(dǎo)出這個(gè)訓(xùn)練方程跨琳。在最后將這些應(yīng)用到在線預(yù)測(cè)中自点,就是相當(dāng)于對(duì)于方程進(jìn)行賦值,這就是真正的工作流程脉让。
然后向大家先介紹一下阿里云基于容器服務(wù)的機(jī)器學(xué)習(xí)解決方案架構(gòu)桂敛。如下圖所示的解決方案是以容器服務(wù)為核心的功炮,在這里面所有服務(wù)是以容器作為載體的,容器服務(wù)貫穿整個(gè)機(jī)器學(xué)習(xí)的整個(gè)生命周期术唬,包括開(kāi)發(fā)薪伏、訓(xùn)練、預(yù)測(cè)以及數(shù)據(jù)處理粗仓,并且這個(gè)解決方案很好地集成了阿里云已有的機(jī)器學(xué)習(xí)能力毅该,比如彈性計(jì)算、高性能計(jì)算以及彈性GPU計(jì)算潦牛、VPC網(wǎng)絡(luò)以及共享存儲(chǔ)眶掌、運(yùn)維以及鏡像等能力。使大家的深度學(xué)習(xí)應(yīng)用能夠無(wú)縫地和阿里云的服務(wù)進(jìn)行集成巴碗,這就是這個(gè)方案所能夠帶來(lái)的好處朴爬。
那么這個(gè)事情具體是如何實(shí)現(xiàn)的呢?首先第一步是需要準(zhǔn)備數(shù)據(jù)橡淆,因?yàn)槲覀冎老裨诎⒗镌粕献錾疃葘W(xué)習(xí)的話召噩,上傳數(shù)據(jù)最簡(jiǎn)單的方式是通過(guò)OSS,這就可以通過(guò)OSS命令或者圖形客戶端的拖拽方式將數(shù)據(jù)上傳上去逸爵。同時(shí)如果數(shù)據(jù)量非常巨大具滴,那么OSS還提供了一套傳輸上G數(shù)據(jù)的解決方案,這樣就可以支持大規(guī)模的運(yùn)算师倔。
第二步就是開(kāi)始創(chuàng)建云端的實(shí)驗(yàn)開(kāi)發(fā)環(huán)境构韵,利用圖形應(yīng)用,在這里是使用阿里云的圖形管理界面來(lái)創(chuàng)建Jupyter的一套開(kāi)發(fā)測(cè)試環(huán)境趋艘。如果大家曾實(shí)現(xiàn)過(guò)深度學(xué)習(xí)的編程可能就會(huì)知道Jupyter是一套比較好的交互式的文本疲恢,可以在上面寫(xiě)自己的查詢代碼然后以交互的方式知道每一步執(zhí)行的結(jié)果是什么樣子。這里面同時(shí)還加入了TensorBoard瓷胧,TensorBoard具有針對(duì)TensorFlow的一些支持显拳,可以將整個(gè)學(xué)習(xí)的過(guò)程包括最后求解的方程所求的數(shù)值解與真實(shí)解之間的誤差是多少以圖形化的方式展示出來(lái)〈晗簦可以通過(guò)這個(gè)觀察整個(gè)誤差的發(fā)展情況杂数,以此來(lái)判斷整個(gè)的學(xué)習(xí)過(guò)程是不是在正確的方向上。搭建完成環(huán)境后的第一個(gè)步驟就是構(gòu)建應(yīng)用瘸洛。
當(dāng)程序?qū)懲曛笞嵋疲乱徊阶龅氖虑榫褪菢?gòu)建云端訓(xùn)練,也就是如何在云上面將真正的程序跑起來(lái)货矮,因?yàn)檫@個(gè)程序可能是分布式羊精,那么這里面支持的是什么呢?其實(shí)通過(guò)圖形用戶化的界面就可以去指定這里面使用到的是單機(jī)訓(xùn)練還是多機(jī)訓(xùn)練,以及這個(gè)程序所需要的依賴(lài)是什么喧锦。而這里面最重要的是方程的解读规,這可以通過(guò)阿里分布式存儲(chǔ)解決方案幫助去將checkpoint和模型保存成為可持久化的數(shù)據(jù),同時(shí)利用TensorBoard去監(jiān)控整個(gè)訓(xùn)練的過(guò)程燃少。
這里稍微提一下如何使用TensorFlow去保存模型束亏。TensorFlow提供了兩種保存模型的方式,第一種方式是Checkpoint阵具,Checkpoint實(shí)際上是最常用的保存方式碍遍,其最常用的場(chǎng)景就是當(dāng)進(jìn)行訓(xùn)練的時(shí)候,有時(shí)總會(huì)因?yàn)橐恍┠涿畹脑蚴沟谜麄€(gè)進(jìn)程都崩掉了阳液,這時(shí)候中間的結(jié)果就會(huì)丟失了怕敬,而Checkpoint的好處就是比如做一千步訓(xùn)練或者多少步訓(xùn)練的時(shí)候,就可以將數(shù)據(jù)保存到一個(gè)固定的Checkpoint里面帘皿,如果中間崩掉的時(shí)候就可以從Checkpoint點(diǎn)重新開(kāi)始訓(xùn)練东跪,這是Checkpoint的最主要的應(yīng)用場(chǎng)景。當(dāng)然由于TensorFlow在最早的時(shí)候就將Checkpoint提供出來(lái)鹰溜,所以很多的TensorFlow用戶也會(huì)使用Checkpoint來(lái)做Session虽填,實(shí)際上其原理就是將原來(lái)訓(xùn)練的結(jié)果保存下來(lái),在另外的地方加載下來(lái)之后重新再計(jì)算一遍f()曹动,也就是在加載之后進(jìn)行一次運(yùn)算起到了預(yù)測(cè)的作用斋日。
現(xiàn)在大家比較常用的一種方式是利用model進(jìn)行預(yù)測(cè),也就是TensorFlow提供了一套預(yù)測(cè)框架是基于GRTC的TensorFlow Serving墓陈,并且它是使用C++完成的恶守,它所接受的數(shù)據(jù)類(lèi)型是export類(lèi)型,而不是Checkpoint類(lèi)型跛蛋,所以它有一套特殊的編程API可以把自己的這套model導(dǎo)出熬的,并且由TensorFlow Serving直接進(jìn)行加載,通過(guò)不同的Java客戶端赊级、Go客戶端、Python客戶端甚至Android和IOS客戶端來(lái)訪問(wèn)它實(shí)現(xiàn)預(yù)測(cè)岔绸,它所做的也是TensorFlow相應(yīng)的運(yùn)算的方程求解的過(guò)程理逊。
最后的一件事情是當(dāng)一些Checkpoint運(yùn)算成功結(jié)束之后,Checkpoint保留出來(lái)之后就可以進(jìn)行在線運(yùn)算和預(yù)測(cè)的過(guò)程盒揉。這里還是通過(guò)前端的UI指定預(yù)測(cè)類(lèi)型以及預(yù)測(cè)應(yīng)該用是應(yīng)該怎樣去部署的晋被,可以選擇使用GPU還是CPU,選擇使用Hadoop TensorFlow的預(yù)測(cè)方式還是選擇使用自定義的預(yù)測(cè)方式以及通過(guò)Checkpoint的預(yù)測(cè)方式刚盈,這些都是支持的羡洛。同時(shí)也支持運(yùn)維期間需要的負(fù)載均衡和彈性伸縮的能力,這樣可以看到將一個(gè)正常的圖片放進(jìn)去藕漱,選擇不同的Checkpoint以及不同的風(fēng)格類(lèi)型的時(shí)候欲侮,能夠產(chǎn)生不同的運(yùn)算結(jié)果崭闲。
那么如何在阿里云的這套環(huán)境上面進(jìn)行開(kāi)發(fā)測(cè)試呢,首先進(jìn)去前端控制臺(tái)威蕉,描述應(yīng)用的名字刁俭,然后從多個(gè)應(yīng)用框架進(jìn)行選擇,是使用TensorFlow 1.0還是TensorFlow 0.12還是其他更多的框架韧涨。在這里面由于需要監(jiān)控訓(xùn)練集牍戚,所以需要寫(xiě)上需要監(jiān)控的日志目錄是什么。當(dāng)選擇創(chuàng)建之后虑粥,就可以看到創(chuàng)建出來(lái)兩個(gè)中心節(jié)點(diǎn)如孝,一個(gè)是Jupyter的開(kāi)發(fā)測(cè)試環(huán)境,輸入密碼之后就可以使用Jupyter執(zhí)行并看到執(zhí)行的結(jié)果以及訓(xùn)練的過(guò)程娩贷。當(dāng)訓(xùn)練完成之后就可以通過(guò)TensorBoard看整個(gè)訓(xùn)練的結(jié)果是什么樣子暑竟,是不是能夠達(dá)到最終的目標(biāo)值的Cost越來(lái)越小。在TensorBoard上可以看到訓(xùn)練的趨勢(shì)是什么樣子育勺,其精確度是在向什么樣的方向發(fā)展但荤,還可以看到在TensorFlow里面進(jìn)行運(yùn)算時(shí)整個(gè)數(shù)據(jù)組織是什么樣的結(jié)構(gòu)。
當(dāng)程序開(kāi)發(fā)結(jié)束之后涧至,開(kāi)始進(jìn)行訓(xùn)練腹躁。這時(shí)就需要指定訓(xùn)練輸入的數(shù)據(jù)集,以及預(yù)處理的模型南蓬,這里的框架有多種選擇纺非,還可以指定預(yù)定義的框架,這里面還可以選擇是不是支持GPU赘方,然后還有指定數(shù)據(jù)需要寫(xiě)入到哪個(gè)數(shù)據(jù)件里面以及數(shù)據(jù)來(lái)源是什么烧颖,還需要指定總共訓(xùn)練的次數(shù)以及需要保存的地點(diǎn)是在什么位置,都是需要一些規(guī)約來(lái)定義這些事情的窄陡。
整個(gè)方案的最大特點(diǎn)就是速度會(huì)非晨换矗快,就是可以快速地在這套解決方案上搭建出來(lái)自己的機(jī)器學(xué)習(xí)小應(yīng)用跳夭。這里面做的事情首先會(huì)從GitHub上將應(yīng)用下載下來(lái)涂圆,然后這里面的規(guī)約就會(huì)自動(dòng)安裝自定義的Python依賴(lài),之后就開(kāi)始調(diào)用GPU資源并啟動(dòng)币叹,開(kāi)始構(gòu)建網(wǎng)絡(luò)润歉,之后真正開(kāi)始進(jìn)行訓(xùn)練。當(dāng)將Checkpoint指定到一個(gè)更好的位置的時(shí)候就會(huì)將云的產(chǎn)生數(shù)據(jù)存放到分布式存儲(chǔ)上颈抚。當(dāng)擁有這些數(shù)據(jù)之后就可以進(jìn)行預(yù)測(cè)踩衩,預(yù)測(cè)的具體內(nèi)容包括把之前計(jì)算過(guò)的東西保存下來(lái),之后根據(jù)保存的數(shù)據(jù)和模型提供一個(gè)Read API,這里面并沒(méi)有TensorFlow Serving這個(gè)標(biāo)準(zhǔn)框架而是自己實(shí)現(xiàn)了使用Python寫(xiě)的框架驱富,并使用Checkpoint方式加載應(yīng)用锚赤。并且如果需要使用負(fù)載均衡可以提供更多的實(shí)例的數(shù)量,并指定加載數(shù)據(jù)的模型數(shù)據(jù)卷以及阿里云的彈性的SLB負(fù)載均衡服務(wù)萌朱,就會(huì)很快地將服務(wù)提進(jìn)來(lái)宴树。當(dāng)將服務(wù)提進(jìn)來(lái)之后還是通過(guò)路由列表,通過(guò)阿里云提供的負(fù)載均衡訪問(wèn)端點(diǎn)進(jìn)行訪問(wèn)晶疼。它所能提供的東西就是在這里上傳一個(gè)圖片酒贬,然后根據(jù)所指定的不同的風(fēng)格進(jìn)行轉(zhuǎn)換就可以得到不同的風(fēng)格圖片,基本上就實(shí)現(xiàn)了與Prisma相似的功能翠霍。也就是說(shuō)在現(xiàn)有的開(kāi)源技術(shù)上锭吨,就可以在阿里云上構(gòu)建自己的一個(gè)小應(yīng)用,并且可以提供一站式運(yùn)維的體驗(yàn)寒匙。甚至在阿里云上不僅可以轉(zhuǎn)換圖片的風(fēng)格零如,現(xiàn)在還可以轉(zhuǎn)化視頻的風(fēng)格。
總結(jié)
![6b1b2da467cbedb9efef46be4f860d93e84f6978](https://yqfile.alicdn.com/6b1b2da467cbedb9efef46be4f860d93e84f6978.png)
最后總結(jié)一下锄弱,大家可以看到阿里云基于容器的機(jī)器學(xué)習(xí)解決方案的最大特點(diǎn)就是相對(duì)而言比較簡(jiǎn)單考蕾,能夠根據(jù)一些開(kāi)源的東西以及一些已有的服務(wù)快速地構(gòu)建一套機(jī)器學(xué)習(xí)應(yīng)用,并且使應(yīng)用與阿里云上的NAS会宪,OSS肖卧,SLB以及簡(jiǎn)單日志服務(wù)等都可以做到無(wú)縫集成,只需要通過(guò)將他們加在一起就可以了掸鹅,這是這套方案的第一個(gè)優(yōu)勢(shì)就是比較簡(jiǎn)單并且快速塞帐。
第二個(gè)好處就是優(yōu)化,與容器服務(wù)團(tuán)隊(duì)進(jìn)行合作的還有一個(gè)比較有名的就是阿里云的高性能計(jì)算團(tuán)隊(duì)巍沙,像對(duì)于阿里媽媽這些的優(yōu)化都是他們團(tuán)隊(duì)做的葵姥,他們會(huì)提供一些特定場(chǎng)景性能優(yōu)化的TensorFlow和Caffe的一些鏡像,針對(duì)一些特定的場(chǎng)景進(jìn)行性能優(yōu)化句携,而不是百分百的優(yōu)化榔幸。另外一件事情就是這套方案在持續(xù)集成和持續(xù)交付這件事情上是比較有經(jīng)驗(yàn)的。其實(shí)可以將機(jī)器學(xué)習(xí)看做兩部分务甥,第一部分可以看做實(shí)驗(yàn)科學(xué)牡辽,需要不斷地去嘗試,找出最佳的組合來(lái)做推演敞临;第二部分其實(shí)是交付的科學(xué),如何將模型交付到機(jī)器上麸澜,如何進(jìn)行A/B Test挺尿,而這件事情又是容器服務(wù)團(tuán)隊(duì)非常擅長(zhǎng)的事情,既可以幫助優(yōu)化性能,又能夠幫助優(yōu)化流程编矾。
第三件事情就是定制化熟史,阿里云希望能夠通過(guò)為用戶提供更大的靈活性,比如增加自己定義的鏡像以及operator等來(lái)滿足高級(jí)用戶的需求窄俏,并平衡靈活性和自動(dòng)化之間的關(guān)系蹂匹。