本文爲你介紹,如何在 GPU 深度學習雲服務裏,上傳和使用本身的數據集。html
《如何用雲端 GPU 爲你的 Python 深度學習加速?》一文裏,我爲你介紹了深度學習環境服務 FloydHub 。python
文章發佈後,有讀者在後臺提出來兩個問題:git
- 我沒有外幣信用卡,免費時長用完後,沒法續費。請問有沒有相似的國內服務?
- 我想使用本身的數據集進行訓練,該怎麼作?
第一個問題,有讀者替我解答了。github
我看了一下,這裏的 Russell Cloud ,確實是一款跟 FloydHub 相似的 GPU 深度學習雲服務。小程序
但是感謝以後,我才發現原來他是 Russell Cloud 的開發人員。微信小程序
因而這幾天,使用中一遇到問題,我就直接找他答疑了。bash
由於有這種綠色通道,響應一直很是迅速。用戶體驗很好。服務器
這款國內服務的優點,有如下幾點:微信
首先是能夠支付寶與微信付款,無需 Visa 或者 Mastercard 信用卡,很方便;網絡
其次是 Russell Cloud 基於阿里雲,訪問速度比較快,並且鏈接穩定。在上傳下載較大規模數據的時候,優點比較明顯。與之相比,FloydHub 上傳500MB左右數據的時候,發生了兩次中斷。
第三是文檔所有用中文撰寫,答疑也用中文進行。對英語很差的同窗,更友好。
第四是開發團隊作了微創新。例如能夠在微信小程序裏面隨時查看運行結果,以及查詢剩餘時長信息。
解決了第一個問題後,我用 Russell Cloud 爲你演示,如何上傳你本身的數據集,而且進行深度學習訓練。
使用以前,請你先到 Russell Cloud 上註冊一個免費帳號。
由於都是中文界面,具體步驟我就不贅述了。
註冊成功後,你就擁有了1個小時的免費 GPU 使用時長。
若是你用個人邀請連接註冊,能夠多得到4個小時免費 GPU 使用時間。
我手裏只有這5個可用的邀請連接。你若是須要,能夠直接輸入。
看誰手快吧。
註冊以後,進入控制檯,你能夠看到本身的相關信息。
其中有個 Token 欄目,是你的登陸信息。下面我給你講講怎麼用。
你須要下載命令行工具,方法是進入終端,執行:
pip install -U russell-cli
複製代碼
而後你須要登陸:
russell login
複製代碼
這時候根據提示,把剛纔的 Token 輸入進去,登陸就完成了。
與 FloydHub 不一樣,大多數狀況下 Russell Cloud 的身份與項目驗證,用的都是這種 Token 的方式。
若是你對終端命令行操做還不是很熟悉,歡迎參考個人《如何安裝Python運行環境Anaconda?(視頻教程)》,裏面有終端基本功能詳細執行步驟的視頻講解。
下文用到的數據和執行腳本,我都已經放到了這個 gitlab 連接。
你能夠直接點擊這裏下載壓縮包,以後解壓。
解壓後的目錄裏,包含兩個子文件夾。
cats_dogs_small_vgg16
包含咱們的運行腳本。只有一個文件。
它的使用方法,咱們後面會介紹。
先說說,你最關心的數據集上傳問題。
解壓後目錄中的另外一個文件夾,cats_and_dogs_small
,就包含了咱們要使用和上傳的數據集。
如上圖所示,圖像數據被分紅了3類。
這也是 Keras 默認使用的圖像數據分類標準規範。
打開訓練集合 train
,下面包含兩個目錄,分別是「貓」和「狗」。
當你使用 Keras 的圖片處理工具時,擁有這樣的目錄結構,你就能夠直接調用 ImageDataGenerator
下的flow_from_directory
功能,把目錄裏的圖片數據,直接轉化成爲模型能夠利用的張量(tensor)。
打開 test
和 validation
目錄,你會看到的目錄結構和 train
相同。
請你先在 Russell Cloud 上創建本身的第一個數據集。
主頁上,點擊「控制檯」按鈕。
在「數據集」欄目中選擇「建立數據集」。
如上圖,填寫數據集名稱爲「cats_and_dogs_small
」。
這裏會出現數據集的 ID ,咱們須要用它,將雲端的數據集,跟本地目錄鏈接起來。
回到終端下面,利用 cd
命令進入到解壓後文件夾的 cats_and_dogs_small
目錄下,執行:
russell data init --id 你的數據集ID
russell data upload
複製代碼
請把上面「你的數據集ID」替換成你真正的數據集ID。
執行這兩條命令,數據就被上傳到了 Russell Cloud。
上傳成功後,回到 Russell Cloud 的數據集頁面,你能夠看到「版本」標籤頁下面,出現了1個新生成的版本。
注意上圖右側,有一個「複製」按鈕,點擊它,複製數據集該版本的 Token 。
必定要注意,是從這裏複製信息,而不是數據集首頁的 ID 那裏。
以前由於搞錯了這個事兒,浪費了我很長時間。
要執行你本身的深度學習代碼,你須要在 Russell Cloud 上面,新建一個項目。
你得給項目起個名稱。
能夠直接叫作 cats_dog_small_vgg16
。
其餘項保持默認便可,點擊「建立項目」。
出現下面這個頁面,就證實項目新建成功。
一樣,你須要把本地的代碼文件夾,和剛剛新建的項目鏈接起來。
方法是這樣的:
複製上圖頁面的 ID 信息。
回到終端下,利用 cd
命令進入到解壓後文件夾的 cats_dogs_small_vgg16
目錄下,執行:
russell init --id 你剛纔複製的ID
複製代碼
這樣,你在本地的修改,就能夠被 Russell Cloud 記錄,而且更新任務運行配置了。
執行下面這條命令,你就能夠利用 Russell Cloud 遠端的 GPU ,運行卷積神經網絡訓練腳本了。
russell run "python cats_dogs_small_vgg16_augmentation_freeze_russell.py" --gpu --data 92e239eca8e649928610d95d54bb3602:cats_and_dogs_small --env tensorflow-1.4
複製代碼
解釋一下這條命令中的參數:
run
後面的引號包括部分,是實際執行的命令;gpu
是告訴 Russell Cloud,你選擇 GPU 運行環境,而不是 CPU;data
後面的數字串(冒號以前),是你剛剛生成的數據集版本的對應標識;冒號後面,是你給這個數據集掛載目錄起的名字。假設這裏掛載目錄名字叫「potato」,那麼在代碼裏面,你的數據集位置就是「/input/potato」;env
是集成深度學習庫環境名稱。咱們這裏指定的是 Tensorflow 1.4。更多選項,能夠參考文檔說明。輸入上述命令後, Russell Cloud 就會把你的項目代碼同步到雲端,而後根據你指定的參數執行代碼。
你在本地,是看不到執行結果的。
你須要到網頁上,查看「任務」下「運行日誌」,在系統提供的模擬終端下,查看運行輸出結果。
爲了把好不容易深度學習得到的結果保存下來,你須要用以下語句保存模型:
saved_model = output_dir / 'cats_and_dogs_small_finetune.h5'
model.save(saved_model)
複製代碼
history.history
對象裏,包含了訓練過程當中的一些評估數據,例如準確率(acc)和損失值(loss),也須要保存。
這裏你能夠採用 pickle
來完成:
import pickle
with open(Path(output_dir, 'data.pickle'), 'wb') as f:
pickle.dump(history.history, f)
複製代碼
細心的你,必定發現了上述代碼中,出現了一個 output_dir
, 它的真實路徑是 output/
。
它是 Russell Cloud 爲咱們提供的默認輸出路徑。存在這裏面的數據,在運行結束後,也會在雲端存儲空間中保存下來。
你能夠在「任務記錄」的「輸出」項目下看到保存的數據。它們已被保存成爲一個壓縮包。
下載下來並解壓後,你就能夠享受雲端 GPU 的勞動果實了。
你能夠用 history
保存的內容繪圖,或者進一步載入訓練好的模型,對新的數據作分類。
在實際使用Russell Cloud中,你可能會遇到一些問題。
我這裏把本身遇到的問題列出來,以避免你踩進我踩過的坑。
首先,深度學習環境版本更新不夠及時。
本文寫做時 Tensorflow 穩定版本已是 1.8 版,而 Russell Cloud 最高支持的版本依然只有 1.6。文檔裏面的最高版本,更是還停留在 1.4。默認的 Keras,竟然用的仍是 Python 3.5 + Tensorflow 1.1。
注意千萬別直接用這個默認的 Keras ,不然 Python 3.6 後版本出現的一些優秀特性沒法使用。例如你將 PosixPath 路徑(而非字符串)做爲文件地址參數,傳入到一些函數中時,會報錯。那不是你代碼的錯,是運行環境過於老舊。
其次,屏幕輸出內容過多的時候(例如我跑了 100 個 epoch, 每一個顯示 100 條訓練進度),「運行日誌」網頁上模擬終端往下拉,就容易出現不響應的狀況。變通的方法,是直接下載 log 文件,閱讀和分析。
第三,Keras 和 Tensorflow 的許多代碼庫(例如使用預訓練模型),都會自動調用下載功能,從 github 下載數據。可是,由於國內的服務器到 github 之間鏈接不夠穩定,所以不時會出現沒法下載,致使程序超時,異常退出。
上述問題,我都已經反饋給開發者團隊。對方已表示,會盡快加以解決。
若是你看到這篇文章時,上面這些坑都不存在了,那就再好不過了。
本文爲你推薦了一款國內 GPU 深度學習雲服務 Russell Cloud 。若是你更喜歡讀中文文檔,沒有外幣信用卡,或是訪問 FloydHub 和 Google Colab 不是很順暢,均可以嘗試一下。
經過一個實際的深度學習模型訓練過程,我爲你展現瞭如何把本身的數據集上傳到雲環境,而且在訓練過程當中掛載和調用它。
你能夠利用平臺贈送的 GPU 時間,跑一兩個本身的深度學習任務,並對比一下與本地 CPU 運行的差異。
喜歡請點贊。還能夠微信關注和置頂個人公衆號「玉樹芝蘭」(nkwangshuyi)。
若是你對數據科學感興趣,不妨閱讀個人系列教程索引貼《如何高效入門數據科學?》,裏面還有更多的有趣問題及解法。