[AWS] EC2 & GPU


Amazon Elastic Compute Cloud (Amazon EC2) 


EC 2的使用

機型的選擇

經驗談

Ref: Amazon EC2 實例類型

 

實踐派

搭建網站:MediaWiki

壓力測試:Siege

壓力指標:內存使用;IO情況;Package情況;CPU使用情況;

 

In a nutshell

Web服務器,使用M4 or C3。

DB服務器,使用R4。

 

啟動和登陸Linux服務器

實例的創建,請見:[AWS] Introductory Course & S3 Bucket

Putty on Windows需要將密鑰轉換下,導入再保存為.ppk文件。

 

在AWS上開啟GPU使用之旅

三大派別

Nvidia:CUDA

Khronos Group:OpenCL

Microsoft:DirectCompute

 

兩種GPU選擇

G3系列,Tesla M60

P2系列,Tesla K80

 

EC2 Linux User data 的使用

Launch Linux with other configure.

通過腳本預安裝nginx。

 

 

 

在 AWS EC2 上訓練 Deep Learning 模型


一、選擇 EC2 實例

三種型號

Amazon 提供的帶有 GPU 的 EC2 實例有三種,分別是 P2 系列,P3 系列(高配)和 G3 系列(圖形處理)。

 

P2 型號

P2 實例適用於通用 GPU 計算應用程序,特色如下:

      • 高頻 Intel Xeon E5-2686 v4 (Broadwell) 處理器
      • 高性能 NVIDIA K80 GPU,每個配備 2496 個並行處理內核和 12GiB 的 GPU 內存
      • 支持通過 GPUDirect™ 進行對等 GPU 通信
      • 使用 Elastic Network Adapter (ENA) 提供增強型聯網,在一個置放群組內實現高達 25Gbps 的聚合網絡帶寬默認為 EBS 優化型,無額外收費

 

 

申請限制查看

使用權限

一般賬戶中 P2,P3,G3 系列實例的限制數目都是 0。

需要專門向 amazon 申請才能獲得使用資格。申請頁面在這里: http://aws.amazon.com/contact-us/ec2-request

 

使用個數權限

可以在這個頁面(http://aws.amazon.com/contact-us/ec2-request) 提交工單,申請改變某種實例的限制數目。

 

 

二、Deep Learning AMI

確定了 EC2 實例的系列和型號並且確認自己賬戶下這種實例的限制數目大於 0 之后,就可以選擇適合深度學習用的虛擬機鏡像了(Deep Learning Amazon Machine Images, 后面簡稱 DLAMI)。

DLAMI 其實就是包含了操作系統、顯卡驅動以及深度學習需要的各種軟件環境的一個安裝盤。用安裝盤(DLAMI)在機器(EC2 實例)上安裝系統。

 

三種安裝方式

Deep Learning AMI with Conda

用 Anaconda 安裝了各個深度學習框架,每個框架單獨在一個 Python 的虛擬環境中,互不干擾。

* 各個 DL 框架是分離的,並且非常容易切換;

Deep Learning AMI with Source Code

各個框架通過源碼安裝,都裝在同一個環境中,沒有划分虛擬環境。

* 適合於那些需要改框架源碼的人

 

以上兩種支持如下幾種深度學習框架:• Apache MXNet • Caffe • Caffe2 • CNTK • Keras • PyTorch • TensorFlow • Theano • Torch

 

Deep Learning Base AMI

沒有安裝深度學習框架,只安裝了 NVIDIA CUDA 和其他依賴程序。你需要自己安裝 Python 的各種模塊,機器學習的框架等等。

* 適合於那些 fork 了某個深度學習項目,做了改進,並想自己構建最新版本的人。

 

最終選型

方便起見,我們選擇 Deep Learning AMI (Ubuntu) with Conda 這個虛擬機鏡像。

 

 

三、開始創建

選擇實例類型

 

設置最小存儲

p2.xlarge 需要的最小存儲是 75G(系統安裝之后大約是 50G,包括系統自帶的一些樣例代碼,各種框架的軟件等),所以這里我們直接按照默認配置,75G。

 

SSH連接

ssh 登錄之后會顯示如下畫面,告訴你如何進入各種機器學習框架的虛擬 Python 環境。

=============================================================================
       __|  __|_  )
       _|  (     /   Deep Learning AMI (Ubuntu) Version 12.0
      ___|\___|___|
=============================================================================

Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-1062-aws x86_64v)

