在AWS上配置深度学习主机

介绍

Amazon EC2 P2 实例

p2.xlarge 是一种非常适合深度学习的云服务器,它配备了 12G 显存的 Tesla K80 显卡,4核 CPU,60G 内存,以及 500M 的网速。如果你还嫌不够,可以选择它的8倍和16倍的版本。

注册账号

首先我们需要注册一个 aws 账号,从刚才的地址可以注册,需要 visa 或 mastercard 信用卡。

注册好了以后,我们需要申请 p2.xlarge 的权限,因为默认限制0台。

填写工单

请求提高限制

不然就会出现可恶的 Instance Count Limit Exceeded

填写方法很简单,随便写点理由证明你需要 GPU 就行,一般都能通过。

图中的地区是美国东部 (弗吉尼亚北部),你可以根据自己的喜好选择不同的地址。

开启实例

选择 AMI

EC2 控制面板

首先点击启动实例,然后这里我们记得选择 Udacity 的 AMI,因为预装了Tensorflow GPU, Keras, OpenCV,比较省折腾。

选择一个实例类型

这里选 p2.xlarge 就好,开启以后一分钟和59分钟都算一个小时,所以开了以后可以放心大胆折腾一个小时,坏了也不用怕,删掉再开一个就好。

配置安全组

入站和出站记得配置成任所有流量和任意位置,不然到时候 ssh 不上去,或者开 jupyter notebook 连不上去。懂的人可以自行配置,不懂就直接写所有流量就好了,反正有 key 才能连上去。

配置密钥对

如果你有自己常用的私钥和公钥,可以从密钥对这里导入,否则你可以生成一个新的密钥,然后下载密钥对。

连接

在连接以前,它需要进行一段时间初始化(大概五分钟),所以你可以先等待一会。等它显示已通过的时候,你就可以用 ssh 连接它了。下面是我连接的命令:

1
ssh -i Downloads/test.pem ubuntu@52.91.231.174

其中的 key 你需要改为你自己的路径,IP 地址也要改为你自己的主机的 IP 地址。如果它提示你是否要确定连接,你要确定:

1
Are you sure you want to continue connecting (yes/no)? yes

如果提示下面的信息:

1
2
3
4
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'Downloads/test.pem' are too open.

你需要将你的 key 的权限改为只有你可以访问,然后再进行连接:

1
chmod 700 Downloads/test.pem

停止

当你不使用实例的时候,记得停止它。停止以后,不会计费。

事实上由于我是新用户,所以会有一年免费 EBS 试用,一年以后的收费可以参照这里:https://aws.amazon.com/cn/ebs/pricing/,一个月 30G 的 SSD 收费是3美元,因此你可以自行权衡数据和价格,若是一个月以后还要用这些数据,而你愿意出3美元保持这些数据,避免一个月以后麻烦,那么你可以不必终止该实例。当你长期不打算使用该实例时,请务必终止该实例。

竞价实例

竞价实例是一种特殊的实例,它可以以超低的价格提供配置一样的实例,和普通实例的差别在于不可停止,因此当你想跑比较大的网络的时候(训练时间大于1小时),用竞价实例会非常划算。0.9美元每小时的 p2.xlarge 在竞价实例一个月的历史记录里很少超过0.3美元。即使超过了,我们也不会出高于0.9美元的价格。

上图是这两天的账单,我用了40小时,才花了5.33美元,平均一小时0.13美元。

创建自己的映像(AMI)

当你想创建竞价实例的时候,你可能并不想重新配置一遍环境,这时候你可以创建自己的映像,然后在创建竞价实例的时候使用该映像,这样创建的竞价实例可以完好无损地迁移之前的驱动,环境,以及数据和代码。

创建映像

选择映像(AMI)

实际体验

训练时nvidia-smi的输出。

将二十多万张图片载入内存时htop的输出。

speedtest 的结果。