手把手在亚马逊EC2上搭建Keras GPU

时间:2022-05-06
本文章向大家介绍手把手在亚马逊EC2上搭建Keras GPU,主要内容包括1) 创建一个账号、2) 发布一个实例(instance)、3) 建立 Jupyter Notebook、4) 连接你的实例、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

由于需要使用越来越复杂的神经网络,我们还需要更好的硬件。但我们的电脑通常不能承受那么大的网络,不过你可以相对容易地在亚马逊上租用一个功能强大的计算机,比如E2服务你可以相对容易地按照小时租用在亚马逊EC2服务。

我使用Keras——一个开源神经网络Python库。因为它的易用性,所以初学者可以很容易开始自己的深度学习旅程。它建立在TensorFlow之上(但是Theano也可以使用)—— 一个用于数值计算的开源软件库。租借的机器将通过浏览器使用Jupyter Notebook ——一个网络应用程序,允许共享和编辑文档与实时代码。

Keras可以在GPU上运行cuDNN —— 深层神经网络GPU加速库。这种方法比典型的CPU快得多,因为它被设计用于并行计算。我建议你看看几个CNN基准,比较不同的GPU和CPU上最流行的神经网络的运行时间。

我将向您手把手介绍如何通过预先准备的Amazon Machine Image(AMI)设置这样的深度学习环境。

1) 创建一个账号

访问: https://aws.amazon.com/ ,然后创建一个 AWS 账号。

登陆进去

你控制台应该是长这样的:

根据你所在地,选择 Frankfurt或者N. Virgiania或者 Singapore . 这样过会儿它会让你试用一个预装的Keras AMI。

2) 发布一个实例(instance)

让我们选择 EC2 界面.

亚马逊如是说:“Amazon Elastic Compute Cloud(Amazon EC2)在Amazon Web Services(AWS)云中提供可扩展的计算能力。 使用Amazon EC2消除了对前期投资硬件的需求,因此您可以更快地开发和部署应用程序。 您可以使用Amazon EC2启动所需数量的虚拟服务器,配置安全性和网络以及管理存储。 Amazon EC2允许您向上或向下扩展以应对需求变化,从而减少对预测流量的需求.”

换句话说,你可以在任何时候租一个服务器来跑你的应用,在本案中,是用来做深度计算。

首先你需要选择一个AMI,这里已经安装了所有需要的工具 (Keras on TensoFlow with Jupyter Notebook).

选择实例类型(您租用的计算机性能)。 当然,你选择更好的情况下你支付得会更多。 但是你正在创建你的第一个实例,所以你不需要用最好的类型,不是么? 只需选择t2.micro,它就是一个测试实例。 它不会让你大失血。当你对它感到舒适,并需要更多的计算能力,我建议你应该使用一个g *类型的实例(g代表GPU后端)。 g2.2xlarge。 这是一个默认的GPU实例的定价是每小时约$ 0,772。

这里没什么花哨,所以跳过。

您最多可以免费使用30 GB。 此外,如果您不希望您的数据在终止实例后消失,则应取消选中“终止时删除”复选框。

继续

好的,这个阶段很重要,因为你不仅要使用ssh,还要通过浏览器访问你的实例。 在端口8888上添加自定义TCP规则。仅允许从您的IP地址(8888和22(ssh))访问它。

所有的东西都准备好了,现在就可以发布一个实例了。

您只需要设置一个新的(或选择一个现有的)密钥对。 他们需要通过ssh登录到您的机器。

下载生成的密钥并保持其私有! 不要让别人知道。

现在让我们看看机器的状态:

如您所见,实例已启动并正在运行。 做得好! 您刚刚启动了一个AWS实例。

3) 建立 Jupyter Notebook

现在让我们用一用。通过SSH来链接.

按照说明,更改私钥的权限并将示例键入终端(或使用PuTTY连接)。 在-i参数插入私钥的路径而不是'root'键入'ubuntu'。 所以命令看起来如下:

ssh -i ‘path/to/private/key’ ubuntu@public_dns

输入如下来运行notebook:

sudo jupyter notebook 

进入终端。 您可以通过浏览器访问notebook:键入你的公共dns:8888(8888是Jupyter默认端口)。

4) 连接你的实例

默认密码是 “machinelearningisfun” (我猜你会改密码, 在 Jupyter Notebook documentation 里会解释如何使用).

MNIST数据库是一个众所周知的手写数字集合。 我准备了一个样本notebook,加载数据集,并拟合一个样本卷积神经网络。 打开mnist.jpynb示例可以自行运行单元格。

当你完成后,记得终止你的实例! 付款计算基于实例上线的时间量。 例如,如果您忘记了已运行一个月的g2.2xlarge实例,您将支付$ 0,772 * 24 * 30 = $ 555,84。

那么,接下来呢? 我鼓励你看看notMNIST数据集,其中包含来自不同字体的字母表字母集。 您可能对CIFAR-10感兴趣 - 一组彩色图像,可以匹配10个类别,比如 飞机,船只,鸟类或猫。

本文翻译自:https://medium.com/@mateuszsieniawski/keras-with-gpu-on-amazon-ec2-a-step-by-step-instruction-4f90364e49ac#.i2c5s5red