打造雲上深度學習的雲端實驗室
本係列將利用阿裏雲容器服務的機器學習解決方案,幫助您了解和掌握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 容器集群並添加數據卷。這裏我們就可以得到一個集群:
並且可以看到其中的數據卷。
體驗雲端創建開發環境
登錄到容器服務解決方案,在 模型開發
中點擊 創建
這樣,就可以看到一個表單。首先通過下拉框選擇剛才創建的集群名稱
,點擊訓練框架
,這時可以看到一係列深度學習框架的列表,其中包括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訓練數據
獲得訓練集與測試集數據,
文件 | 內容 |
---|---|
train-images-idx3-ubyte.gz | 訓練集圖片 - 55000 張 訓練圖片, 5000 張 驗證圖片 |
train-labels-idx1-ubyte.gz | 訓練集圖片對應的數字標簽 |
t10k-images-idx3-ubyte.gz | 測試集圖片 - 10000 張 圖片 |
t10k-labels-idx1-ubyte.gz | 測試集圖片對應的數字標簽 |
利用OSS的圖形客戶端用拉拽的方式非常方便的上傳以上數據
同時在Jupyter的客戶端也可以看到在/input
文件夾已經有這些文件的列表了:
在Jupyter中開發和運行mnist代碼
Jupyter提供了上傳代碼的機製,但是如果需要使用一個項目,git
是一個比較好的選擇。
在Termnial中執行git clone https://github.com/cheyang/TensorFlow-Examples.git
再回到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追蹤訓練效果。
想了解更多的細節,歡迎訪問機器學習解決方案, 裏麵提供了詳細的介紹和完整的視頻,是幫助你開啟深度學習之旅的起點。
最後更新:2017-05-03 07:00:56