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.

[AWS] EC2 & GPU的更多相关文章

  1. AWS EC2首次使用VPS

    看到AWS有免费一年的试用期,就申请了一个账号.想搭建一个自己的网站.申请之前,你还需要有一张信用卡. 申请AWS账号,登陆控制台 进入AWS官网即可申请账号,进入控制台后,就可以新建一个AWS EC ...

  2. Amazon AWS EC2开启Web服务器配置

    在Amazon AWS EC2申请了一年的免费使用权,安装了CentOS + Mono + Jexus环境做一个Web Server使用. 在上述系统安装好之后,把TCP 80端口开启(iptable ...

  3. 在NodeJS中配置aws ec2

    获取access key和secret access key           自己账户下有security credentials的选项                      然后点击Acce ...

  4. 在aws ec2上使用root用户登录

    aws ec2默认是使用ec2-user账号登陆的,对很多文件夹是没有权限的.如何使用root账号执行命令就是一个问题了.解决办法如下: 1.根据官网提供的方法登录连接到EC2服务器(官网推荐wind ...

  5. AWS EC2笔记

    朋友想搭一个境外网站,找我帮忙,希望服务器.域名都在境外.我没有在境外建站的经历,只能先尝试.于是上网搜索了一下境外服务器,大家比较常用的是Digital Ocean和AWS,我索性打开这两家的官网, ...

  6. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  7. 亚马逊AWS EC2云实例AMI安装LNMP环境(2)——PHP5.6

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  8. 亚马逊AWS EC2云实例AMI安装LNMP环境(1)——Nginx安装

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  9. AWS EC2服务器的HTTPS负载均衡器配置过程

    AWS EC2服务器配置负载均衡器步骤:   1.普通负载均衡器   至少两台EC2实例,这里以Centos6.7系统为例 启动之后先安装个apache的httpd服务器默认80端口,或者使用其他服务 ...

随机推荐

  1. [ PyQt入门教程 ] PyQt+socket实现远程操作服务器

    来需求了..干活啦.. 需求内容 部分时候由于缓存刷新.验证码显示不出来或者浏览器打不开或者打开速度很慢等原因,导致部分测试同事不想使用浏览器登录服务器执行命令.期望有小工具可以替代登录浏览器的操作, ...

  2. csdn论坛页抓取

    抓取csdn论坛 实现功能 获取论坛分类所有链接,并拼接成推荐精华页的完成的链接 获取推荐精华页的帖子状态,赏分,帖子标题,作者,发布时间,回复量,查看量,最后发表时间 置顶内容不爬取,只打印置顶内容 ...

  3. Container及其内部进程监控剖析

    目前市场上的虚拟化技术种类很多,例如moby(docker).LXC.RKT等等.在带来方便应用部署和资源充分利用的好处的同时,如何监控相应Container及其内部应用进程成为运维人员不可避免遇到的 ...

  4. IT人不仅要提升挣钱能力,更要拓展挣钱途径

    前几天我上班路上,和小区门口开车的师傅闲聊,发现他们虽然学历不高,但挣钱的途径不少,比如固定接送多位客户,然后能通过朋友圈拓展新客户,而且通过客户口口相传,也能不断拉到生意,算下来每月也能挣1万5出头 ...

  5. c#滑窗缓存

    前言 在大数据时代,软件系统需要具备处理海量数据的能力,同时也更加依赖于系统强大的存储能力与数据响应能力.各种大数据的工具如雨后春笋般孕育而生,这对于系统来说是极大的利好.但在后端采用分布式.云存储和 ...

  6. The used SELECT statements have a different number of columns???

    今天我们组就我一个人留守在这里修复bug了,有点小悲伤啊,他们都问我能不能hold得住啊,我当然能hold得住啊: 在看一个入库的存储过程中,在数据库运行的时候是没问题的,项目已启动,进行入库操作就是 ...

  7. egret之好友列表(滑动列表)

    本文采用List+Scroller实现列表滑动功能 首先新建两个皮肤,一个用做好友界面的显示,一个用作单个好友的显示,新建皮肤如下: 皮肤一取名为:wxMainSkin,添加如下控件 皮肤一取名为:w ...

  8. [Python] 常见的排序与搜索算法

    说明: 本文主要使用python实现常见的排序与搜索算法:冒泡排序.选择排序.插入排序.希尔排序.快速排序.归并排序以及二分查找等. 对算法的基本思想作简要说明,只要理解了基本的思想,与实现语言无关. ...

  9. xib上的控件属性为什么要使用weak

    常规中,从xib拖出一个控件时,系统会自动生成一段代码,如下: 从这个图片中,可以看到控件的属性都是用的weak,这是为什么呢? 首先,如果把weak修改成strong其实也是可以的,但是会出现一个问 ...

  10. Redis数据类型的基本操作

    Redis数据类型的基本操作 一.string类型 1.设置value