人工智能python实现-在EC2 GPU实例上运行Jupyter笔记本

B.1 什么是Jupyter笔记本,为什么要在AWS GPU上运行Jupyter笔记本
B.2 为什么你不想在AWS上使用Jupyter进行深度学习
B.3 设置AWS GPU实例
B.4 安装Keras
B.5 设置本地端口转发
B.6 在本地浏览器中使用Jupyter

附录 B 在 EC2 GPU实例上运行Jupyter笔记本

本附录是一个分步指南,教你如何在 AWS  GPU实例上运行深度学习  Jupyter笔记本,并在浏览器中编辑这些笔记本。如果你的本地计算机上没有  GPU,那么这种设置非常适合深度学习研究。本指南的原始版本(以及最新版本)位于 https://blog.keras.io。

B.1 什么是 Jupyter笔记本,为什么要在  AWS GPU上运行  Jupyter笔记本

Jupyter笔记本(Jupyter    notebook)是一款  Web应用,让你可以交互式地编写和注释Python代码。这种方法非常适合做实验、做研究以及分享你目前的工作。

许多深度学习应用都是计算密集型的,在笔记本电脑的    CPU内核上运行可能需要数小时甚至数天的时间。在  GPU上运行可以让训练和推断的速度提高很多倍(从现代   CPU转到单个现代 GPU,通常可以提速 5~10倍)。但你的本地计算机上可能没有  GPU。在 AWS上运行  Jupyter笔记本的体验与在本地计算机上运行完全相同,前者可以让你在  AWS上使用一个或多个  GPU。你只需根据使用时长付费,如果你只是偶尔使用深度学习,那么这种方法比购买自己的  GPU更划算。

B.2 为什么你不想在 AWS上使用  Jupyter进行深度学习

AWS GPU实例的费用可能很快会变得很高。我们建议使用的实例价格是  0.90美元   /小时。如果偶尔使用的话这个价格很合适,但如果你每天都要花几个小时运行实验,那么最好用TITAN X或  GTX 1080 Ti搭建你自己的深度学习计算机。

总之,如果你没有本地  GPU,或者不想安装 Keras依赖(特别是  GPU驱动程序),那么就可以在 EC2上使用   Jupyter。如果你有本地 GPU,我们推荐在本地计算机上运行模型。这种情况请参阅附录 A中的安装指南。

注意你需要一个有效的 AWS账号。熟悉  AWS EC2会对你有所帮助,但并不是必需的。

B.3 设置 AWS GPU实例

以下设置过程需要 5~10分钟的时间。

