隨著我們使用的神經網路越來越複雜,我們需要更強勁的硬體。我們的個人電腦一般很難勝任這樣大的網路,但是你可以相對輕鬆地在Amazon EC2服務中租到一臺強勁的電腦,並按小時支付租金。
我用的是Keras,一個神經網路的開源python庫。由於用法十分簡單,它很適合入門深度學習。它基於Tensorflow,一個數值計算的開源庫,但是也可以使用Theano。租到的機器可以使用Jupyter Notebook透過瀏覽器來訪問。Jupyter Notebook是一個透過互動式程式碼來共享和編輯文件的web應用。
透過cuDNN,一個深度神經網路GPU加速庫,Keras可以在GPU上執行。由於並行運算的設計,這種方式會比一般的CPU要快很多。建議你看幾個CNN指標,對比最流行的神經網路在不同的GPU和CPU的執行時間。
我將向你介紹如何一步步在預置好的Amazon Machine Image (AMI)上搭建這樣一個深度學習的環境。
1) 建立賬戶
訪問 https://aws.amazon.com/ ,並建立一個AWS賬戶。
然後登陸控制檯。
你的控制皮膚應該看起來像這樣。
確保你選擇的所在地區是法蘭克福,N. Virgiania或新加坡,以便之後可以使用一個預置好的Keras AMI。如果你想自己動手設定這樣的AMI,你可以按照這個指南。
2) 啟動例項
現在讓我們跳轉到EC2控制頁面。
“Amazon Elastic Compute Cloud(Amazon EC2)在Amazon Web Services(AWS)雲中提供可擴充套件的計算功能。 Amazon EC2的使用消除了前期對硬體的投資要求,因此你可以更快地開發和部署應用程式。 你可以使用Amazon EC2啟動大量或幾個虛擬伺服器,配置安全性和網路以及儲存管理。 Amazon EC2允許你對硬體升級或降級,來應對需求的變化或流量的峰值,因此不太需要進行流量的預測。”。
所以換句話說,你可以在任何時候租一個伺服器來進行計算,也就是機器學習模型訓練。 現在讓我們啟動一個例項吧!
首先,你需要選擇一個已經安裝了所有必需工具的AMI(基於TensorFlow的Kreas和Jupyter Notebook)。
選擇例項型別(你租到的計算機的質量)。 當然,你選擇的機型越好越貴。 但是你正在建立你的第一個例項,所以你肯定不想選最好的那個。選擇t2.micro就夠了,它就是一個測試例項。它可以在不掏空你的錢包的情況下,讓你體驗下環境。 :)
當你比較滿意,想要更多的計算能力時,我建議你使用一個g *型別的例項(g代表GPU後端)。比如 g2.2xlarge。 一個預設的GPU例項的定價為每小時0,772美元左右。
這裡沒什麼意思,跳過。
免費使用的最大容量是30 GB。此外,如果你不希望你的資料在關閉例項後消失,要取消選中“終止時刪除”核取方塊。
繼續。
這個步驟很重要,因為你不僅要使用ssh,還要透過瀏覽器訪問你的例項。 在埠8888上新增自定義TCP規則。僅允許從你的IP地址,8888和22(ssh)埠訪問它。
一切準備好了,現在啟動例項!
你只需要設定一個新的(或選擇一個現有的)金鑰對。透過ssh連結到你的機子時,必須要有金鑰。
下載生成的金鑰,注意保密!這樣除你之外沒有其他人可以訪問這臺機器。
現在讓我們檢視機器的狀態。
如你所見,例項已啟動並正在執行。 棒棒噠! 你剛剛啟動了一個AWS例項。
3)設定Jupyter Notebook
現在讓我們使用它。 透過ssh連線。
按照說明,更改私鑰的許可權並將示例鍵入終端(或使用PuTTY連線)。在-i引數後插入私鑰的路徑,使用'ubuntu'替換’root’。 所以命令看起來如下(如果你使用Windows,檢視如何透過PuTTY連線):
ssh -i ‘path/to/private/key’ ubuntu@public_dns
在終端輸入下面命令開啟Notebook
sudo jupyter notebook
你可以透過瀏覽器訪問Notebook,方法是鍵入your_public_dns:8888(8888是Jupyter預設埠)。
4)連線到你的例項
預設密碼是“'machinelearningisfun”(我建議你更改密碼,在Jupyter Notebook的文件中解釋瞭如何做)。
MNIST資料集是一個著名的手寫數字集。 我準備了一個Notebook示例,載入資料集,並擬合一個示例卷積神經網路。 開啟mnist.jpynb示例並自行執行其中的cell。
程式碼來自Keras示例庫
當你用完後,記得終止你的例項!賬單是依據例項執行的時間來計算的。例如,如果你忘記關掉你的g2.2xlarge 例項,讓它執行了一個月,你將要為此支付$0,772*24*30 = $555,84. :)
那麼,接下來呢? 我建議你看看notMNIST資料集,其中包含來自不同字型的字母集。 你也可能對CIFAR-10感興趣: 一組彩色影像,對應10個類別,比如飛機,船隻,鳥類或貓。
如果你是Keras新手,你可能對這個教程感興趣。 或者,像我做的案例,檢測可能觸發密集恐懼症的圖片(強烈建議不要google相關的照片)。 我在PiotrMigdał主持的波蘭兒童基金會的研討會上學習了卷積神經網路的基礎知識(以及如何設定機器)。 其中另一位參與者的原始碼,使用VGG16進行特徵提取,可在GitHub上獲取。