我将向你介绍如何一步步在预置好的 Amazon Machine Image (AMI)上搭建这样一个深度学习的环境。
大数据文摘作品,编译 Molly、寒小阳、Yawei。
随着我们使用的神经网络越来越复杂,我们需要更强劲的硬件。我们的个人电脑一般很难胜任这样大的网络,但是你可以相对轻松地在 Amazon EC2 服务中租到一台强劲的电脑,并按小时支付租金。
我用的是 Keras,一个神经网络的开源 python 库。由于用法十分简单,它很适合入门深度学习。它基于 Tensorflow,一个数值计算的开源库,但是也可以使用 Theano。租到的机器可以使用 Jupyter Notebook 通过浏览器来访问。Jupyter Notebook 是一个通过交互式代码来共享和编辑文档的 web 应用。
通过 cuDNN,一个深度神经网络 GPU 加速库,Keras 可以在 GPU 上运行。由于并行运算的设计,这种方式会比一般的 CPU 要快很多。建议你看几个 CNN 指标,对比最流行的神经网络在不同的 GPU 和 CPU 的运行时间。
我将向你介绍如何一步步在预置好的 Amazon Machine Image (AMI)上搭建这样一个深度学习的环境。
1) 创建账户
访问 https://aws.amazon.com/ ,并创建一个 AWS 账户。
然后登陆控制台。
你的控制面板应该看起来像这样。
确保你选择的所在地区是法兰克福,N. Virgiania 或新加坡,以便之后可以使用一个预置好的 Keras AMI。如果你想自己动手设置这样的 AMI,你可以按照这个指南。
2) 启动实例
现在让我们跳转到 EC2 控制页面。
“Amazon Elastic Compute Cloud(Amazon EC2)在 Amazon Web Services(AWS)云中提供可扩展的计算功能。 Amazon EC2 的使用消除了前期对硬件的投资要求,因此你可以更快地开发和部署应用程序。 你可以使用 Amazon EC2 启动大量或几个虚拟服务器,配置安全性和网络以及存储管理。 Amazon EC2 允许你对硬件升级或降级,来应对需求的变化或流量的峰值,因此不太需要进行流量的预测。”。
所以换句话说,你可以在任何时候租一个服务器来进行计算,也就是机器学习模型训练。 现在让我们启动一个实例吧!
首先,你需要选择一个已经安装了所有必需工具的 AMI(基于 TensorFlow 的 Kreas 和 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 参数后插入私钥的路径,使用'ubuntu'替换’root’。 所以命令看起来如下(如果你使用 Windows,查看如何通过 PuTTY 连接):
ssh -i ‘path/to/private/key’ ubuntu@public_dns
在终端输入下面命令打开 Notebook
sudo jupyter notebook
你可以通过浏览器访问 Notebook,方法是键入 your_public_dns:8888(8888 是 Jupyter 默认端口)。
4)连接到你的实例
默认密码是“'machinelearningisfun”(我建议你更改密码,在 Jupyter Notebook 的文档中解释了如何做)。
MNIST 数据集是一个著名的手写数字集。 我准备了一个 Notebook 示例,加载数据集,并拟合一个示例卷积神经网络。 打开 mnist.jpynb 示例并自行运行其中的 cell。
代码来自 Keras 示例库
当你用完后,记得终止你的实例!账单是依据实例运行的时间来计算的。例如,如果你忘记关掉你的 g2.2xlarge 实例,让它运行了一个月,你将要为此支付$0,772*24*30 = $555,84. :)
那么,接下来呢? 我建议你看看 notMNIST 数据集,其中包含来自不同字体的字母集。 你也可能对 CIFAR-10 感兴趣: 一组彩色图像,对应 10 个类别,比如飞机,船只,鸟类或猫。
如果你是 Keras 新手,你可能对这个教程感兴趣。 或者,像我做的案例,检测可能触发密集恐惧症的图片(强烈建议不要 google 相关的照片)。 我在 PiotrMigda?主持的波兰儿童基金会的研讨会上学习了卷积神经网络的基础知识(以及如何设置机器)。 其中另一位参与者的源代码,使用 VGG16 进行特征提取,可在 GitHub 上获取。