華文網

詳細教程:如何快速在阿裡雲上構建機器學習應用?

更多深度文章,請關注雲計算頻道:https://yq.aliyun.com/cloud

3月28日雲棲大會開源專場,阿裡雲技術專家必嘫給大家帶來了“在阿裡雲上構建機器學習應用”的演講。本文主要從深度學習應用發展歷史開始談起,

進而介紹了如何結合阿裡雲容器服務的機器學習解決方案快速打造一套深度學習應用的案例。

深度學習應用發展的介紹

深度學習在2016年有兩款應用特別火爆,影響到每個普通人的生活。第一個是會下圍棋的AlphaGo,它向大家證明了電腦不只有強大的運算能力,同時具備了自學能力,更厲害的是這種學習能力是可以縱向深入的,換句話說,不需要人賦予的邏輯,

電腦可以通過大量的資料和不斷的訓練成為一個領域的專家。

而另一款是萌萌的手機應用:Prisma,這也是一款基於深度學習技術的手機應用,在2016年底,它分別登上了ios和Android手機最佳應用的頭名,成為全球潮人的傢俱旅行必備良品。這款產品的功能直白一點說,

就是用戶提供自家社區的照片,結合繪畫大師的藝術風格,最後產生一款有大師風格的用戶照片。用機器學習的語言來描述,這個工作分為兩個部分

1. 求解描述大師風格的方程f,這是整個過程中最消耗時間的事情,大概佔據了整個消耗時間的99%

2. 當風格方程f的參數確定後,將x代入方程f

這套風格轉換的深度學習演算法並不是Prisma首創的,實際上在2015年,就有三個來自德國的研究員發明了這套演算法,並發表了論文。同時他們也創辦了一家叫Deep Art的公司。用戶在 Deep Art 網頁上上傳自己的照片,然後通過 Deep Art 提供的 “機器人梵古” 進行新畫創作。整個過程需要等待幾個小時讓電腦進行資料運算和處理。使用者可以選擇清晰程度不等的作品。

用戶可以花上 19 歐買一張適合明信片用的作品,或者多掏 100 歐,買一張大尺寸油畫級別的。他們的生意不錯但是並沒有大火。

其中的原因有兩個:

等待一副圖片的產生需要幾個小時的使用者體驗不佳,要知道用戶是沒有耐心等待的

它沒有提供手機App,導致用戶覆蓋率不夠高。

而這時一個聰明的俄羅斯程式師阿列克謝 · 莫伊謝延科夫(Alexei Moiseyenkov)意識到了這個聚寶盆並沒有真正開啟,

他要做一款速度超快的手機應用。能實現相同的功能。經過兩個月的研究,他發現慢的原因在於,原始的風格遷移過程中,每生成一張圖片,都相當於要訓練一次模型,這中間可能會反覆運算幾百幾千次。如果瞭解過一點機器學習的知識,就會知道,從頭訓練一個模型要比執行一個已經訓練好的模型要費時太多。而這也正是原始的風格遷移速度緩慢的原因。他解決了這個技術問題後,同時開發出了手機應用。Prisma 在面世僅僅一周後,就收到了俄羅斯網路公司 http://Mail.Ru 的價值200萬美元的投資。

分享這個故事的想告訴大家的是如何把AI的技術轉化成相關的產品,實現資料,技術和場景的聯動,才是真正的價值,也是真正的挑戰。下面會給大家演示如何在阿裡雲上快速搭建這款價值千萬美金的深度學習應用。

在阿裡雲上構建類似Prisma的深度學習應用

要構建深度學習應用,選擇一款深度學習工具是必不可少的步驟。TensorFlow是谷歌於2015年11月9日正式開源的計算框架。TensorFlow計算框架可以很好地支援深度學習的各種演算法,但它的應用也不限於深度學習。這裡我們選擇TensorFlow作為數值計算庫,而使用的代碼在github上:fast-style-transfer)

接下來,要梳理一下機器學習的工作流程,它分為資料準備,訓練程式開發,訓練任務執行和線上預測服務四個部分,在每個階段都有相應的工作。

針對於這個流程,容器服務團隊提供了雲上機器學習解決方案。這個方案以容器服務為核心,貫穿了前面提到的機器學習生命週期,並且無縫的整合了阿裡雲的計算,存儲,負載均衡等服務。它的好處在於利用了容器技術,但是並不需要使用者深入瞭解容器技術。

具體操作步驟

1. 準備資料

通過osscmd和圖形化使用者介面上傳資料,當資料非常巨大時,可以考慮利用oss提供的解決方案。

2. 通過圖形化使用者介面一鍵式的定制雲端實驗開發環境,並且支援tensorboard查看訓練趨勢。這裡我們的目的是調試訓練代碼邏輯。

3. 構建雲端訓練,完成模型的匯出

使用git導入應用代碼, 如果在需要安裝python依賴庫,可以在應用的根目錄下放置requirements.txt, 這樣就可以在應用初始化的時候安裝這些依賴包.對於分散式存儲,這裡有一個約定:在執行環境的/input資料夾對應於選定oss資料卷的根目錄,/output對應訓練程式要輸出到oss資料卷。目前雲端訓練支援單機和多機兩種模式,如果是多機模式,需要分別指定參數和任務伺服器的數量。機器學習解決方案會在調度時刻,將生成的參數傳遞給任務伺服器,。如果訓練過程中需要利用tensorboard查看訓練狀況也是支持的。

