当前位置: 首页 > 科技观察

如何在AWSGPU上运行Jupyternotebook?

时间:2023-03-19 18:50:27 科技观察

本文将指导您逐步在AWSGPU实例上运行深度学习Jupyternotebook,并在浏览器的任何位置对其进行编辑。如果您的本地机器上没有GPU,这是研究深度学习的理想设置。1.什么是Jupyter笔记本?为什么要在AWSGPU上运行Jupyternotebook?JupyterNotebook是一个Web应用程序,可让您以交互方式编写和注释Python代码。这是试验、研究和分享工作的好方法。想知道笔记本是什么,请点击这里(链接:http://suo.im/4Em4IR)。许多深度学习应用程序的计算量非常大,通常需要数小时甚至数天才能在笔记本电脑的CPU内核上运行。如果将现代CPU换成GPU,训练和推理速度可以提高5到10倍。但是,您可能无法在本地计算机上安装GPU。在AWS上运行Jupyter笔记本可为您提供与在本地计算机上运行它们相同的体验,同时允许您利用AWS上的一个或多个GPU。如果您只是偶尔使用深度学习,Jupyter笔记本比投资专有GPU更有利,而且您只需为使用的部分付费。2.为什么我不想在AWS上使用Jupyter进行深度学习?AWSGPU实例很快就会变得昂贵。我们建议的使用价格是每小时0.9美元。这个价格对于偶尔使用来说是可以接受的,但如果你打算每天试验几个小时,那么你最好构建一个配备TitanX或GTX1080Ti的专用深度学习机器。1.开始前请注意:您需要一个有效的AWS账户如果您对AWSEC2有一定的了解,这会有所帮助,但设置起来不需要5-10分钟。2.分步指南(1)导航至EC2仪表板并单击“启动实例”链接。(2)选择官方的AWSDeepLearningUbuntuAMI选择“AWSMarketplace”,在搜索框中搜索“DeepLearning”。向下滚动,直到找到名为“DeepLearningAMIUbuntuEdition”的AMI(如下图所示),然后选择它。(3)选择一个p2.xlarge实例,它提供对单个GPU的访问,每小时使用费用为0.9美元(截至2017年3月)。点击“ConfigureInstanceDetails”:(4)ConfigureInstanceDetails“ConfigureInstance”、“AddStorage”、“AddLabel”等步骤可以保持默认设置。但是我们会自定义“配置安全组”这一步。创建自定义TCP规则以允许端口8888。此规则在您当前的公共IP(例如笔记本电脑的IP)上是允许的,或者在前者不可能的情况下,可用于任意IP。请注意,如果您允许端口8888可从任何IP访问,理论上任何人都可以在您的实例(这是我们将运行IPython笔记本的地方)上监听该端口。我们将为笔记本电脑添加密码保护,以降低任何人都可以修改它的风险,但这可能是一种薄弱的保护。如果可能,您应该考虑限制对特定IP的访问。但是,如果您的IP地址不断变化,这就不太实用了。如果您打算开放对任何IP的访问,请记住不要在实例上留下任何敏感数据。在启动过程结束时,系统会询问您是要创建新的连接密钥,还是要重新使用现有的连接密钥。如果您以前从未使用过EC2,只需创建一个新密钥并下载即可。(5)启动您的实例并连接到它要连接到实例,请选择并单击EC2控制面板上的“连接”按钮,按照提供的说明进行操作,例如:请注意,实例完全连接之前可能需要几分钟推出。如果一开始连接不上,请稍候再试。(6)设置SSL证书通过ssh登录实例后,在实例的根目录下创建一个ssl目录,然后cd到它(不是必须的,但是更干净)。mkdirsslcdssl使用OPenSSL创建新的SSL证书:sudoopensslreq-x509-nodes-days365-newkeyrsa:1024-keyout"cert.key"-out"cert.pem"-batch完成,你在当前sll目录下创建了两个文件:cert.key和cert.pem。(7)配置Jupyter在我们开始使用Jupyte之前,我们需要调整它的默认配置。首先,我需要生成一个新的Jupyter配置文件(仍在远程实例上):jupyternotebook--generate-config或者,您可以为自己的笔记本生成一个Jupyter密码。由于您的实例配置可以从任何IP访问(取决于您在配置安全组时所做的选择),***通过密码限制对Jupyter的访问。要生成密码,请打开IPythonshell(ipython命令)并运行:fromIPython.libimportpasswdpasswd()exitpasswd()该命令将要求您输入并验证密码,完成后将显示密码哈希。复制哈希,我们稍后需要它。它看起来像:“sha1:b592a9cf2ec6:b99edb2fd3d0727e336185a0b0eab561aa533a43”(这是“密码”散列,而不是您应该使用的密码)。接下来,使用Vi(或使用您最喜欢的可用文本编辑器)编辑配置文件:vi~/.jupyter/jupyter_notebook_config.py这是一个Python文件,所有行都被注释掉了。您需要插入以下Python代码行(例如,在文件的开头)c=get_config()#gettheconfigobjectc.NotebookApp.certfile=u'/home/ubuntu/ssl/cert.pem'#pathtothecertificatewegeneratedc.NotebookApp。keyfile=u'/home/ubuntu/ssl/cert.key'#pathtothecertificatekeywegeneratedc.IPKernelApp.pylab='inline'#in-linefigurewhenusingMatplotlibc.NotebookApp.ip='*'#servethenotebookslocallyc.NotebookApp.open_browser=False#donotopenabrowserwindowbydefaultwhenusingnotebooksc.NotebookApp.password='b592a9cf2ec6:b99edb2fd3d0727e336185a0b0eab561aa533a43'#thisisthepasswordhashthatwegeneratedearlier.如果您以前没有使用过Vi,请记住您需要按i才能开始插入内容;完成后,您可以按esc,然后按:wq,最后按enter退出Vi,同时保存更改(:wq代表写入退出)(8)更新Keras,您可以立即开始使用Jupyte。但首先,通过运行(仍在远程实例上)确保Keras是最新的:sudopipinstallkeras--upgrade--no-deps您使用的AMI每天由Amazon更新,但它可能不会使用每个包的***版本。(9)设置本地端口转发在本地机器(不是远程实例)的shell中,开始将本地端口443(HTTPS端口)转发到远程实例的端口8888。这是通过语法完成的:sudossh-iawsKeys.pem-Llocal_port:local_machine:remote_portremote_machine在我们的例子中:sudossh-iawsKeys.pem-L443:127.0.0.1:8888ubuntu@ec2-54-147-126-214.compute-1。amazonaws.com(10)从您的本地浏览器开始使用Jupyter。首先,在远程实例上,创建将保存笔记本的文件夹:mkdirnotebookscdnotebooks在远程实例上,传入您创建的文件通过在文件夹中运行以下命令启动JupyterNotebook:ipythonnotebook然后,在本地浏览器中,导航到我们发送到远程笔记本进程的本地地址https://127.0.0.1。确保在地址中使用HTTPS,否则会出现SSL错误。你会看到一个安全警告:这个警告只是因为我们生成的SSL证书没有经过任何授权机构的验证(显然,我们只是生成了自己的证书)。点击“高级”继续浏览,很安全。然后系统会提示您输入Jupyter密码。然后,您将进入Jupyter控制面板。点击“新建->笔记本”开始。您可以使用您选择的Python版本。好吧!原文:https://blog.keras.io/running-jupyter-notebooks-on-gpu-on-aws-a-starter-guide.html【本文为专栏机器心原创翻译,微信公众号《机器之心(id:almosthuman2014)》]点此查看本作者更多好文