More  

小編的世界 優質文選 主機

在30分鐘內創建你的深度學習服務器


2020年8月24日 - 主機小編 人工智能遇見磐創 
   

科技達人,優質創作者

每當我開始一個新的項目時,我發現自己一次又一次地創建一個深度學習機器。

從安裝Anaconda開始,最後為Pytorch和Tensorflow創建不同的環境,這樣它們就不會相互干擾。而在這中間,你不可避免地會搞砸,從頭開始。這種情況經常發生多次。

這不僅是對時間的巨大浪費,它也是令人惱火的。通過所有的堆棧溢出線程,我們經常想知道究竟出了什麼問題。

那麼,有沒有一種方法可以更有效地做到這一點呢?

在這個博客中,我將嘗試在EC2上以最小的努力建立一個深度學習服務器,這樣我就可以專注於更重要的事情。

本博客明確地由兩部分組成:

設置一個預先安裝了深度學習庫的Amazon EC2機器。

使用TMUX和SSH隧道設置Jupyter notebook。

別擔心,這不像聽起來那麼難。只需按照步驟操作,然後單擊“下一步”。設置Amazon EC2計算機

我假設你擁有一個AWS賬戶,並且可以訪問AWS控制台。如果沒有,你可能需要注冊一個Amazon AWS賬戶。

AWS控制台:https://aws.amazon.com/console/

首先,我們需要轉到“Services”選項卡以訪問EC2儀表板。

在EC2儀表板上,你可以從創建實例開始。

亞馬遜向社區AMI(亞馬遜機器映像)預裝了深度學習軟件。要訪問這些AMI,你需要查看社區AMI,並在“搜索”選項卡中搜索“ Ubuntu深度學習”。你可以選擇其他任何Linux風格,但是我發現Ubuntu對於滿足我的深度學習需求最為有用。在當前設置中,我將使用深度學習AMI(Ubuntu 18.04)27.0版

選擇AMI後,可以選擇“實例類型”。在這裏,你可以指定系統中所需的CPU,內存和GPU的數量。亞馬遜提供了許多根據個人需求選擇的選項。你可以使用“過濾依據”過濾器過濾GPU實例。
在本教程中,我使用了p2.xlarge實例,該實例為NVIDIA K80 GPU提供了2,496個並行處理內核和12GiB的GPU內存。要了解不同的實例類型,你可以查看下方鏈接中的文檔,並查看價格。
查看文檔:https://aws.amazon.com/ec2/instance-types/ 查看價格:https://aws.amazon.com/emr/pricing/

你可以在第4步中更改連接到機器的存儲。如果你不預先添加存儲,也可以,因為以後也可以這樣做。我將存儲空間從90 GB更改為500 GB,因為大多數深度學習需求都需要適當的存儲空間。

僅此而已,你可以在進入最終審閱實例設置屏幕之後啟動實例。單擊啟動後,你將看到此屏幕。只需在“Key pair name”中輸入任何密鑰名稱,然後單擊“Download Key Pair”即可。你的密鑰將按照你提供的名稱下載到計算機上。對我來說,它被保存為“aws_key.pem”。完成後,你可以單擊“Launch Instances”啟動實例。

請確保此密鑰對的安全,因為每當你要登錄實例時都需要這樣做。

現在,你可以單擊下一頁上的“View Instances”以查看你的實例。這是你的實例的樣子:

要連接到你的實例,只需在本地計算機上打開一個終端窗口,然後瀏覽到保存密鑰對文件並修改一些權限的文件夾。

chmod 400 aws_key.pem

完成此操作後,你將可以通過SSH連接到你的實例。SSH命令的格式為:ssh -i“ aws_key.pem” ubuntu @ <你的PublicDNS(IPv4)>

對我來說,命令是:ssh -i“ aws_key.pem” ubuntu@ec2-54-202-223-197.us-west-2.compute.amazonaws.com

另外,請記住,一旦關閉實例,公用DNS可能會更改。

你已經准備好機器並准備就緒。本機包含不同的環境,這些環境具有你可能需要的各種庫。這台特定的機器具有MXNet,Tensorflow和Pytorch,以及不同版本的python。最好的事情是,我們已經預先安裝了所有這些功能,因此開箱即用。

設置Jupyter Notebook

但是,仍然需要使用一些東西才能充分使用計算機。其中之一就是Jupyter Notebook。要在計算機上設置Jupyter Notebook,我建議使用TMUX和隧道。讓我們逐步設置Jupyter Notebook。