4. 利用匯出的模型,執行線上預測

創建預測服務,這裡預測服務具體支援兩種: TensorFlow Serving和自訂服務。TensorFlow Serving支援載入TensorFlow匯出的標準模型,自訂服務可以支援使用者自己開發的預測應用。對這兩種服務,都可以從資料卷中載入模型或者checkpoint,並且自動綁定負載均衡服務,同時還可以指定預測實例的個數,保證應用的高可用

總結

這次分享利用阿裡雲容器服務機器學習解決方案搭建了一個和Prisma功能類似的深度學習應用,並且實踐了從模型訓練,匯出以及預測的全生命週期工作流程,這會是個逐步反覆運算不斷優化的方案.我們後面會不斷反覆運算優化這一方案,希望説明資料科學家們專注于機器學習價值本身,進而提供最大的價值。

簡化:一鍵整合機器學習應用和阿裡雲GPU,NAS,OSS,SLB,SLS等服務; 快速構建從模型學習到發佈工作流程

優化:提供針對特定場景性能優化的TensorFlow和Caffe鏡像;利用持續交付的最佳實踐優化整體流程

定制化:可使用用戶自訂的鏡像,滿足高階用戶自訂需求,平衡靈活性與自動化

最後放出彩蛋,展示一下視頻風格轉換的效果:

視頻風格轉換

參考材料

深度學習實踐:使用Tensorflow實現快速風格遷移

https://github.com/floydhub/fast-style-transfer

中國版 Prisma 來了,我們今天再聊聊深度學習

同時開發出了手機應用。Prisma 在面世僅僅一周後,就收到了俄羅斯網路公司 http://Mail.Ru 的價值200萬美元的投資。

分享這個故事的想告訴大家的是如何把AI的技術轉化成相關的產品,實現資料,技術和場景的聯動,才是真正的價值,也是真正的挑戰。下面會給大家演示如何在阿裡雲上快速搭建這款價值千萬美金的深度學習應用。

在阿裡雲上構建類似Prisma的深度學習應用

要構建深度學習應用,選擇一款深度學習工具是必不可少的步驟。TensorFlow是谷歌於2015年11月9日正式開源的計算框架。TensorFlow計算框架可以很好地支援深度學習的各種演算法,但它的應用也不限於深度學習。這裡我們選擇TensorFlow作為數值計算庫,而使用的代碼在github上:fast-style-transfer)

接下來,要梳理一下機器學習的工作流程,它分為資料準備,訓練程式開發,訓練任務執行和線上預測服務四個部分,在每個階段都有相應的工作。

針對於這個流程,容器服務團隊提供了雲上機器學習解決方案。這個方案以容器服務為核心,貫穿了前面提到的機器學習生命週期,並且無縫的整合了阿裡雲的計算,存儲,負載均衡等服務。它的好處在於利用了容器技術,但是並不需要使用者深入瞭解容器技術。

具體操作步驟

1. 準備資料

通過osscmd和圖形化使用者介面上傳資料,當資料非常巨大時,可以考慮利用oss提供的解決方案。

2. 通過圖形化使用者介面一鍵式的定制雲端實驗開發環境,並且支援tensorboard查看訓練趨勢。這裡我們的目的是調試訓練代碼邏輯。

3. 構建雲端訓練,完成模型的匯出

使用git導入應用代碼, 如果在需要安裝python依賴庫,可以在應用的根目錄下放置requirements.txt, 這樣就可以在應用初始化的時候安裝這些依賴包.對於分散式存儲,這裡有一個約定:在執行環境的/input資料夾對應於選定oss資料卷的根目錄,/output對應訓練程式要輸出到oss資料卷。目前雲端訓練支援單機和多機兩種模式,如果是多機模式,需要分別指定參數和任務伺服器的數量。機器學習解決方案會在調度時刻,將生成的參數傳遞給任務伺服器,。如果訓練過程中需要利用tensorboard查看訓練狀況也是支持的。

4. 利用匯出的模型,執行線上預測

創建預測服務,這裡預測服務具體支援兩種: TensorFlow Serving和自訂服務。TensorFlow Serving支援載入TensorFlow匯出的標準模型,自訂服務可以支援使用者自己開發的預測應用。對這兩種服務,都可以從資料卷中載入模型或者checkpoint,並且自動綁定負載均衡服務,同時還可以指定預測實例的個數,保證應用的高可用

總結

這次分享利用阿裡雲容器服務機器學習解決方案搭建了一個和Prisma功能類似的深度學習應用,並且實踐了從模型訓練,匯出以及預測的全生命週期工作流程,這會是個逐步反覆運算不斷優化的方案.我們後面會不斷反覆運算優化這一方案,希望説明資料科學家們專注于機器學習價值本身,進而提供最大的價值。

簡化:一鍵整合機器學習應用和阿裡雲GPU,NAS,OSS,SLB,SLS等服務; 快速構建從模型學習到發佈工作流程

優化:提供針對特定場景性能優化的TensorFlow和Caffe鏡像;利用持續交付的最佳實踐優化整體流程

定制化:可使用用戶自訂的鏡像,滿足高階用戶自訂需求,平衡靈活性與自動化

最後放出彩蛋,展示一下視頻風格轉換的效果:

視頻風格轉換

參考材料

深度學習實踐:使用Tensorflow實現快速風格遷移

https://github.com/floydhub/fast-style-transfer

中國版 Prisma 來了,我們今天再聊聊深度學習