Please use one of the following commands to start the required environment with the framework of your choice:
for MXNet(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _______________________________ source activate mxnet_p36
for MXNet(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _______________________________ source activate mxnet_p27
for TensorFlow(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _____________________ source activate tensorflow_p36
for TensorFlow(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _____________________ source activate tensorflow_p27
for Theano(+Keras2) with Python3 (CUDA 9.0) _______________________________________________ source activate theano_p36
for Theano(+Keras2) with Python2 (CUDA 9.0) _______________________________________________ source activate theano_p27
for PyTorch with Python3 (CUDA 9.0 and Intel MKL) ________________________________________ source activate pytorch_p36
for PyTorch with Python2 (CUDA 9.0 and Intel MKL) ________________________________________ source activate pytorch_p27
for CNTK(+Keras2) with Python3 (CUDA 9.0 and Intel MKL-DNN) _________________________________ source activate cntk_p36
for CNTK(+Keras2) with Python2 (CUDA 9.0 and Intel MKL-DNN) _________________________________ source activate cntk_p27
for Caffe2 with Python2 (CUDA 9.0) ________________________________________________________ source activate caffe2_p27
for Caffe with Python2 (CUDA 8.0) __________________________________________________________ source activate caffe_p27
for Caffe with Python3 (CUDA 8.0) __________________________________________________________ source activate caffe_p35
for Chainer with Python2 (CUDA 9.0 and Intel iDeep) ______________________________________ source activate chainer_p27
for Chainer with Python3 (CUDA 9.0 and Intel iDeep) ______________________________________ source activate chainer_p36
for base Python2 (CUDA 9.0) __________________________________________________________________ source activate python2
for base Python3 (CUDA 9.0) __________________________________________________________________ source activate python3

Official Conda User Guide: https://conda.io/docs/user-guide/index.html
AWS Deep Learning AMI Homepage: https://aws.amazon.com/machine-learning/amis/
Developer Guide and Release Notes: https://docs.aws.amazon.com/dlami/latest/devguide/what-is-dlami.html
Support: https://forums.aws.amazon.com/forum.jspa?forumID=263
=============================================================================

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

38 packages can be updated.
0 updates are security updates.

 

所以,根據上面的提示信息可以看出,不同機器學習框架都被安裝成了一個 Python 虛擬環境,想進入某個虛擬環境,例如 tensorflow Python 3.6 環境,只需執行:

source activate tensorflow_p36

 

退出某個虛擬環境:

source deactivate

 

 

查看GPU硬件信息

nvidia-smi

# 每兩秒運行一次,刷新數據
watch -n 2 nvidia-smi



四、訓練機器學習模型

啟用TensorFlow環境

首先進入 tensorflow_p36 環境.

source activate tensorflow_p36

 

 

首次執行大約需要 1 分鍾時間,安裝 tensorflow-gpu。

這里貌似 Amazon 的 AMI 有個問題,上面自動安裝 tensorflow 模塊之后,運行 python 程序卻報告找不到 tensorflow。需要手動再安裝一次:

pip install tensorflow-gpu

 

 

運行 CNN 測試程序

上傳模型並訓練

程序打包在文件 cnn_cifar.tgz 中,上傳到 EC2 實例:

scp cnn_cifar.tgz awsp2:/home/ubuntu/

 

 

拷貝實驗結果

運行過程中或者運行結束之后,可以把數據打包之后通過 scp 命令傳回本地。

 

End.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM