jupyternotebook撤销上一步_如何在远程服务器上运行Jupyter Notebooks?

编译 | sunlei

发布 | ATYUN订阅号

ccae96db1821913a203d7e10bb266305.png

Jupyter Notebook是许多数据科学家工具箱中的一个主要工具。作为一个工具,Jupyter Notebook可以通过交互方式简化数据分析、模型建模和实验,从而缩短从编码到查看结果的反馈循环,从而提高工作效率。

在很多情况下,在笔记本电脑或工作站上运行一个Jupyter Notebook就足够了。然而,如果您正在处理大型数据集、执行计算开销较大的数据处理或学习复杂模型,您可能需要比笔记本电脑更强大的额外功能。也许你在大型图形上运行图形卷积网络,或者在大型文本语料库上使用递归神经网络进行机器翻译,需要更多的CPU内核、RAM或几个GPU。幸运的是,您可能在远程服务器上有这些资源可用!

如果您的远程服务器具有图形用户界面(GUI),那么您就很幸运了。您可以使用远程桌面软件来访问远程服务器,或者像您的笔记本电脑一样使用Jupyter Notebook。

但是,许多服务器没有GUI。如果处于这种情况,可以通过在笔记本电脑上编写一个python脚本来设置实验,在数据的一小部分上运行它来验证它是否可以运行,将它复制到远程服务器,然后从命令行执行它。您甚至可以在笔记本中设置实验,并使用jupyter nbconvert将笔记本导出到脚本中——以编写您的“notebook.ipynb”脚本。尽管此工作流确实允许您在远程服务器上运行代码,但您不能再使用Jupyter Notebook来进行试验,例如,以交互方式显示结果。真可惜!

在本文中,我将向您展示如何在远程服务器上运行Jupyter Notebook,以及如何在您的笔记本上访问它。我还将演示如何设置两个bash命令以简化整个过程。

启动远程记事本服务器

我们将使用安全Shell协议(SSH)在远程服务器上启动Jupyter Notebook服务器。SSH允许我们向远程服务器发送命令。基本语法如下:

1ssh username:password@remote_server_ip command

您应该发送的确切命令在一定程度上取决于您的上下文。在我的例子中,我与其他没有在共享环境中安装Jupyter的人共享一个远程服务器。因此,我的第一步是转到我的项目文件夹,激活虚拟环境,并启动notebook服务器。我特别想在远程服务器上执行以下三条命令:

1cd project_folder
2. virtual_environment/bin/activate
3jupyter notebook --no-browser --port=8889

我使用—no-browser标志执行jupyter notebook命令,启动一个浏览器来启动jupyter notebook,因为如果远程服务器没有GUI,则无法显示浏览器。我还使用—port=8889标志将端口从默认端口8888更改为端口8889。这是个人偏好;将本地和远程笔记本放在不同的端口上,以便更容易地查看代码运行的位置。

要在远程服务器上执行命令,我们运行组合命令。

1nohup ssh -f username:password@remote_server_ip "cd project_folder; . virtual_environment/bin/activate; jupyter notebook --no-browser --port=8889"

注意,我用一行代码将这三个命令分隔开来;而不是换行。执行此命令将启动端口8889上的Jupyter Notebook服务器,并让它在后台运行。最后,我在ssh命令中添加了-f标志,以将进程推送到后台,并在前面加上nohup命令,使进程的所有输出保持静默,以便您可以继续使用终端窗口。您可以在这里阅读有关thenohup命令的更多信息。

访问笔记本

现在,您可以访问在URL中键入的笔记本

1remote_server_ip:8889

此命令要求您记住IP地址或为网页加书签。但是,我们可以使用端口转发使远程笔记本像本地笔记本一样容易访问:

1nohup ssh -N -f -L localhost:8889:localhost:8889 username:password@remote_server_ip

