新手指南:如何在AWS GPU上運行Jupyter?
選自Keras Blog
作者:Francois Chollet
機器之心編譯
參與:王宇欣、黃小天
本文將指導你逐步在 AWS GPU 實例上運行深度學習 Jupyter notebook,並可在你的瀏覽器中從任何地方對其編輯。如果你的本地機器上沒有 GPU,這將會是一個研究深度學習的理想設置。
什麼是 Jupyter noterbook?為什麼要在 AWS GPU 上運行 Jupyter notebook?
Jupyter notebook 是一個網頁應用程序,允許你以交互的方式編寫並注釋 Python 代碼。這是一種做試驗,做研究,並分享工作內容的有效方法。了解什麼是 notebook 請點擊這裡(鏈接:http://suo.im/4Em4IR)。
許多深度學習應用的計算非常密集,且在筆記本的 CPU 內核上運行通常需要耗費幾個小時甚至是幾天。如果把一個現代的 CPU 換成 GPU,訓練和推理的速度可提升 5 到 10 倍。但是,你可能無法在本地計算機上安裝 GPU。在 AWS 運行 Jupyter notebook 可以給你在本地計算機上運行時的相同體驗,同時允許你利用 AWS 上的一個或多個 GPU。如果你只是偶爾使用深度學習,相比投資專有的 GPU,Jupyter notebook 更為有利,你只需支付所用的東西。
為什麼我不想在 AWS 上使用 Jupyter 進行深度學習?
AWS GPU 實例的價格可以迅速變貴。我們建議的使用價格是每小時 0.9 美元。這個價格偶爾使用還可以接受,但是如果你每天都要進行幾個小時的實驗,那麼你最好搭建配備 Titan X 或者 GTX 1080 Ti 的專屬深度學習機。
開始之前注意:
你需要一個激活的 AWS 賬戶
如果你對 AWS EC2 有所了解會有幫助,但並不必須
搭建需要花費 5 到 10 分鐘的時間。
分步指南
1 - 導航至 EC2 控制面板,並點擊「啟動實例」鏈接。
2 -選擇官方 AWS 深度學習 Ubuntu AMI
選擇「AWS 市場」並在搜索框中搜索「深度學習」。
向下滾動,直到找到名為「深度學習 AMI Ubuntu 版本」的 AMI(如下圖),並選擇它。
3 -選擇 p2.xlarge 實例
該實例類型提供對單個 GPU 的訪問,並且每小時的使用成本為 0.9 美元(截至 2017 年 3 月)。點擊「配置實例細節」:
4 -配置實例細節
你可以為「配置實例」、「添加存儲」和 「添加標籤」等步驟保留默認設置。但是我們將自定義步驟「配置安全組」。
創建一個自定義 TCP 規則以允許 8888 埠。
在你當前的公共 IP(例如你的筆記本電腦的 IP),或者在前者不可能的情況下,對於任意 IP,該規則都被允許。請注意,如果你允許任意 IP 均可接入埠 8888,則理論上任何人都可以收聽你的實例上的那個埠(這是我們將運行 IPython notebook 的地方)。我們將為筆記本電腦添加密碼保護,以便降低任意人員都可以對其進行修改的風險,但這也許是較弱的保護。如果可能的話,你應該考慮限制特定 IP 的訪問。但是,如果你的 IP 地址不斷更改,這不太實際。如果你打算對任意 IP 開放接入端,請記住不要在實例上留下任何敏感數據。
在啟動過程結束時,系統將會詢問你是否要創建新的連接密鑰,或者是否重複使用現有的密鑰。如果你之前從未使用過 EC2, 只需創建新的密鑰並下載即可。
5 - 啟動你的實例並連接到它
為了連接實例,在 EC2 控制面板上選擇並點擊「連接」按鈕,遵循提供的說明,例如:
注意,實例完全啟動之前可能需要幾分鐘。如果開始時不能連接,請等待並重試。
6 - 設置 SSL 證書
通過 ssh 登錄實例後,在實例的根目錄下創建一個 ssl 目錄,然後對其進行 cd(並非必要,但更乾淨)。
mkdir ssl
使用 OPenSSL 創建新的 SSL 證書:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch
完成後,你已在當前的 sll 目錄中創建了兩個文件:cert.key 和 cert.pem.
6 - 配置 Jupyter
在我們開始使用 Jupyte 之前,我們需要調整其默認配置。首先,我需要生成一個新的 Jupyter 配置文件(仍然在遠程實例上):
jupyter notebook --generate-config
或者,你可以為自己的 notebook 生成 Jupyter 密碼。由於你的實例配置可能為從任何 Ip 訪問(取決於你在配置安全組時所做的選擇),最好通過密碼限制對 Jupyter 的訪問。要生成密碼,請打開 IPython shell(ipython 命令)並運行:
from IPython.lib import
passwd() 命令將要求你輸入並驗證密碼,完成後將顯示密碼哈希(hash)。複製哈希,我們稍後會用到。它看起來像:「sha1:b592a9cf2ec6:b99edb2fd3d0727e336185a0b0eab561aa533a43」(這是「密碼」哈希,並非是你應該使用的密碼)。
接下來,使用 Vi(或者用你最喜歡的可用文本編輯器)編輯配置文件:
vi ~/.jupyter/jupyter_notebook_config.py
這是一個 Python 文件,其中所有的行都被注釋掉。
你需要插入以下 Python 代碼行(比如,在文件的開頭)
c = get_config() # get the config object
如果,你以前沒有使用過 Vi,請記住,你需要按 i 開始插入內容;完成後,你可以點擊 esc 然後是 :wq 最終 enter 退出 Vi,同時保存更改(:wq 代表寫入-退出)
7 - 更新 Keras
你馬上可以開始使用 Jupyte 了。但首先,通過運行(仍然在遠程實例上)以確保 Keras 是最新的:
sudo pip install keras --upgrade --no-deps
你所使用的 AMI 由亞馬遜負責日常更新,但其可能沒有使用每個包的最新版本。
8 - 設置本地埠轉發
在本地機器上的一個 Shell(不是遠程實例中)中,開始將你的本地埠 443(HTTPS 埠)轉發到遠程實例的埠 8888。這是通過句法(syntax)完成的:
sudo ssh -i awsKeys.pem -L local_port:local_machine:remote_port remote_machine
在我們的例子中為:
sudo ssh -i awsKeys.pem -L 443:127.0.0.1:8888 ubuntu@ec2-54-147-126-214.compute-1.amazonaws.com
9 - 從你的本地瀏覽器中開始使用 Jupyter
首先,在遠程實例中,創建保存你的 notebook 的文件夾:
mkdir notebooks
在遠程實例上,通過在你創建的文件夾中運行此命令來啟動 Jupyter Notebook:
ipython notebook
然後,在本地瀏覽器中,導航至我們發送到遠程 notebook 進程的本地地址 https://127.0.0.1。確保你在地址中使用 HTTPS,否則你將收到 SSL 錯誤。
你將看到一個安全警告:
該警告只是因為我們生成的 SSL 證書沒有被任何受權威機構驗證(顯然,我們剛剛生成了我們自己的證書)。點擊「advanced」,繼續瀏覽,這很安全。
然後系統會提示你輸入 Jupyter 密碼。然後,你會進入 Jupyter 控制面板。
點擊「新建 - >Notebook」開始。你可以使用你選擇的 Python 版本。
好了!
※語音合成到了跳變點?深度神經網路變革TTS最新研究匯總
※想了解概率圖模型?你要先理解圖論的基本定義與形式
※騰訊雲機器學習平台技術負責人黃明,詳解DI-X 深度學習平台
※谷歌全端到端語音合成系統Tacotron:直接從字元合成語音
※資源|價值迭代網路的PyTorch實現與Visdom可視化
TAG:機器之心 |
※UI 設計師未來的全新工作方式?React-SketchApp 新手上路
※G-DRAGON 演繹 CHANEL 最新手袋 Gabrielle 宣傳影片
※Google推出ARCore 對抗蘋果ARkit及新手機
※Oculus市場份額逼近HTC,微軟不知道啥時候對應Steam,華碩新手機被谷歌ARCore坑了?
※新手入門指南!一篇文章教你使用 Garmin Connect Mobile
※Qlik Sense Cloud新手指南系列視頻(七)
※Vintage 新手入門指南 | Opinion
※Willow Smith 漫遊東京演繹 Chanel 最新手袋 Gabrielle
※21世紀的Comic Sans:全新手寫字體集INKWELL非正式但精緻
※Scuf兩款全新手柄Infinity與Impact上手 來看看PS4精英手柄長啥樣!
※Android之父Andy Rubin或在月底發布新手機
※Nature Methods:便攜、低成本的單細胞RNA測序新手段
※《FF XV: Pocket Edition》最新手游版本預告登場
※蘋果新手機三連發,iPhone8,iPhone8plus,iPhoneX史上最貴
※Android 之父 Andy Rubin 的新手機將在一周內出貨
※護膚新手區# The Face Shop
※角川書社將與Klab合作新手游:《Project Parallel》正式發表
※JavaScript 新手的踩坑日記
※蘋果Apple Watch3曝光 預計9月與iPhone新手機齊發