SageMaker的主要功能,涵蓋從數(shù)據(jù)準備、訓(xùn)練、到推理部署一條龍服務(wù)

截圖中的是海外區(qū)域的版本,與中國區(qū)的版本差別不大,4月30日,中國區(qū)的SageMaker也正式開放,而且,我還嗅到了羊毛的氣息,真的有有免費套餐可用,AWS 中國(寧夏)區(qū)域提供一個月免費套餐,看完我的簡短體驗后,馬上就可以免費體驗了(薅羊毛了)。

對我來說,Amazon SageMaker不能把我這樣什么都不懂的人變成機器學(xué)習(xí)專家,但Amazon SageMaker真的可以降低機器學(xué)習(xí)的門檻。

由于很多機器學(xué)習(xí)相關(guān)的工具都不夠成熟,經(jīng)常存在兼容性的問題,這些工具不能像安裝手機應(yīng)用那樣一鍵安裝和運行,用起來很不方便,還經(jīng)常有各種Bug。在人人都得學(xué)點大數(shù)據(jù)技術(shù),學(xué)點機器學(xué)習(xí)技術(shù)的時代,這些局面一定會改變,但需要時間。Amazon SageMaker的出現(xiàn)是為了改變這一局面。

在Amazon SageMaker這里,用戶只需要帶著自己的算法和代碼,以及準備好的數(shù)據(jù),就能在這里開始訓(xùn)練并部署模型了,看起來就像拎包入住。即便是沒有自己的算法和代碼,也沒有數(shù)據(jù),也可以和我一樣利用SageMaker自帶的demo體驗一把。

動手吧,零基礎(chǔ)小白用十多分鐘訓(xùn)練一個模型

話不多說,趕緊和我一起動起手來,用十來分鐘體會訓(xùn)練并部署機器學(xué)習(xí)模型的過程吧。

示例代碼非常簡單,它使用的是非常簡單的K-means聚類算法和非常常見的mnist數(shù)據(jù)集來做一個手寫體識別,說簡單點,就是識別手寫圖片里0到9這十個數(shù)字。我要做的就是打開一個帶有代碼的筆記本實例,一路Shift+Enter就能完成訓(xùn)練,然后……然后就結(jié)束了。

2018年的時候,我曾經(jīng)用SageMaker的筆記本實例訓(xùn)練并部署了一個模型<2018年舊稿子的鏈接>,經(jīng)過兩年的發(fā)展迭代,SageMaker有了許多新的功能,所以,這次我試著用全新發(fā)布的SageMaker Studio重新走一遍當(dāng)初那個超級簡單的機器學(xué)習(xí)訓(xùn)練過程。

如果您對于機器學(xué)習(xí)的訓(xùn)練過程有一點點好奇,可以看看這幾張截圖,如果對具體步驟不感興趣,可以跳過這些截圖。

第一張截圖的含義是:在SageMaker進行一些設(shè)置,這樣就能訪問AWS的各種資源了。

第二張截圖的含義是獲取需要用來訓(xùn)練的數(shù)據(jù)。這些數(shù)據(jù)非常規(guī)范,不用做任何額外操作直接就能來訓(xùn)練。

第三張圖的含義是:觀察數(shù)據(jù)集的特征,然后按照數(shù)據(jù)集的特征進行下一步的處理。

第四張圖的含義是訓(xùn)練模型,由于數(shù)據(jù)集比較簡單,算法也簡單,很快就會訓(xùn)練出一個模型。

第五張圖說的是訓(xùn)練完成了,訓(xùn)練時間大約花費了四五分鐘。

第六張圖的含義是:模型訓(xùn)練完成后,要部署在線推理服務(wù),設(shè)置需要運行模型的主機類型。

第七張圖的含義是:做了一個驗證,看看模型的準確度。不過,這里看的不是特別直觀。

第八張圖的含義是:做了一個分類,系統(tǒng)認為這幾個數(shù)字的寫的比較像,所以才放在一起。我們再多看幾張圖。

從上面兩張圖,我們的肉眼就可以大致感受到這個準確度。最后,記得刪除剛才啟用的主機資源,不然,一直運行著可是要一直扣錢的。

以上就是我訓(xùn)練一個簡單模型的全部過程,可以說不能更簡單了。唯一的門檻就是,你最好認識幾個常用的英文單詞,不然會覺得過程有點無聊。

