[AWS] EC2 & GPU

Amazon Elastic Compute Cloud (Amazon EC2) 


EC 2的使用

機型的選擇

經驗談

Ref: Amazon EC2 實例類型html

 

實踐派

搭建網站:MediaWikipython

壓力測試:Siegenginx

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

 

In a nutshell

Web服務器,使用M4 or C3。ubuntu

DB服務器,使用R4。服務器

 

啓動和登錄Linux服務器

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

Putty on Windows須要將密鑰轉換下,導入再保存爲.ppk文件。框架

 

在AWS上開啓GPU使用之旅

三大派別

Nvidia:CUDAssh

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 模型


1、選擇 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) 提交工單,申請改變某種實例的限制數目。

 

 

2、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 這個虛擬機鏡像。

 

 

3、開始建立

選擇實例類型

 

設置最小存儲

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



4、訓練機器學習模型

啓用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.

相關文章
相關標籤/搜索