这是一个帮助文档,我们会一步一步讲解如何从0开始在AWS上申请CPU或者GPU机器进行使用。
申请账号并登陆
首先我们需要在aws官网上面注册账号,这里需要绑定一张信用卡,所以没有master或者VISA卡的同学可以开通一张,实在不熟悉的同学可以搜索一下"如何注册aws账号"。
然后我们进入到控制面板,可以看到下面的图片,点击"EC2"
然后我们就能够进入到下一个界面
这个界面只需要注意三个地方,一个是右上角的地区,需要选择一个离你比较近的地区,整个亚太地区可以选择韩国,日本,新加坡和孟买。然后是左边的一个方框"限制",如果你申请CPU的计算实例,那么不用管,如果你要申请GPU计算实例,就需要点击"限制"进行申请,因为GPU实例会产生费用,亚马逊需要和你确认这个事情,一般需要两到三个工作日。
接下面就可以开始启动实例了,点击中间的红框即可开始。
申请实例并启动
进入上面的界面之后,需要选择操作系统,这里我们一般都选择linux系统,当然还有很多社区AMI,也就是别人配置好的系统,这里先暂时不用管,我们一般就在上面两个红框中选择一个,第一个是一个空的系统,什么都没有,第二个是一个深度学习的系统,装好了CUDA以及很多框架,可以选择这一个,如果选择这个,那么需要的磁盘空间可能更大。
点击选择之后便可以进入下面的界面。
这里需要选择实例类型,如果新注册的用户可以免费使用一年的t2.mirco实例,这个实例是没有GPU的,如果要使用GPU的实例,那么从上面的实例类型中选择GPU计算,便可以快速跳转到下面这里。
这里有很多个实例,一般我们就选第一个p2.xlarge,这个实例包含一个Nvidia k40GPU,后面有8块GPU和16块GPU的版本,当然费用也更高。选择完成之后我们可以进入下一步配置实例信息。
这里我们只需要关注根目录的大小,也就是云端计算平台的硬盘大小,因为我们需要存放数据集,需要安装框架,所以需要大一点,新注册的用户可以免费试用30G的存储,我们可以设置为40G,一般费用比较便宜。然后点击审核和启动实例。
接着进入到下面这个界面,我们可以点击右下角的启动来启动实例了。
接着会跳出一个对话框如下。
这里需要你创建一个密钥对,因为现在aws不支持密码登录,所以需要密钥登录,你在名称那一栏取一个名字,然后点击下载密钥对就可以了。
然后你就可以看到你的实例正在启动,点击下图红框的地方进入具体的实例位置。
然后可以进入到下面的界面,可以看到实例正在启动,右键点击实例这一栏,然后点击连接。
接着便会出来下面的窗口,按着这个窗口的操作,如果使用windows系统,需要PuTTY连接,因为我的电脑是mac,所以这个部分没有尝试。在mac下打开终端,先进入刚才存放密钥的位置,然后输出chmod 400 yourkey.pem
,这里我的密钥是'liao.pem',这个命令只需要第一次连接的时候输入,后面连接就不用管了,然后通过下面的命令连到你的远程linux服务器。
比如,这是我在终端中进行的输入,第一次连接会弹出一个问题,输入yes即可。
然后我们便进入到了系统,可以看到,红框就表示连接的远程服务器。
安装Anaconda
下面简单演示一下如何在远程环境下安装anaconda,这里需要一点bash命令的基础。首先使用自己的电脑进入到Anaconda的官网,然后右键点击Download,保存链接地址。
然后在刚刚连接的远程服务器上面输入
wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh
后面是刚刚复制的地址,然后输入回车,就开始下载了,下载完成之后是一个后缀为.sh的文件,输入sudo sh 文件名.sh
就可以开始安装了。
安装完成之后,通过下面的命令配置环境变量。
echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
这样便完成了远程Anaconda的安装。
安装CUDA
【注意】只有CPU的实例可以跳过步骤。
我们去Nvidia官网下载CUDA并安装。选择正确的版本并获取下载地址。
【注意】目前CUDA默认下载9.0版,但mxnet-cu90
的daily build还不完善。建议使用下面命令安装8.0版。
[图片上传失败...(image-afb059-1510476790914)]
然后使用wget
下载并且安装
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run
sudo sh cuda_8.0.61_375.26_linux-run
这里需要回答几个问题。
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: y
Do you want to install the OpenGL libraries?
(y)es/(n)o/(q)uit [ default is yes ]: y
Do you want to run nvidia-xconfig?
(y)es/(n)o/(q)uit [ default is no ]: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: n
安装完成后运行
nvidia-smi
就可以看到这个实例的GPU了。最后将CUDA加入到library path方便之后安装的库找到它。
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/usr/local/cuda-8.0/lib64" >>.bashrc
运行Jupyter notebook
接下来在远程终端运行Jupyter notebook。
jupyter notebook
如果成功的话会看到类似的输出
[图片上传失败...(image-8b4d44-1510476790914)]
因为我们的实例没有暴露8888端口,所以我们可以通过ssh映射到本地
ssh -L8888:locallhost:8888 ubuntu@your-ip.amazonaws.com
然后把jupyter log里的URL复制到本地浏览器就行了。
【注意】如果本地运行了Jupyter notebook,那么8888端口就可能被占用了。要么关掉本地jupyter,要么把端口映射改成别的。例如,假设aws使用默认8888端口,我们可以通过ssh映射到本地8889端口:
ssh -N -f -L localhost:8889:localhost:8888 ubuntu@your-ip.amazonaws.com
然后在本地浏览器打开localhost:8889,这时会提示需要token值。接下来,我们将aws上jupyter log里的token值(例如上图里:...localhost:8888/?token=token值
)复制粘贴即可。
后续
因为云服务按时间计费,通常我们不用时需要把样例关掉,到下次要用时再开。
如果是停掉(Stop),下次可以直接继续用,但硬盘空间会计费。如果是终结(Termination),我们一般会先把操作系统做镜像,下次开始时直接使用镜像(AMI)(上面的教程使用了Ubuntu 16.06 AMI)就行了,不需要再把上面流程走一次。
云虽然很方便,但是不便宜,所以在使用完GPU实例之后一定要记得关掉。