如何打造深度學習的雲端實驗室?

本文主要講解如何利用阿里雲容器服務的機器學習解決方案,幫助您了解和掌握TensorFlow,MxNet等深度學習庫,開啟您的深度學習之旅。

原創作者(點擊姓名可查看作者更多內容):必嘫 阿里雲技術專家,在應用性能監控和軟體交付方面有豐富的實踐經驗,目前專註於容器服務,微服務以及機器學習等領域

我們工作中常常會問到:「深度學習從哪裡學起?」 在讀過了大量的文章,看過了無數的教程後,許多朋友依然表示很無感。這其實很正常,因為紙上得來終覺淺么,絕知此事要躬行。為了幫助大家快速上手這一個機器學習分支,阿里雲容器服務機器學習解決方案提供了豐富的開源框架幫助大家實踐,其中包括TensorFlow, Keras和MXNet,為了方便您學習和掌握,我們會編寫一系列的文章,介紹其中的細節。

本文是這個系列中的第一篇文章,我會在基於阿里雲容器服務的機器學習解決方案,創建一套基於TensorFlow的Jupyter開發環境,並在上面開發一個簡單Minst應用,最後利用TensorBoard觀察訓練效果。當然,你也可以在上面玩轉包括 Keras和MXNet等框架,在本文中我們也介紹了如何使用MXNet的例子。

Jupyter notbook簡介

Jupyter notebook 是基於網頁應用程序,你可以在上面以交互的方式編寫和注釋Python代碼。這是一種做試驗,做研究,並分享工作內容的有效方法。

為什麼要在阿里雲上運行Jupyter?

深度學習應用基本都是計算密集型的,如果用你的筆記本可能要運行個三五天。而換成GPU的話,訓練和預測的速度可能提升5到10倍。但是個人購買GPU卡並不合算,而阿里雲最近推出了彈性GPU服務,可以按小時收費,給了我們尋常百姓一次可以和深度學習親密接觸的機會。Jupyter notebook 可以提供與本地計算機上運行相同的體驗,同時也方便你利用阿里雲上的GPU服務開啟你的深度學習之旅,請和跟著我們的教程一步步開始吧!

準備數據卷和容器集群

需要創建容器集群,並且 創建數據卷。當然也可以使用 ROS 模板一鍵式的創建 GPU 容器集群並添加數據卷。這裡我們就可以得到一個GPU集群,可以看到其中的GPU設備:

並且可以看到其中的數據卷。

體驗雲端創建開發環境

登錄到容器服務解決方案,在 模型開發 中點擊 創建

這樣,就可以看到一個表單。首先通過下拉框選擇剛才創建的集群名稱,點擊訓練框架 ,這時可以看到一系列深度學習框架的列表,其中包括TensorFlow, Keras和MXNet的不同版本, 還可以指定python2和python3的版本,這裡我選擇TensorFlow的1.0.0版本。

至於GPU數量,由於創建的是一個單GPU的集群,可以設置GPU為1. 如果你創建了CPU集群,就只能設置GPU為0.

這裡,還要選擇一下剛才創建數據卷,這個數據卷會映射到深度學習環境的/input目錄。

因為Jupyter有安全設置,需要指定一下訪問密碼。

最後,由於需要通過TensorBoard監控訓練效果,所以需要勾選上訓練監控。

這裡有一個很重要的知識點,就是訓練日誌路徑,實際上這個路徑是TensorBoard讀取訓練日誌的路徑。假設你在這裡指定的路徑是/output/training_logs,你就需要在訓練代碼里寫下這樣的代碼

summary_writer = tf.summary.FileWriter(/output/training_logs)

之後就可以點擊創建了。

一旦創建成功,就跳轉到應用列表頁面,這時可以在看到剛剛創建的應用, 單擊應用名稱進去。

單擊 路由列表,就可以看到兩個鏈接,分別是以 jupyter和tensorboard為開頭的鏈接

單擊jupyter開頭的鏈接,並且輸入 jupyter 的密碼,就能進入 jupyter 環境。

查看Jupyter上的GPU

首先在Jupyter主頁面中,創建Terminal

在Terminal里執行nvidia-smi,可以看到Jupyter環境能使用GPU,剩下只需要在代碼中加上GPU調用就好了

上傳Mnist訓練數據

獲得訓練集與測試集數據,

利用OSS的圖形客戶端用拉拽的方式非常方便的上傳以上數據

同時在Jupyter的客戶端也可以看到在/input文件夾已經有這些文件的列表了:

在Jupyter中開發和運行mnist代碼

Jupyter提供了上傳代碼的機制,但是如果需要使用一個項目,git是一個比較好的選擇。

在Termnial中執行git clone github.com/cheyang/Tens

再回到Jupyter的主頁面,就可以看到下載的TensorFlow-Examples, 跳到TensorFlow-Examples/notebooks/4_Utils,選擇tensorboard_basic.ipynb

這樣,就可以在Jupyter中開發和運行mnist代碼, 需要把TensorFlow的訓練日誌路徑,設置成前面指定的訓練日誌路徑,對於本例子來說是/output/training_logs, 點擊Run All

由於在配置好GPU的TensorFlow中,即使代碼中沒有明確指定運行設備也會優先選擇GPU,通過查看日誌我們可以發現,mnist訓練實際上使用的是GPU資源。

使用TensorBoard查看訓練效果

回到應用的路由列表,點擊其中tensorboard為開頭的鏈接

這樣我們就可以看到完整的訓練效果展示, 包括loss的趨勢,圖片示例以及計算圖

除了TensorFlow,我們也支持MXNet等框架,以下是MXNet的例子

雲端Jupyter環境開發MXNet的應用

對於MXNet我們同樣也支持TensorBoard的展示,可以使用understanding_vanish_gradient.ipynb來測試一下

在創建MXNet的開發環境後,你也可以開發並且監控基於MXNet的深度學習應用

總結

我們可以利用阿里雲容器服務的機器學習解決方案,輕鬆的搭建在雲端搭建TensorFlow,MXNet和Keras的環境,並且利用TensorBoard追蹤訓練效果。

想了解更多的細節,歡迎訪問機器學習解決方案, 裡面提供了詳細的介紹和完整的視頻,是幫助你開啟深度學習之旅的起點。

推薦閱讀:

對於一個可以窮舉的問題,比如五子棋,深度學習得到的模型和窮舉的演算法有啥異同?
深度學習中為什麼普遍使用BGR而不用RGB?
wasserstein 距離的問題?
CMU MLT vs UPenn CIS PhD?
深度學習如何優化神經網路結構?

TAG:深度学习DeepLearning | 阿里云 | TensorFlow |