(1)打开   EC2控制面板(  https://console.aws.amazon.com/ec2/v2),点击 Launch Instance(创建实例)链接(见图 B-1)。

图 B-1 EC2控制面板

(2)选择  AWS Marketplace(AWS市场,见图  B-2),并在搜索框中搜索“deep learning”(深度学习)。向下翻页寻找名为   Deep Learning AMI Ubuntu  Version的  Amazon系统映像(AMI,见图 B-3),选择它。

(3)选择   p2.xlarge实例(见图  B-4)。这种实例类型允许访问单个 GPU,每小时的使用费用为 0.90美元(2017年   3月的价格)。

图 B-4 p2.xlarge实例

(4)你可以在  Configure  Instance(配置实例)、Add Storage(添加存储)、Add  Tags(添加标签)这几步均保留默认配置,但在 Configure  Security Group(配置安全组)这一步需要自定义配置。创建一个自定义的 TCP规则来允许  8888端口(见图  B-5),这个规则可以只允许你当前的公共 IP访问(比如你笔记本电脑的  IP),如果这种方法不可行,也可以允许任何 IP访问(比如   0.0.0.0/0)。请注意,如果你允许任何 IP访问  8888端口,那么任何人都可以监听你的实例上的那个端口(也就是你运行    IPython笔记本的位置)。你需要为笔记本添加密码保护,防止随便某个陌生人修改数据,但这可能也是相当弱的保护。如果可能的话,你应该考虑限制只允许特定 IP访问。但如果你的 IP地址会不断变化,那么这种做法不切实际。如果你打算允许任何  IP访问,那么记住不要在实例上保留任何敏感数据。

图 B-5 配置一个新的安全组

注意在创建实例过程的最后,系统会询问你想要创建新的连接密钥还是重复使用现有密钥。如果你之前从未用过 EC2,那么就创建新密钥并下载。

(5)想要连接到实例,需要在   EC2控制面板上选择它,点击  Connect(连接)按钮,并按照指示操作(见图 B-6)。注意,启动实例可能要花几分钟的时间。如果一开始无法连接,请稍等一会儿再尝试。

图 B-6 连接指示

(6)通过   SSH登录到实例上之后,你可以在实例的根目录下创建一个  ssl目录,然后 cd打开它(并非强制这么做,但这么做更清楚)。

$ mkdir ssl
$ cd ssl

(7)使用  OpenSSL创建一个新的  SSL证书,并在当前ssl目录下创建cert.key和cert.pem文件。

$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out
"cert.pem" -batch

配置  Jupyter

使用 Jupyter之前,需要修改其默认配置。具体步骤如下。

(1)生成一个新的  Jupyter配置文件(仍然在远程实例上)。

$ jupyter notebook --generate-config

(2)(可选)可以为笔记本生成  Jupyter密码。你的实例配置可能允许任何   IP访问(取决于你在配置安全组时的选择),所以最好通过密码来限制对 Jupyter的访问。生成密码的方法是,打开一个 IPython shell(ipython命令),并运行下列代码。

from IP ython.lib import passwd
passwd()
exit

(3) passwd()命令会要求你输入并确认密码。完成之后,它会显示密码的散列值。复制这个散列值,你很快会用到它。散列值看起来像是这样的。

sha1:b592a9cf2ec6:b99edb2fd3d0727e336185a0b0eab561aa533a43

注意,这是单词 password的散列值,不应该用这个单词作为密码。

(4)使用  vi(或你最喜欢的文本编辑器)编辑 Jupyter配置文件。

$ vi ~/.jupyter/jupyter_notebook_config.py

(5)配置文件是一个   Python文件,所有内容都被注释掉了。将下列   Python代码插入到文件开头。

注意如果你不习惯用 vi,那么要记住,需要按i才能开始插入内容。完成之后,按     Esc并输入:wq,再按  Enter,就可以退出 vi并保存修改[:wq表示   write-quit(写入并退出)]。

B.4 安装  Keras

很快就可以开始使用  Jupyter了,但首先需要更新   Keras。AMI上预装了   Keras,但未必是最新版本。在远程实例上运行这个命令:

$ sudo pip install keras --upgrade

你可能用的是 Python  3(本书提供的笔记本用的都是  Python 3),所以还应该使用pip3更新 Keras。

$ sudo pip3 install keras --upgrade

如果实例上已经有了一个  Keras配置文件(应该是没有,但在我写完本节之后,  AMI可能发生变化),为了以防万一,应该删除它。Keras将在第一次启动时重新创建一个标准的配置文件。

如果下列代码片段返回一个错误,提示你文件并不存在,那么忽略它即可。

$ rm -f ~/.keras/keras.json

B.5 设置本地端口转发

在本地计算机(不是远程实例)的   shell中,将本地  443端口(HTTPS端口)转发到远程实例的 8888端口。

$ sudo ssh -i awsKeys.pem -L local_port:local_machine:remote_port remote_machine

对我而言,这个命令如下所示。

$ sudo ssh -i awsKeys.pem -L 443:127.0.0.1:8888 ubuntu@ec2-54-147-126-214.
compute-1.amazonaws.com

B.6 在本地浏览器中使用  Jupyter

在远程实例上,将包含与本书相关的 Jupyter笔记本的  GitHub仓库克隆下来。

$ git clone https://github.com/fchollet/deep-learning-with-python-notebooks.git
$ cd deep-learning-with-python-notebooks

运行下列命令来启动 Jupyter笔记本,此时仍然在远程实例上。

$ jupyter notebook

然后,在本地浏览器中,打开你转发到远程笔记本进程的本地地址(  https://127.0.0.1)。一定要在地址中使用 HTTPS,否则会提示 SSL错误。

你应该会看到如图 B-7所示的安全警告。出现这个警告是因为你生成的   SSL证书没有经过可信任权威机构的验证(很显然,这个证书是你自己生成的)。点击 Advanced,然后继续。

图 B-7 安全警告,可以忽略

系统应该会提示你输入 Jupyter密码,然后你就可以进入  Jupyter仪表板了(见图  B-8)。

图 B-8 Jupyter仪表板

选择 New >  Notebook开始创建一个新笔记本(见图   B-9)。你还可以选择 Python版本。一切搞定!

图 B-9 创建一个新笔记本

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

电子邮件地址不会被公开。