参考 在AWS上配置深度学习主机 <https://zhuanlan.zhihu.com/p/25066187>

AWS 文档: <https://aws.amazon.com/cn/documentation/ec2/>


因为本地开发环境受限(没有高端显卡),于是深度学习运算只能使用各大厂的云主机;经过对比,发现亚马逊的aws在深度学习虚拟主机的搭建上性价比最高,于是决定使用aws。

根据推荐,要解决基础应用的要求,可以使用aws上的p2.xlarge主机实例,p2.xlarge 是一种非常适合深度学习的云服务器,它配备了 12G 显存的
Tesla K80 显卡,4核 CPU,60G 内存,以及 500M 的网速。

注册账户及填写工单

这一部分内容可参考原文,即需要一张visa/Master Card/运通/JCB
信用卡,值得注意的是注册过程中会扣1美元的预收费用,以验证信用卡的有效性,这1美元会在数天之后退回信用卡。
另外在注册过程中除了常见的邮件验证外,还会有电话验证,只需要在电话中输入验证码即可。

aws 实例设置

AMI 选择

AMI
即运行环境,可以自己创建,也可以选择已经搭建好的;由于要使用p2.xlarge主机,所以首先要注意哪些地区有该主机实例提供,目前美国弗吉尼亚和俄勒冈两个地区确认有该主机实例提供,地区选择位于登录界面右上角:

注册完成,成功登录后,进入aws控制台,可以看到:


点击服务列表的EC2,进入EC2控制台:



在控制台左侧的限制一栏里,可以看到该账户目前的权限,如果需要特定服务,点击“请求提高限制”,然后提交工单即可。

点击启动实例 按钮,开始选择AMI:

在这里选择合适项目的AMI,一般选择预装好了tensorflow和conda环境,并且安装了Nvida 驱动的AMI,可以在搜索框进行搜索,比如:


一般AMI都带有简短描述,选择合适自己项目的即可,如果有自建的AMI,也可选择自建的AMI,在这里,我选择了图中第二个AMI.

在选择实例类型里选择合适的实例,比如p2.xlarge:

在配置实例中可以选择竞价模型,建议选择竞价模型,可以手动设置最高价格,当价格大于当前可用价格,实例就会被创建;在子网选项里可以选择具体的实例子网;




然后依次下一步至配置安全组



在安全组配置中,可以设置流入接口和流出接口,这里最简单的就是设置成全部端口,但是可能存在安全问题(保存好密钥文件即可)

也可以这样按需求设置:

建议还是设置为所有流量;

进入审核页面,核对之前各部分信息无误后,点击启动,会要求使用密钥,可以选择新建(新建好后需下载保存)或已有密钥;

创建成功,有:




原参考文章是基于本地Linux系统的连接方法,在windos10以下版本的windos系统里,没有自带的ssh服务,因此只能选择putty连接,相关方法可以在aws文档中找到:
使用 PuTTY 从 Windows 连接到 Linux 实例
<https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/putty.html?icmpid=docs_ec2_console>
,而对于windos10系统,系统已经集成了ssh工具,可以在设置中添加启用,启用后可以和Linux一样,直接使用ssh连接;

在保存有key(密钥)的文件夹中,用bash终端输入:
ssh -i "a.pem" [email protected]
其中的 key 为你自己的key,xxxx 地址也要改为你自己买的服务器的 ip地址。如果它提示你是否要确定连接,点击确定:
如果不是在存有密钥的文件夹启用ssh,比如在桌面根目录,则改为:
ssh -i address/a.pem [email protected]
address为本地存放key的相对地址;

连接后,在终端有:

这时已经连上了虚拟主机;
在bash命令行实验,显示python 版本:
python --version


启动jupyter notebook,开启一个支持远程连接的 jupyter notebook:
jupyter notebook --ip=0.0.0.0
会在终端中显示jupyter的浏览器地址:
http://0.0.0.0:8888/?token=xxxxxxxx
然后在浏览器中输入 服务器 IP:8888 即可以进入jupyter notebook ,如果之前设置了jupyter
密码,则需要输入密码。比如此时虚拟主机分配的IP为52.152.152.10,则在浏览器中输入:
http://52.152.152.10:8888/?token=xxxxxxxx
这样就可以进入jupyter了:


文档上传与下载

aws的虚拟主机采用scp进行文档上传与下载,对于windows系统,可以使用winscp这款软件:


下载安装后,打开,有:


即在主机名填入aws主机DNS域名,用户名为ubuntu(不同AMI用户名可能不同),再点击高级—ssh—验证,填入.ppk后缀的密钥,点击连接,即可连接;
需要注意:
aws生成的密钥文件为a.pem,需要使用putty将其转变为a.ppk形式的文件,转化过程可参阅aws文档: 使用 PuTTY 从 Windows
连接到 Linux 实例
<https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/putty.html?icmpid=docs_ec2_console>

首次用winscp链接远程主机会弹出安全性警告,点击“是/确定”即可;

连接成功:

左侧为本地文件夹,右侧为远程虚拟主机文件夹,拖拽文件即可完成上传下载操作。
至此,aws主机基本操作要求均已完全满足,可以使用它工作了。

PS: 创建私有的AMI

当使用竞价实例时,一旦停止实例,AMI中所有文件和记录都会被销毁,如果想要保存这个开发环境,下次再继续使用,可以将这个AMI环境保存下来:


点击“创建映像” 即可创建一个AMI映像,保存过程约3-5分钟左右,保存成功后,可以在左侧任务列表中的映像–AMI
中找到,下一次开启远程虚拟主机时,可以直接选择此AMI。


aws提供了为期一年30G的免费存储空间,超过30G或者超过一年均会收费,因此,当项目完成时,请把不必要的AMI全部删除。