讓Jupyter notebook在AWS上跑深度學習演算法

讓Jupyter notebook在AWS上跑深度學習演算法

來自專欄面向人生編程5 人贊了文章

身為MacBook黨,在筆記本上搞深度學習是不可能的了。MacBook寫代碼的還挺爽,但是跑深度學習演算法時,慘。有沒辦法在MacBook上寫代碼,然後即時用遠程的GPU伺服器跑呢?當然有。基於AWS雲伺服器,用Jupyter Notebook在網頁里實時寫代碼,Jupyter Notebook方便增刪改代碼同時,還維持當前代碼運行狀態,變數不會被清空,是數據科學家,深度學習愛好者的強有力的工具。本文詳盡的介紹了搭建過程,並給出了一些親身經歷的問題已經解決方法或思路。如果你覺得有用或者未來會用到,請別吝嗇你的點贊和收藏喔(*^__^*)

1.註冊賬號

首先我們需要註冊一個 AWS 賬號,需要 VISA 或 MasterCard 的卡,支持美元。註冊過程就不詳述了。我相信沒人不會。

2.申請配額

我們這裡選擇p2.xlarge主機,價格0.9美刀一小時。帶GPU的主機最便宜是g系列,例如g2.2xlarge, 0.65刀一小時,沒便宜多少,可是GPU類型是差了一個時代。p2系列用的是tesla k80, g2用的是Grid K520,具體差別多大可以上網查查,簡單的說,就不是一個時代的產品。性能也是差了不知道多少倍。所以我們選用p2.xlarge。當然p2還有別的更好的主機,但太貴了,不推薦。

默認p2.xlarge為0,要申請p2.xlarge配額,需要到aws.amazon.com/contact-提交一個工單。

一般很快就回復了,我的從提交到回復還不到一分鐘。

大概收到回復後十幾分鐘,配額就可以用了。

3.創建實例

按照圖示,右上角選US East N.virginia

切換區域後,選EC2. 然後看到藍色的按鈕,選launch instance,然後進入下面界面

我選的是紅框這個。好處是環境和常用的包都給你配置好了,非常方便。一般選基於Ubuntu的伺服器,別選Windows的,比較少人用,出了啥問題問人沒這麼容易找到回答。

選擇p2.xlarge,然後一直下一步,直到第六步

這兩個框記得選不要限制,選All traffic和anywhere,這樣你才能隨時隨地連接到。

然後launch,會彈出以下框

創建你的密鑰,起個你喜歡的名字,然後點Download Key Pair。下載後藍色按鈕會變數,點下去就可以啟動示例了。

4.在遠程伺服器啟動Jupyter Notebook

用剛下載的密鑰,例如我的叫my_remote_DL.pem,在terminal定位到密鑰所在目錄,然後輸入以下命令

ssh -i my_remote_DL.pem ubuntu@your_ip_address(記得替換IP)

第一次使用密鑰時會出現以下情況:

輸入

chmod 700 my_remote_DL.pem

便可以解決。

然後連接到了instance上,輸入

jupyter notebook --ip=0.0.0.0

啟動jupyter notebook,0.0.0.0代表任意ip都能連接到他。

通過訪問 your_ip_adress:8888(埠也許會是別的,注意觀察下terminal輸入),即可遠程訪問到Jupyter Notebook啦!

5.相關設置以及遇到的問題

第一次打開notebook,應該是這樣的頁面

去terminal里找token,然後把token粘貼到倒數第二個框,然後在倒數第一個框輸入你的新密碼,就可以訪問了。

如果你本地已經有寫好了代碼的notebook,想傳到伺服器,怎麼弄?

這個簡單。按圖所示,首先點擊灰色的upload按鈕,彈出對話框讓你選擇文件,選擇你想要上傳的notebook,然後出現第二個藍色的upload按鈕,再點下就上傳了。

事實上這招不僅僅可以上傳notebook,你還可以上傳其他任意文件,例如你的訓練數據測試數據等。

import tensorflow或者keras庫,提示沒有,咋辦?

這兩個庫是預裝了的,如果提示import不成功,應該是kernel沒用對,按照圖中操作,選擇conda_tensorflow_p27或者36,就有了,pytorch或者caffe同理。

如果還有你想要的庫沒安裝上去,你想安裝額外的庫,可以回到jupyter book首頁,選擇第四個tab上的conda,然後在下邊的兩欄里,你可以升級現有的庫或者安裝新的庫

其他操作提示

查看GPU使用情況使用以下命令:

nvidia-smi

如果發現這裡是No running process found但你的網路在訓練,估計在用CPU了

暫時先寫到這裡,以後還有什麼問題會繼續在這篇文章補充。歡迎收藏點贊,用到時隨時回來參考。


2018年07月24日補充

遇到了沒使用上GPU的情況。解決方法,用記事本打開ipynb,然後刪掉這一點,再打開這個筆記本,就會使用到默認kernel。

AWS上的鏡像有點舊,然後也許還有其他錯誤,需要更新下庫的版本

pip install --upgrade pippip install tensorflow --upgradepip install --upgrade tensorflow-gpusudo apt-get install cuda-9-0

設置完以後,重新啟動notebook。

from tensorflow.python.client import device_libdef get_available_devices(): local_device_protos = device_lib.list_local_devices() return [x.name for x in local_device_protos]print(get_available_devices())

如果輸出有GPU,那說明成功了,如果只有CPU,那還是有問題的。


推薦閱讀:

Django 全棧開發教程之03 - YaDjangoBlog 之前後端分離篇
基於tkinter的Python GUI設計(一)
一切皆對象——Python面向對象:上下文管理器(下)
Numpy之Meshgrid函數介紹
[python] dict內存是如何擴張的

TAG:Python | AmazonWebServicesAWS | 深度學習DeepLearning |