讓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配額,需要到http://aws.amazon.com/contact-us/ec2-request提交一個工單。
一般很快就回復了,我的從提交到回復還不到一分鐘。
大概收到回復後十幾分鐘,配額就可以用了。
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都能連接到他。
通過訪問 http://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 |