-N标志告诉ssh不会执行任何远程命令。此时,我们不需要执行任何远程命令。如前所述,-f标志将ssh进程推到后台。最后,-L标志使用语法local_server:local_port:remote_server:remote_port指定端口转发配置。该配置指定所有发送到本地计算机上的端口8889(例如,您的笔记本电脑)的请求都要发送到远程计算机上的端口8889(用户名:password@remote_server_ip)。与前面一样,nohup命令的前缀是使输出静默。

上述命令的效果是,您现在可以访问浏览器中的远程木星笔记本服务器

1localhost:8889

就像你在本地运行笔记本一样。

停止远程笔记本服务器

原则上,您可以让notebook服务器无限期地运行在远程服务器上(除非重启或崩溃),但是您可能需要停止服务器,例如升级您的jupyter版本。如果您需要停止它,有两种方法:通过浏览器或通过命令行。

通过浏览器窗口

在Jupyter Notebook的最新版本中,您可以在浏览器窗口右上角找到一个退出按钮,如下图中箭头所示。如果Jupyter Notebook您按下它,您将必须使用我们之前看到的启动命令重新启动服务器。

bd55588c8cbf1d5e4d578172f9ea16fe.png

退出按钮

通过命令行

如果无法升级到具有退出按钮的新版本Jupyter,或者只是更喜欢通过终端工作,也可以从命令行停止服务器。Jupyter有一个shell命令停止笔记本:

1jupyter notebook stop 8889

其中8889是端口号。您可以使用命令在远程服务器上执行它

1ssh username:password@remote_server_ip "jupyter notebook stop 8889"

不幸的是,这个命令目前存在bug,但是我将它包含在这里,希望它将来能够工作。但是,作为一种解决方法,您可以使用以下命令来终止jupyter进程:

1ssh username:password@remote_server_ip "pkill -u username jupyter"

其中-u用户名表示只有由用户名启动的Jupyter进程应该被终止。这样做的缺点是,如果一次运行多个笔记本服务器,您将关闭所有的笔记本服务器。最后,您当然可以通过登录到远程服务器、启动notebook服务器并保持终端窗口打开来手动管理服务器。这允许您使用常用的CTRL+C键盘命令关闭笔记本服务器。

梳理你的工作流程

记住所有这些命令可能非常麻烦。幸运的是,我们可以通过为每个命令创建bash别名来简化工作。在~/.bashrc文件中添加以下行:

1alias port_forward='nohup ssh -N -f -L localhost:8889:localhost:8889 username:password@remote_server_ip'
2alias remote_notebook_start='nohup ssh -f username:password@remote_server_ip "cd rne; . virtual_environment/bin/activate; jupyter notebook --no-browser --port=8889"; port_forward'
3alias remote_notebook_stop='ssh username:password@remote_server_ip "pkill -u username jupyter"'

通过在终端中键入source.bashrc来加载命令。现在,您可以使用终端中的“远程笔记本启动”和“远程笔记本停止”命令分别启动远程笔记本服务器(和设置端口转发)并将其关闭。

总结

在这篇文章中,我向您展示了如何使用bash命令在远程服务器上启动、访问和停止Jupyter Notebook,并展示了如何创建bash别名来简化操作。

我希望这些命令可以提高您的数据科学生产力,几乎无缝地允许您从Jupyter Notebook和远程服务器上可用的任何计算资源中获益。

80e3c10701ccaf7b693249db5f13d8c8.gif

End

1d16f02fdbe9b83c3fee75b9d839814a.png

推荐阅读

Recommended reading

d929b4876b7760bddacd772a01d64847.png

| 对抗鲁棒分类器神经网络画风迁移

| 2019百度AI开发者大会:百度大脑AI能力全面升级,鸿鹄芯片、数字人来袭

| 11家公司联合发布白皮书,提出自动驾驶汽车指导原则

43b3ebb55499f8d72cd4e5e0e9e580ec.gif

专治BUG据说在看的没有BUG
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值