機器學習:彈性伸縮的雲端託管服務
當我們滿足自己的機器學習模型了,該怎樣讓它大規模實施預測呢?在本期 Cloud AI Adventures)中尋找答案吧!
注:可能你是第一次看到這個系列文章,是一個系列視頻/文章 「AI Adventures」中的第四篇,由 Google 的開發技術推廣工程師 Yufeng Guo 主講,用通俗易懂的語言幫助你了解人工智慧和機器學習。在這一系列視頻/文章中,我們將一起探秘人工智慧的世界,共同品味藝術、探索科學以及掌握機器學習的工具。
第一篇:機器學習是什麼?第二篇:機器學習「七步走」第三篇:用評估器給花卉分類
所有的內容和視頻都會首發「機智如你」專欄,目標是發布最新與谷歌相關的機器學習、TensorFlow 相關內容,如果你有任何問題,也歡迎在留言區向我們提出反饋。
https://www.zhihu.com/video/916320079522729984
Google 的 Cloud Machine Learning 引擎讓你無需其他操作就能為 TensorFlow 模型創建預測服務。並讓你在短暫的時間內通過從訓練過的模型轉為部署好的模型來省下更多時間處理數據。
預測:最終一步
此時,我們已經搜集到足夠多的數據,並且最終訓練完了一個適合的模型並對其性能表現進行了確認。下一步就是要進入最後階段:(對外)提供預測。
當面臨提供預測的種種挑戰時,我們會想儘可能部署一個專門用於對外服務的模型。尤其是一個又快又輕量級的靜態模型,因為我們不希望在服務期間進行任何的更新。
另外,我們希望預測伺服器能夠按需伸縮,這也就為問題增加了複雜度。
導出 TensorFlow 模型
其實 TensorFlow 已經有一個用於為預測服務生成優化模型的內置函數啦!它能處理所有潛在的調整需求,為你省下大量操作。
這個函數就叫 export_savedmodel()
,並且當我們對模型的訓練狀態滿意了就能夠直接在classifier 對象(參見第三期)上調用此函數。
這將會為模型攝取快照,並將之導出成可用於其他地方的一系列文件。漸漸地,模型改善後你還可以繼續更新導出的模型,從而產生多個模型版本。
導出文件由一個文件和一個文件夾組成。那個文件叫 saved_model.pb,它定義了模型的結構。而文件夾則含有兩個文件,用於提供訓練後模型的權重。
在產出中提供模型
一旦導出了模型,就可以準備在實際產品當中使用了。這裡你將有兩個基本的方案:使用 TensorFlow Serving 服務,或是使用 Cloud Machine Learning Engine 的預測服務。
TensorFlow Serving 是 TensorFlow 的一部分,並且可以從 GitHub 獲得源代碼。如果你想好好調教模型和產品的各項特性,並且使其按照需求來伸縮,那麼 TensorFlow Serving 將會是一個不錯的選擇。
不過今天我們要探討的是與之有著相似的文件介面的 Cloud Machine Learning Engine 預測服務。
Cloud Machine Learning Engine 允許用戶上傳導出的 TensorFlow 模型並通過內置的 API 和自動伸縮(也就是沒人用的時候就不計價)將之轉為一項預測服務。
它還提供了完善的命令行工具、API 和 可視化界面,讓我們可以根據自己的偏好設置通過多種多樣的形式來與之交互。
部署預測模型
我們將以上一期的花卉問題為例,談談怎麼使用 Cloud Machine Learning Engine。
▍導出模型並上傳
首先在訓練好的 classifier 上調用 export_savedmodel()
,這將會為稍後用於預測服務的部分生成一個模型。
接下來要將導出的模型文件上傳到 Google Cloud Storage。Cloud Machine Learning Engine 會從雲存儲服務中讀取數據,並創建新的模型。
注意:在 Google Cloud Platform 創建 bucket 的時候,一定要選擇「單區域」選項。(譯註:bucket 是 Google Cloud Platform 中 Storage 相關操作的基本存儲容器,它和文件夾的區別就在於 bucket 是不可以嵌套的,具體參見官方文檔),這樣才能保證你的運算和存儲處於同一個區域當中(涉及許可權問題,均在文檔中有解讀)。
▍創建新模型
在 Cloud Machine Learning Engine 的界面里,我們可以創建新的模型(也就是原有發布了的模型版本的一層包裝)。這些版本託管著我們單個的導出模型,而其中的模型抽象又會輔助將訪問流量疏導到你所選擇的適宜模型版本中。
如下圖,我們看到的是模型的列表視圖,此處可以創建新模型。
新建模型時僅僅需要提供一個名字就可以了。
▍創建新的版本
下一步就是創建新版本,此時我們將給新的模型版本取名字,並將之指向存儲在 Cloud Storage Directory 當中的模型文件。
好了,模型創建完畢!就是簡簡單單取個名字並指向既有的模型文件而已。
為什麼會如此簡單?我們所使用的服務在背後進行了包括配置、安全性等多方面的操作。此外,我們並不需要編寫任何代碼來讓服務按需伸縮。因為託管於雲端,所以彈性伸縮使得你不需要為未使用的算力付費。
繼簡單幾步配置好花卉辨識的預測服務之後,我們已經在短短几分鐘內將一個訓練好的模型轉變為一項已部署、自動彈性伸縮的預測服務。這也意味著我們能有更多時間回過頭處理數據了。
感謝閱讀本期文章,記得訂閱以免錯過更新哦!
關於 TensorFlow Serving 的更多訊息可以在 TensorFlow Dev Summit 當中得到更多介紹。
最後,Cloud Machine Learning Engine 是你託管彈性伸縮預測服務的不二選擇!
▏原文出處:Serverless predictions at scale
▏封面來源:YouTube 視頻縮略圖
▏視頻出處:YouTube - Serverless Predictions at Scale
▏字幕翻譯:谷創字幕組
▏文章編輯: @楊棟
推薦閱讀:
TAG:TensorFlow | 机器学习 | 谷歌Google |