所以,以上就是SageMaker的一些主要功能了。

SageMaker非常適合那些需要實驗算法和調(diào)參數(shù)的人。比如,你突發(fā)奇想,想去試一個新算法,但身邊的電腦性能太差了,而且電腦上的工具經(jīng)常出問題,有了SageMaker之后就沒有這些麻煩了,只要你有代碼和數(shù)據(jù),完全可以在這里用完即走。訓(xùn)練速度很快,成本也不高,起碼不用買動輒好幾千甚至上萬塊錢的顯卡。(PS:萬一發(fā)現(xiàn)自己不適合機器學(xué)習(xí),這顯卡出二手可就……請聯(lián)系我。)

進階需求:Amazon SageMaker Studio把該做的都做了

我曾在個人電腦用LSTM網(wǎng)絡(luò)訓(xùn)練一個古詩生成的模型,訓(xùn)練次數(shù)少的時候,模型給出來的唐詩看著很別扭,訓(xùn)練次數(shù)多起來看起來會自然一點,當(dāng)然,內(nèi)容并沒有什么含義。前者幾分鐘就訓(xùn)練完成了,后者則花了一個晚上,我如果想改變其中一個參數(shù),那么就需要再訓(xùn)練一個晚上,讓電腦嗡嗡響一晚上,而且希望不要意外關(guān)機,不然前功盡棄啊!

數(shù)據(jù)科學(xué)家訓(xùn)練一個復(fù)雜的模型,一次訓(xùn)練可能需要好幾天,一次訓(xùn)練只能說明一次算法或者參數(shù)的表現(xiàn),如何證明算法和參數(shù)合適不合適則需要N多次的訓(xùn)練。如果每一次嘗試都要等上好幾天的話,那么,那么數(shù)據(jù)科學(xué)家的工作也太輕松了吧!如果5天出一個結(jié)果,訓(xùn)練1萬次,那這個項目大概需要兩代人前赴后繼。orz

以前,雖然Amazon SageMaker已經(jīng)有很多功能可以加速訓(xùn)練過程,但對于用戶的調(diào)參和優(yōu)化算法使用還沒有那么方便,而這,恰恰是真正需要的東西,要知道,除了準備數(shù)據(jù),數(shù)據(jù)科學(xué)家們絕大部分時間都在改算法和調(diào)參數(shù)。

AWS去年十二月又推出了Amazon SageMaker Studio,集成了多個功能。這里我挑幾個我個人覺得有意思的介紹一下:

Amazon SageMaker的功能全景圖

Amazon SageMaker Experiments主要就解決了多次實驗迭代管理這個問題,它可以幫你跟蹤、記錄和比較數(shù)千個機器學(xué)習(xí)任務(wù),包括任務(wù)的里數(shù)據(jù)集,算法還有參數(shù),模型,平臺配置,參數(shù)設(shè)置等,都能通過圖形或表格的方式靈活觀察迭代變化的情況,對比一下看哪個表現(xiàn)最好,調(diào)出表現(xiàn)最合適的模型。系統(tǒng)自動記錄,再也不用手動記錄了!一會兒我們可以試試這個功能。

另外,我還發(fā)現(xiàn)Amazon SageMaker Studio還有一個非常實用的協(xié)作功能。當(dāng)你調(diào)參或者改代碼的時候碰到問題了,想請教別人解決,但是你不能把你電腦搬過去,也沒辦法要求別人配置一套跟你完全一樣的環(huán)境,也不方便把AWS賬號給他,那怎么調(diào)試呢?最好的辦法就是加入?yún)f(xié)作機制,給你直接用我的環(huán)境,你看到的東西跟我看到的完全一樣,所見即所得地就地解決問題。這協(xié)作效率~

Amazon SageMaker Studio是一個在線的IDE(集成開發(fā)環(huán)境)工具,IDE常有的功能他都有,包括Debug和在線監(jiān)控等等功能,Amazon SageMaker Notebook也包含在其中。Amazon SageMaker Notebook可以說是Jupyter Notebook的加強版,它在Jupyter Notebook基礎(chǔ)上做了許多強化。

