跳至主要内容

在云端使用 Jupyter Notebooks 进行深度学习

本分步教程将向您展示如何在 Amazon Web Services(AWS)EC2 GPU 上设置并使用 Jupyter Notebook 来进行深度学习。
· 10分钟 阅读

使用 AI 探索

尽管 DataCamp 的《Python 深度学习入门》课程已经为您在笔记本电脑或个人计算机上开展深度学习提供了所需的一切,但您最终会发现,您希望在图形处理器(GPU)上运行深度学习模型。

这篇文章将帮助您迈出下一步!

大多数用户的个人电脑并不配备 GPU,因此本文将向您演示如何在 Amazon Web Services(AWS)云上运行一台带 GPU 的实例。

按照我们的方式在 GPU 上运行模型的成本约为每小时 0.90 美元。所以,如果您的笔记本电脑或个人计算机自带 GPU,您也可以将其配置为使用本机 GPU,从而节省开销。

第一次搭建云计算环境需要完成不少步骤。但一旦配置完成,后续继续使用就会非常轻松。

注册 Amazon Web Services 账户

前往 https://aws.amazon.com/ 注册 AWS 账户。点击链接 Create an AWS Account(创建 AWS 账户)。

选择按钮 I am a new user(我是新用户)并输入您的电子邮箱地址。随后系统会引导您填写姓名、邮箱与密码等信息。

amazon web services

设置云计算服务器

配置服务器的过程包含不少步骤。好在我们会演示如何停止实例,这样在不使用时就无需付费,并且在完成设置后,您也可以随时快速重启。

现在您已有账户,今后可随时回到 https://aws.amazon.com/ 并点击 Sign In To Console(登录控制台)使用它。

Sign In To Console

Amazon 提供的云计算服务种类繁多,新用户可能会觉得有些不知所措。我们将聚焦于其 EC2 服务(Elastic Cloud Compute 的缩写)。浏览器窗口左上方提供了服务菜单。

Jupyter notebook aws

打开该菜单并选择 EC2(通常是第一项)。这会进入一个页面,展示您运行中的所有 EC2 计算实例的状态信息。点击页面中间的按钮以启动实例(Launch Instance)。

launch instances

每个计算实例都预装了不同的软件(称为“机器映像”),我们需要选择想要预装的内容。本例中,我们将使用 AWS Marketplace 中为深度学习优化的映像。

在左侧菜单栏选择 AWS Marketplace。

然后在搜索框中输入 deep learning ubuntu:

the marketplace

这会显示一些选项,其中包括 Amazon 官方的 Deep Learning AMI Ubuntu Version。请选择它。

ubuntu

接下来会显示实例类型菜单。不同的实例类型价格不同,计算能力也不同。

带有 GPU 的实例以 g2 或 p2 开头。我们推荐 p2.xlarge,价格略低于每小时 1 美元。若您希望更经济一些,g2.2xlarge 约为每小时 0.65 美元,但速度和性能略逊一筹。

选择实例类型后,在页面底部点击 Configure Instance Details(配置实例详细信息)。然后在页面上方的菜单中选择 6. Configure Security Group(配置安全组)。

我们将在这里设置实例,便于从您的电脑访问。

每一行都描述了访问实例的规则。

我们将使用 Jupyter notebooks,它通过端口 8888 提供服务。如果您现在还不明白,稍后会看到如何使其工作。

目前,请点击 Add Rule(添加规则)按钮。在新增的行中,将协议选择为 TCP,端口填写 8888,最后一列来源填写 0.0.0.0/0。

security

最后,点击屏幕底部的 Review and Launch(检查并启动)按钮。然后再次点击 Launch(启动)。

接下来就是最后一步的安全设置……即选择密钥对。密钥是您电脑上的一个文件,必须与服务器上存储的文件匹配。这可以防止其他人使用您刚刚设置的服务器。因此,请勿与他人共享密钥,也不要将该文件放到任何公共位置。

选择 Create a new key pair(创建新密钥对)并为密钥命名。然后点击 Download Key Pair(下载密钥对)按钮获取密钥副本,稍后访问服务器需要用到它。

很快,您会看到如下所示的界面:

launch status

蓝色的一长串字符是您实例的名称。您可以点击它进入 EC2 仪表板,查看该服务器正在运行。

