当本地机器的计算资源有限时,可以通过云计算服务获取更强大的计算资源来运行本书中的深度学习代码。本节将介绍如何在AWS(亚马逊的云计算服务)上申请实例并通过Jupyter记事本运行代码。本附录中的例子有如下两个步骤。
- 申请含一个K80 GPU的p2.xlarge实例。
- 安装CUDA及相应GPU版本的Tensorflow2.0。
申请其他类型的实例或安装其他版本的tensorflow的方法与本节类似。
首先,我们需要在AWS官方网站上创建账号。这通常需要一张信用卡。需要注意的是,AWS中国需要公司实体才能注册。如果你是个人用户,请注册AWS全球账号。
登录AWS账号后,点击图11.8红框中的“EC2”进入EC2面板。
图11.9展示了EC2面板的界面。在图11.9右上角红框处选择离我们较近的数据中心来降低延迟。我们可以选亚太地区,如Asia Pacific(Seoul)。注意,有些数据中心可能没有GPU实例。点击图11.9下方红框内“Launch Instance”按钮启动实例。
图11.10的最上面一行显示了配置实例所需的7个步骤。在第一步“1. Choose AMI”中,选择Ubuntu 16.04作为操作系统。
EC2提供了大量不同配置的实例。如图11.11所示,在第二步“2. Choose Instance Type”中,选择有一个K80 GPU的p2.xlarge实例。我们也可以选择像p2.16xlarge这样有多个GPU的实例。如果想比较不同实例的机器配置和收费,可参考 https://www.ec2instances.info/ 。
建议在选择实例前先在图11.9左栏“Limits”标签里检查下有无数量限制。如图11.12所示,该账号的限制是最多在一个区域开一个p2.xlarge实例。如果需要开更多实例,可以通过点击右边“Request limit increase”链接来申请更大的实例容量。这通常需要一个工作日来处理。
我们将保持第三步“3. Configure Instance”、第五步“5. Add Tags”和第六步“6. Configure Security Group”中的默认配置不变。点击第四步“4. Add Storage”,如图11.13所示,将默认的硬盘大小增大到40 GB。注意,安装CUDA需要4 GB左右空间。
最后,在第七步“7. Review”中点击“Launch”来启动配置好的实例。这时候会提示我们选择用来访问实例的密钥。如果没有的话,可以选择图11.14中第一个下拉菜单的“Create a new key pair”选项来生成秘钥。之后,我们通过该下拉菜单的“Choose an existing key pair”选项选择生成好的密钥。点击“Launch Instances”按钮启动创建好的实例。
点击图11.15所示的实例ID就可以查看该实例的状态了。
如图11.16所示,当实例状态(Instance State)变绿后,右击实例并选择“Connect”,这时就可以看到访问该实例的方法了。例如,在命令行输入以下命令:
ssh -i "/path/to/key.pem" [email protected]
其中/path/to/key.pem
是本地存放访问实例的密钥的路径。当命令行提示“Are you sure you want to continue connecting (yes/no)”时,键入“yes”并按回车键即可登录创建好的实例。
为了使用GPU版本的Tensorflow 2.0,我们还需要在创建好的实例上安装CUDA(参考“安装CUDA”小节)。实际上,我们也可以直接创建已安装CUDA的实例,例如,在第一步“1. Choose AMI”中,选择“Deep Learning Base AMI (Ubuntu) Version XX.X”,并保持后面步骤不变。登录实例后,运行cat README
命令查看实例上已安装的CUDA各版本(假设含9.0)。如果希望将CUDA的默认版本设为9.0,依次运行命令sudo rm /usr/local/cuda
和sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
。之后,即可跳过以下小节的CUDA安装步骤。
Linux安装CUDA可以参考这篇博客NVIDIA cuda10.0安装
Windows 10安装CUDA可以参考这篇博客NVIDIA cuda10.0安装
安装tensorflow 2可参考官方教程
现在就可以运行Jupyter记事本了。
jupyter notebook
图11.18显示了运行后可能的输出,其中最后一行为8888端口下的URL。
由于创建的实例并没有暴露8888端口,我们可以在本地命令行启动ssh从实例映射到本地8889端口。
# 该命令须在本地命令行运行
ssh -i "/path/to/key.pem" [email protected] -L 8889:localhost:8888
最后,把图11.18中运行Jupyter记事本后输出的最后一行URL复制到本地浏览器,并将8888改为8889,点击回车键即可从本地浏览器通过Jupyter记事本运行实例上的代码。
因为云服务按使用时长计费,我们通常会在不使用实例时将其关闭。
如果较短时间内还会重新开启实例,右击图11.16中的示例,选择“Instance State”
如果较长时间内不会重新开启实例,右击图11.16中的示例,选择“Image”
- 可以通过云计算服务获取更强大的计算资源来运行本书中的深度学习代码。