如何在AWS GPU上运行Jupyter noterbook?

开发 开发工具
本文将指导你逐步在 AWS GPU 实例上运行深度学习 Jupyter notebook,并可在你的浏览器中从任何地方对其编辑。

本文将指导你逐步在 AWS GPU 实例上运行深度学习 Jupyter notebook,并可在你的浏览器中从任何地方对其编辑。如果你的本地机器上没有 GPU,这将会是一个研究深度学习的理想设置。

一、什么是 Jupyter noterbook?为什么要在 AWS GPU 上运行 Jupyter notebook?

Jupyter notebook 是一个网页应用程序,允许你以交互的方式编写并注释 Python 代码。这是一种做试验,做研究,并分享工作内容的有效方法。了解什么是 notebook 请点击这里(链接:http://suo.im/4Em4IR)。

许多深度学习应用的计算非常密集,且在笔记本的 CPU 内核上运行通常需要耗费几个小时甚至是几天。如果把一个现代的 CPU 换成 GPU,训练和推理的速度可提升 5 到 10 倍。但是,你可能无法在本地计算机上安装 GPU。在 AWS 运行 Jupyter notebook 可以给你在本地计算机上运行时的相同体验,同时允许你利用 AWS 上的一个或多个 GPU。如果你只是偶尔使用深度学习,相比投资专有的 GPU,Jupyter notebook 更为有利,你只需支付所用的东西。

二、为什么我不想在 AWS 上使用 Jupyter 进行深度学习?

AWS GPU 实例的价格可以迅速变贵。我们建议的使用价格是每小时 0.9 美元。这个价格偶尔使用还可以接受,但是如果你每天都要进行几个小时的实验,那么你***搭建配备 Titan X 或者 GTX 1080 Ti 的专属深度学习机。

1. 开始之前注意:

  • 你需要一个激活的 AWS 账户
  • 如果你对 AWS EC2 有所了解会有帮助,但并不必须

搭建需要花费 5 到 10 分钟的时间。

2. 分步指南

(1) 导航至 EC2 控制面板,并点击「启动实例」链接。

导航至 EC2 控制面板

(2) 选择官方 AWS 深度学习 Ubuntu AMI

选择「AWS 市场」并在搜索框中搜索「深度学习」。

选择官方 AWS 深度学习 Ubuntu AMI

向下滚动,直到找到名为「深度学习 AMI Ubuntu 版本」的 AMI(如下图),并选择它。

「深度学习 AMI Ubuntu 版本」的 AMI

(3) 选择 p2.xlarge 实例

该实例类型提供对单个 GPU 的访问,并且每小时的使用成本为 0.9 美元(截至 2017 年 3 月)。点击「配置实例细节」:

选择 p2.xlarge 实例

(4) 配置实例细节

你可以为「配置实例」、「添加存储」和 「添加标签」等步骤保留默认设置。但是我们将自定义步骤「配置安全组」。

创建一个自定义 TCP 规则以允许 8888 端口。

在你当前的公共 IP(例如你的笔记本电脑的 IP),或者在前者不可能的情况下,对于任意 IP,该规则都被允许。请注意,如果你允许任意 IP 均可接入端口 8888,则理论上任何人都可以收听你的实例上的那个端口(这是我们将运行 IPython notebook 的地方)。我们将为笔记本电脑添加密码保护,以便降低任意人员都可以对其进行修改的风险,但这也许是较弱的保护。如果可能的话,你应该考虑限制特定 IP 的访问。但是,如果你的 IP 地址不断更改,这不太实际。如果你打算对任意 IP 开放接入端,请记住不要在实例上留下任何敏感数据。

创建一个自定义 TCP 规则以允许 8888 端口

在启动过程结束时,系统将会询问你是否要创建新的连接密钥,或者是否重复使用现有的密钥。如果你之前从未使用过 EC2, 只需创建新的密钥并下载即可。

(5) 启动你的实例并连接到它

为了连接实例,在 EC2 控制面板上选择并点击「连接」按钮,遵循提供的说明,例如:

注意,实例完全启动之前可能需要几分钟。如果开始时不能连接,请等待并重试。

(6) 设置 SSL 证书

通过 ssh 登录实例后,在实例的根目录下创建一个 ssl 目录,然后对其进行 cd(并非必要,但更干净)。

  1. mkdir ssl 
  2. cd ssl 

使用 OPenSSL 创建新的 SSL 证书:

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

完成后,你已在当前的 sll 目录中创建了两个文件:cert.key 和 cert.pem.

(7) 配置 Jupyter

在我们开始使用 Jupyte 之前,我们需要调整其默认配置。首先,我需要生成一个新的 Jupyter 配置文件(仍然在远程实例上):

  1. jupyter notebook --generate-config 

或者,你可以为自己的 notebook 生成 Jupyter 密码。由于你的实例配置可能为从任何 Ip 访问(取决于你在配置安全组时所做的选择),***通过密码限制对 Jupyter 的访问。要生成密码,请打开 IPython shell(ipython 命令)并运行:

  1. from IPython.lib import  
  2. passwdpasswd() 
  3. exit 

passwd() 命令将要求你输入并验证密码,完成后将显示密码哈希(hash)。复制哈希,我们稍后会用到。它看起来像:「sha1:b592a9cf2ec6:b99edb2fd3d0727e336185a0b0eab561aa533a43」(这是「密码」哈希,并非是你应该使用的密码)。

接下来,使用 Vi(或者用你最喜欢的可用文本编辑器)编辑配置文件:

  1. vi ~/.jupyter/jupyter_notebook_config.py 

这是一个 Python 文件,其中所有的行都被注释掉。

你需要插入以下 Python 代码行(比如,在文件的开头)

  1. c = get_config()  # get the config object 
  2. c.NotebookApp.certfile = u'/home/ubuntu/ssl/cert.pem' # path to the certificate we generated 
  3. c.NotebookApp.keyfile = u'/home/ubuntu/ssl/cert.key' # path to the certificate key we generated 
  4. c.IPKernelApp.pylab = 'inline'  # in-line figure when using Matplotlib 
  5. c.NotebookApp.ip = '*'  # serve the notebooks locally 
  6. c.NotebookApp.open_browser = False  # do not open a browser window by default when using notebooks 
  7. c.NotebookApp.password = 'sha1:b592a9cf2ec6:b99edb2fd3d0727e336185a0b0eab561aa533a43'  # this is the password hash that we generated earlier. 

如果,你以前没有使用过 Vi,请记住,你需要按 i 开始插入内容;完成后,你可以点击 esc 然后是 :wq 最终 enter 退出 Vi,同时保存更改(:wq 代表写入-退出)

(8)  更新 Keras

你马上可以开始使用 Jupyte 了。但首先,通过运行(仍然在远程实例上)以确保 Keras 是***的:

  1. sudo pip install keras --upgrade --no-deps 

你所使用的 AMI 由亚马逊负责日常更新,但其可能没有使用每个包的***版本。

(9) 设置本地端口转发

在本地机器上的一个 Shell(不是远程实例中)中,开始将你的本地端口 443(HTTPS 端口)转发到远程实例的端口 8888。这是通过句法(syntax)完成的:

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

在我们的例子中为:

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

(10) 从你的本地浏览器中开始使用 Jupyter

首先,在远程实例中,创建保存你的 notebook 的文件夹:

  1. mkdir notebooks 
  2. cd notebooks 

在远程实例上,通过在你创建的文件夹中运行此命令来启动 Jupyter Notebook:

  1. ipython notebook 

然后,在本地浏览器中,导航至我们发送到远程 notebook 进程的本地地址 https://127.0.0.1。确保你在地址中使用 HTTPS,否则你将收到 SSL 错误。

你将看到一个安全警告:

该警告只是因为我们生成的 SSL 证书没有被任何受权威机构验证

该警告只是因为我们生成的 SSL 证书没有被任何受权威机构验证(显然,我们刚刚生成了我们自己的证书)。点击「advanced」,继续浏览,这很安全。

然后系统会提示你输入 Jupyter 密码。然后,你会进入 Jupyter 控制面板。

Jupyter 控制面板

点击「新建 - >Notebook」开始。你可以使用你选择的 Python 版本。

好了!

原文:

https://blog.keras.io/running-jupyter-notebooks-on-gpu-on-aws-a-starter-guide.html

【本文是51CTO专栏机构机器之心的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2023-02-10 21:12:41

GPUmacOSStable

2019-08-07 18:52:40

GPU数据科学CPU

2022-11-18 12:47:51

LinuxAWS命令行工具

2017-02-16 10:15:43

Windows7docker变量

2021-02-25 08:00:00

WindowsWindows 10开发

2021-08-09 09:00:00

Kubernetes云计算架构

2022-09-13 08:40:24

AndroidLinux

2017-09-18 10:05:15

WindowsLinux容器

2015-03-06 11:29:53

图数据库Titan图数据库NoSQL数据库

2019-05-09 09:00:00

WindowsKafka

2023-07-28 09:59:31

2014-10-11 11:30:43

CentOSDocker

2016-08-02 10:34:17

LinuxWindows双启动

2014-03-31 09:45:33

Ubuntu LinuUbuntu 13.1

2009-04-16 09:59:16

Google App PHPJava

2021-05-09 21:35:25

Java机器代码

2017-03-21 11:12:22

LinuxAmazon AWS服务器

2019-12-11 14:27:39

数据库集群Kubernetes

2013-11-18 09:58:25

亚马逊AWSAmazon Web

2018-07-30 09:42:09

AndroidWineWindows App
点赞
收藏

51CTO技术栈公众号