使用TMUX運行Jupyter Notebook 我們將首先使用TMUX在實例上運行Jupyter Notebook。我們主要使用它,以便即使終端連接丟失,我們的筆記本電腦仍然可以運行。

為此,你將需要使用以下命令創建一個新的TMUX會話:tmux new -s StreamSession

完成後,你將看到一個新屏幕,底部帶有綠色邊框。你可以使用jupyter notebook命令在此計算機上啟動Jupyter Notebook 。你將看到類似以下內容:

複制登錄URL將是有益的,這樣以後以後嘗試登錄到jupyter notebook時,我們將能夠獲取令牌。就我而言,它是:http://localhost:8888/?token=5ccd01f60971d9fc97fd79f64a5bb4ce79f4d96823ab7872

下一步是分離TMUX會話,以便它在後台繼續運行,即使你離開ssh shell。要做到這一點,只需按Ctrl+B,然後按D(按D時不要按Ctrl),你將返回到初始屏幕,顯示你已從TMUX會話中分離的消息。

如果需要,可以使用以下方法重新連接到會話:tmux attach -t StreamSession

SSH隧道訪問本地瀏覽器上的notebook

第二步是進入Amazon實例,以便在本地瀏覽器上獲取Jupyter notebook。如我們所見,Jupyter notebook實際上運行在雲實例的本地主機上。我們如何訪問它?我們使用SSH隧道。不用擔心,這很簡單。只需在本地機器終端窗口上使用以下命令:ssh -i“ aws_key.pem” -L <本地計算機端口>:localhost:8888 ubuntu @ <你的PublicDNS(IPv4)>

對於這種情況,我使用了:ssh -i "aws_key.pem" -L 8001:localhost:8888 ubuntu@ec2-54-202-223-197.us-west-2.compute.amazonaws.com

這意味著,如果我在本地計算機瀏覽器中打開localhost:8001,則可以使用Jupyter Notebook。我當然可以。現在,我們只需輸入在先前的步驟之一中已經保存的令牌即可訪問notebook。對我來說令牌是5ccd01f60971d9fc97fd79f64a5bb4ce79f4d96823ab7872

令牌: http://localhost:8888/?token=5ccd01f60971d9fc97fd79f64a5bb4ce79f4d96823ab7872&token=5ccd01f60971d9fc97fd79f64a5bb4ce79f4d96823ab7872

你只需使用你的令牌登錄即可。

現在,你可以通過選擇所需的任何不同環境來選擇新項目。你可以來自Tensorflow或Pythorch,也可以兩者兼得。notebook不會讓你失望的。

故障排除

重新啟動計算機後,你可能會遇到NVIDIA圖形卡的一些問題。具體來說,就我而言,該nvidia-smi命令停止工作。如果遇到此問題,解決方案是從NVIDIA 網站下載圖形驅動程序。

NVIDIA 網站:https://www.nvidia.in/Download/index.aspx?lang=en-in

以上是我選擇的特定AMI的設置。單擊搜索後,你將可以看到下一頁:

只需通過右鍵單擊並複制鏈接地址來複制下載鏈接。並在計算機上運行以下命令。你可能需要在其中更改鏈接地址和文件名。# When nvidia-smi doesnt work:wget https://www.nvidia.in/content/DriverDownload-March2009/confirmation.php?url=/tesla/410.129/NVIDIA-Linux-x86_64-410.129-diagnostic.run&lang=in&type=Teslasudo sh NVIDIA-Linux-x86_64-410.129-diagnostic.run --no-drm --disable-nouveau --dkms --silent --install-libglvndmodinfo nvidia | head -7sudo modprobe nvidia停止實例

就是這樣。你已經掌握並啟動了深度學習機器,並且可以隨意使用它。請記住,無論何時停止工作,都應停止實例,因此,當你不在實例上工作時,無需向Amazon付費。你可以在實例頁面上通過右鍵單擊你的實例來執行此操作。請注意,當你需要再次登錄到該計算機時,你可能需要從實例頁面重新獲得公共DNS(IPv4)地址,因為它可能已更改。

結論

我一直覺得建立深度學習環境非常麻煩。

在此博客中,我們通過使用深度學習社區AMI,TMUX和Jupyter Notebook的隧道技術,在最短的時間內在EC2上設置了新的深度學習服務器。該服務器已預先安裝了你在工作中可能需要的所有深度學習庫,並且開箱即用。

那你還在等什麼?只需在你自己的服務器上開始使用深度學習即可。