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.