在从事数据分析/处理过程中,Jupyter Lab 是一个常见且便捷的工具,它属于 Jupyter Notebook 的升级版本。
除了可以在本机搭建 Jupyter 环境,它还支持通过网络远程访问,从而实现在本地编写查看代码,在远程服务器上运行代码的功能。
需求背景
我日常使用的是一台 M1 版本的 MacBook Air,它足够轻薄,续航优秀,我平常一般都会随身携带。
但有时需要跑一些耗时长的任务,或者需要在其他电脑上也能便捷访问相关资料,配置一台支持远程操作的设备会更为便利。
我个人闲置了一台2016款 15 寸 MacBook Pro,16+256的配置,它的性能可能较低。
但相比于租一台 16G 内存的服务器,一年超过两千元的费用,使用个人闲置电脑搭建远程 Jupyter Lab 服务是一个极为经济实惠的选项。
操作步骤
在本地电脑上安装 Miniconda 及配置相应的环境这属于基本操作。
除此之外,要实现远程访问 Jupyter Lab,还需要处理如下问题:
-
解决内网穿透问题
要实现远程网络访问,一般需要向宽带运营商申请公网IP。如果没有这个条件,也可以使用内网穿透服务作为替代。
花生壳账号的免费套餐服务已经基本上足以支撑我的需求,官网也有较为详细的教程可供参考。
更新:
花生壳服务我使用过一段时间,但不知道是家庭网络问题还是系统适配问题,运行几天后花生壳就会掉线,提工单也没有解决问题。
曲线救国的方式是设置定时任务,每天凌晨自动重启花生壳服务……
后来了解到 cpolar 也可以提供内网穿透服务,我不清楚技术原理与实现方案,但换成 cpolar 可以提供 7*24 小时稳定的穿透服务。 -
在 Jupyter Lab 中配置多个环境
大家使用 Conda 的一个重要原因就是它可以支持配置不同版本的环境,以满足不同需求下对开发环境的差异要求。
相较于在命令行中先激活相应环境再打开 Jupyter Lab,直接在 base 环境下开启服务,然后在 Jupyter Lab 中根据不同需求切换环境是个更为便利的选择。
这里需要:
- 创建名为 yourEnv 的新环境
conda create --name yourEnv python=3.9
- 将新环境添加到 kernel 里,以供在 Jupyter Lab 中便捷切换
conda activate yourEnv // 激活环境
conda install ipykernel // 安装 ipykernel
python -m ipykernel install --user --name yourEnv --display-name yourEnv // 把环境添加到 kernel
这一步骤有很多资料可供参考,在此不做赘述。配置好这一步骤后,在 Jupyter Lab 中即可随意切换 Kernel,如下图:
设置后台静默运行
常见的操作是在命令行中打开 Jupyter Lab 服务,直接在本地浏览器打开 8080 端口进行访问。
如果把 Terminal 页面关闭,对应的服务也将终止。
但既然是配置在一台远程 7*24 运行的设备上,我们更希望 Jupyter Lab 服务可以随时访问,并且支持多设备访问云端保存的最新结果。
这种情况下,我们可以选择把 Lab 由前台命令行运行转为后台静默运行的方式。
在 Mac 平台下,使得 Jupyter Lab 后台静默运行,输入如下命令即可:
nohup jupyter lab --allow-root &