個人覺得AWS的Amazon SageMaker Debugger功能非常良心,它能提前發(fā)現(xiàn)超參數(shù)的問題,如果沒有它,超參數(shù)有問題在訓(xùn)練任務(wù)運行期間不會暴露,訓(xùn)練完之后可能會發(fā)現(xiàn),如果能在早期發(fā)現(xiàn)問題的話就不用白等了。

Amazon SageMaker Studio最受我這種新手菜鳥推崇的功能可能就是Amazon SageMaker Autopilot了,它可以自己做數(shù)據(jù)預(yù)處理,自己選擇算法,自動調(diào)整模型,自動調(diào)用各種計算和存儲資源。是自動化的機器學(xué)習(xí)功能,是一個讓機器訓(xùn)練機器的功能。當(dāng)然,目前還是有一定局限性的。

初體驗:體驗SageMaker Studio自動化的機器學(xué)習(xí)

帶著滿滿的好奇心,我試著用Kaggle上下載的“泰坦尼克號獲救”數(shù)據(jù)來進行自動化的機器學(xué)習(xí),我這樣啥也不懂的也體驗了一下自動化的機器學(xué)習(xí)。出乎意料的是,整個操作過程還非常簡單!

如下圖所示,我先把下載下來的數(shù)據(jù)傳到了S3上。(原版的數(shù)據(jù)只有891條數(shù)據(jù),SageMaker Autopilot要求最少得有1000條數(shù)據(jù),于是,我手動復(fù)制了109條數(shù)據(jù),測試才得以進行,這個操作非常不推薦,但為了體驗自動化的機器學(xué)習(xí),就這樣吧)

配置自動化機器學(xué)習(xí)服務(wù)

我指定了訓(xùn)練數(shù)據(jù)(S3存儲中里的csv表格)和要預(yù)測的參數(shù)(Survived-獲救與否)后,點確定之后就什么都不用管了。

SageMaker Autopilot自動化機器學(xué)習(xí)的四個階段

如上圖所示,整個過程需要經(jīng)過上圖所示的四個階段。所有操作,包括數(shù)據(jù)預(yù)處理,選擇算法還有調(diào)整參數(shù)的操作都由系統(tǒng)自動完成,缺點是等候的時間比較長。

看到這里,其實整個體驗就完成了,如果您對于自動化的訓(xùn)練過程有興趣,也可以接著往下看幾張截圖。

SageMaker Autopilot Data Exploration可以查看數(shù)據(jù)

等待中我還看到我提供的數(shù)據(jù)的概況,我的數(shù)據(jù)其實還需要進行處理,Autopilot會自動進行數(shù)據(jù)預(yù)處理,有朋友可能會好奇,聽著挺高大上的,啥是數(shù)據(jù)預(yù)處理呢?

舉個栗子:如上圖所示,“Age”部分有的數(shù)據(jù)是空的,要進行運算的話,必須以合理的方式把數(shù)據(jù)補上,類似的,字符串?dāng)?shù)據(jù)也要處理掉??傊瑪?shù)據(jù)預(yù)處理還是挺麻煩的,是個時間黑洞,還好Autopilot能自己搞定,幸福感up!up!

當(dāng)進行到參數(shù)優(yōu)化的模型調(diào)優(yōu)階段后,會看到Objective目標值,也就是模型預(yù)測的精準度在不停的變化,雖然不一定下一個就比上一個好,但大體上,目標值是在不斷提高的。

不斷優(yōu)化的模型精準度

所有操作都是自動完成的,大概等了兩個小時候后,訓(xùn)練終于完成了!

本次體驗,在SageMaker Experiments的自動化的參數(shù)優(yōu)化過程中,一共訓(xùn)練出了250個模型(要是手動訓(xùn)練250次,會不會瘋?),最后選一個模型進行部署即可。那么,選哪個模型呢?下圖中,SageMaker Experiments會自動給你標注出來哪個是最好的!是不是很貼心。

點擊Deploy Model即可配置用來運行模型的主機。

結(jié)語

通過上述經(jīng)歷,我想說,亞馬遜云服務(wù)(AWS) 的Amazon SageMaker對于想成為數(shù)據(jù)科學(xué)家的人非常實用,希望本文對想了解它的人能有所幫助。(更多動手體驗類文章可查看微信公眾號:云體驗師)

分享到

zhupb

相關(guān)推薦