恭喜您!您已在云端成功运行一台深度学习服务器。

连接到您的服务器

现在我们将使用名为 ssh 的协议连接到服务器。随后,我们会启动一个 Jupyter notebook 服务器,并通过浏览器使用它。

在 mac 或 linux 电脑上,您可以使用 ssh 命令。在 Windows 上,许多人会使用名为 PuTTY 的应用进行 ssh 连接。

您可能需要更改密钥文件的访问权限。在 MacOS 和 Linux 上,可以使用以下命令完成:

chmod 400 my_private_key.pem

然后,仍在命令行中,指定登录服务器时用于认证的密钥:

ssh-add my_private_key.pem

要登录服务器,我们需要服务器的 IP 地址。这可以在浏览器中的 EC2 仪表板找到。

dashboard

在命令行中使用以下命令登录:

ssh ubuntu@34.208.222.118

请将 34.208.222.118 替换为您服务器的 IP 地址。

登录服务器后,使用 ipython 命令启动 IPython 交互环境。在 IPython 中尝试导入 keras 以确认一切正常。您会看到一些提示 CUDA 正在被使用的消息……这意味着 keras 正在访问 GPU。

如果您熟悉 Linux、IPython 和 Linux 文本编辑器,可以从这里直接开始工作。有些人会选择开两个窗口:一个通过 ssh 连接到服务器并使用 IPython,另一个通过 ssh 连接到服务器并使用文本编辑器。

设置 Jupyter Notebook

不过,大多数人会发现通过浏览器设置 Jupyter notebooks 并编程更为便捷。为此,我们需要设置一个新密码。

第一步是获取您想使用的密码的哈希值。您可以在 IPython 中执行以下操作:

复制设置密码后输出的哈希值。稍后还会用到它。

输入 exit 退出 IPython。

现在我们需要告诉 Jupyter 使用您选择的密码。为此,请依次执行以下命令:

jupyter notebook --generate-configmkdir certscd certssudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

然后使用文本编辑器编辑 ~/.jupyter/jupyter_notebook_config.py。我喜欢用 vim,对应命令为:

vim ~/.jupyter/jupyter_notebook_config.py

在该文件顶部粘贴以下内容:

c = get_config()c.IPKernelApp.pylab = 'inline' c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False # Your password below will be whatever you copied earlier c.NotebookApp.password = u'sha1:941c93244463:0a28b4a9a472da0dc28e79351660964ab81605ae' c.NotebookApp.port = 8888

您可以完整复制上述内容,只需替换密码即可。注意,不要使用明文密码,而是粘贴您先前生成的密码哈希值。

在浏览器中连接到 Jupyter

打开您常用的浏览器,输入实例的地址(可在 EC2 仪表板中获取),并在后面加上 :8888。

此时您可能会看到一条安全提示。一般无需担心。在 Chrome 中,您可以点击主窗口中的“高级”按钮来绕过该安全提示。

security message

随后系统会提示您输入密码。

输入您的密码。这里不是输入密码的哈希值,而是您之前在 IPython 中输入以生成哈希值的明文密码。

恭喜,您已成功登录!

使用 Notebook

在浏览器中,从菜单中选择创建一个新的 Python notebook。

new notebook

呼——这并不轻松。但从现在开始会容易得多

为了让 notebook 正常工作,我们做了大量配置。好在大多只需进行一次。您现在可以在不使用时随时在 EC2 仪表板停止服务器,这样就不会继续计费。

launch instance

停止实例会保留您所有的配置,但实例会暂停运行,直到您再次启动。从某种程度上说,这就像按下了暂停键。如果选择 terminate(终止),则会丢失该实例的所有信息,下次需要重新配置。

既然您选择了 stop(停止),就可以在改日回到 EC2 仪表板点击 start(启动)。

start instance

点击启动后,恢复运行会相当容易。您的实例会获得一个新的 IP 地址。您需要通过 ssh 连接到这个新 IP 地址:

ssh ubuntu@34.208.26.73

在通过 ssh 连接到服务器的窗口中,输入

jupyter notebook

随后返回浏览器,您就可以立刻继续开始工作了。

尽管前期设置工作不少,但希望随着您不断练习并开展更令人兴奋的深度学习项目,这一环境能为您带来很大助益。

如果您希望进一步学习,请务必看看这些 DataCamp 课程:

主题