如何用雲端 GPU 為你的 Python 深度學習加速?
負荷
下午,我用 Python 深度學習框架 Keras 訓練了一個包含3層神經網路的回歸模型,預測波士頓地區房價。
這是來自於 「Deep Learning with Python」 書上的一個例子。
運行的時候,代碼有兩個大循環。
第一個把數據跑100遍(epochs),第二個把數據跑500遍。
我的筆記本電腦算起來很吃力,風扇一直在響。
大熱天的,看著好可憐。
用筆記本電腦進行機器學習,還是不大合適的。
我要是有一塊 GPU 就好了……
此時,突發奇想。
我雖然沒有帶 nVidia GPU 的設備,不過誰說非要在本地機器運行代碼了?
早已是雲時代了啊!
能否用雲端 GPU 跑機器學習代碼,讓我的筆記本少花些力氣呢?
偶遇
有這個想法,是因為最近在 Youtube 上面,我看到了 Siraj Raval 的一段新視頻。
這段視頻里,他推薦了雲端 GPU 提供平台 FloydHub。
我曾經試過 AWS GPU 產品。
那是在一門深度學習網課上。
授課老師跟 AWS 合作,為全體學生免費提供若干小時的 AWS 計算能力,以便大家順利完成練習和作業。
我記得那麼清楚,是因為光如何配置 AWS ,他就專門錄了數十分鐘的視頻。
AWS 雖然已經夠簡單,但是對於新手來說,還是有些門檻。
FloydHub 這個網站,剛好能解決用戶痛點。
首先它能夠包裹 AWS ,把一切複雜的選擇都過濾掉。
其次它內置了幾乎全部主流深度學習框架,自帶電池,開箱即用;
另外,它提供了豐富而簡明的文檔,用戶可以快速上手。
正如它的主頁宣稱的:
Focus on what matters. Let FloydHub handle the grunt work.
翻譯過來就是:
關注你想做的事兒。臟活累活,扔給 FloydHub 吧。
凡是設計給懶人用的東西,我都喜歡。
我於是立即註冊了賬戶,並且做了郵件驗證。
之後,我免費獲得了2個小時的 GPU 時間,可以自由嘗試運行機器學習任務。
為了能把珍貴的 GPU 運算時間花在刀刃上,我認真地閱讀了快速上手教程。
幾分鐘後,我確信自己學會了使用方法。
嘗試
首先,我到 FloydHub 的個人控制面板上,新建了一個任務,起名叫做 「try-keras-boston-house-regression」。
然後,我在本地的 Jupyter Notebook 里,把代碼導出為 Python 腳本文件,如下圖所示。
我新建了一個目錄,把腳本文件拷貝了進來。
這個 Python 腳本,我僅僅在最後加了3行代碼:
加入這幾行代碼,是因為我們需要記錄運行中的一些數據(即 和 )。這些記錄必須放到 文件夾下面,才能在運行結束後保存下來。
然後,進入終端,利用 cd 命令,進入到這個文件夾。
執行:
這樣,本地的 FloydHub 命令行工具就安裝好了。
執行下面命令登錄進去:
系統會提示你,輸入 FloydHub 上的賬號信息。
輸入正確後,執行:
注意這個名稱,必須和剛才在控制面板新建的任務名稱一致。
配置都完成了,下面直接運行就可以了。
輸入:
這句話的意思是:
使用 GPU 計算;
運行環境選用 Tensorflow 1.8 版本,及對應的 Keras (2.1.6)。
如果你希望使用其他深度學習框架或版本,可以參考這個鏈接。
FloydHub 對我們的命令,是這樣回應的:
操作結束?
對,就這麼簡單。
你的任務,已在雲端運行了。
結果
然後,我就忙自己的事兒去了。
喝茶,看書,還掃了幾眼微信訂閱號。
雖然是按時計費,但你不用因為怕多算錢,就死死盯住雲端運行過程。
一旦任務結束,它自己會退出運行,不會多扣你一分鐘珍貴的 GPU 運行時間。
等我回到電腦前面,發現任務已完成。
整個兒過程中,GPU 內存著實夠忙碌的(佔用率一直超過90%)。
不過 GPU 好像很清閑的樣子,一直在百分之十幾晃悠。
看來,我們的神經網路,層數還是太少了,結構不夠複雜。
GPU 跑起來,很不過癮。
往下翻頁,看看輸出的結果。
程序的輸出,包括 GPU 資源創建、調用的一些記錄,這裡都有。
打開 output 標籤頁,咱們看看結果。
之前追加3行代碼,生成的 pickle 記錄文件,就在這裡了。
看來,FloydHub 確實幫我們完成了繁複的計算過程。
我的筆記本電腦,一直涼涼快快,等著摘取勝利果實。
選擇下載,把這個 pickle 文件下載到本地。跟我們的 Jupyter Notebook 放在一個目錄下。
回到 Jupyter Lab 運行界面。
新開一個 ipynb 文件。
我們輸入以下代碼,查看運行記錄是否符合我們的需要。
這些代碼,只是為了繪圖,本身沒有任何複雜運算。
這是運行結果:
可視化結果與書上的一致。
證明機器學習代碼在雲端運行過程一切順利。
我們還可以查看剩餘的可用免費時長。
嗯,還剩下1個多小時 GPU 運算時間呢,回頭接著玩兒。
小結
做深度學習任務,不一定非得自己購置設備。主要看具體需求。
假如你不需要全天候運行深度學習代碼,只是偶爾才遇到計算開銷大的任務,這種雲端 GPU ,是更為合適的。
你花錢買了深度學習硬體設備,就只有貶值的可能。而且如果利用率低,也是資源浪費。
而同樣的租賃價格,你可以獲得的計算能力,卻是越來越強的。
這就是摩爾定律的威力吧。
你用沒用過其他的雲端 GPU 服務?價格和易用程度,與 FloydHub 相較如何?
如果你對數據科學感興趣,歡迎閱讀我的系列教程。索引貼為《如何高效入門數據科學?》。
喜歡請點贊。
※Python實現TFTP文件傳輸
※十五分鐘了解 Python 並發編程
TAG:Python |