跳到主要内容

Jupyter 工作空间

最新版本的 Gear 将使用「Jupyter 工作空间」(后面也会直接称为「工作空间」)替换原有的「JupyterLab」,「Jupyter 工作空间」是对原有的 JupyterLab 的改进:

  • 所启动的依然是一个 JupyterLab 为入口的交互式环境,其体验与原来的 JupyterLab 没有任何区别。
  • 提供了「重启」的流程,即不再像原来的 JupyterLab 一样,每次启动(继续执行)后会创建一个新的执行。避免了「继续执行」导致的存储规模翻倍的问题。也易于新手用户理解
  • 每次启动都会绑定自己之前的「输出」内容,不再允许启动时更换绑定;但启动时依然可以对「算力」、「运行时环境」(镜像)、只读数据绑定(input 绑定)等配置做调整。

基本界面#

在单次执行的页面点击「打开 Jupyter 工作空间」进入如下的界面:

其中右侧的侧边栏展示了当前执行的一些基本信息,包括系统指标、执行的基本信息(算力类型、运行环境、运行时间)以及设置界面。其中通过系统指标可以了解到当前执行是否在有效的利用系统所提供的计算资源。在执行打开后也会默认弹出 openbayes-intro.ipynb 文件包含了 OpenBayes Jupyter 工作空间的一些基本介绍。

Jupyter 工作空间的创建#

和之前创建 JupyterLab 的流程一样,只是在选择「接入方式」时,不再有原有的 JupyterLab 而是新的工作空间了:

note

在创建执行时的「数据绑定」阶段,工作空间依然可以做数据绑定,和「Python 脚本执行」以及之前的 JupyterLab 行为是一致的,文档见「数据绑定」

执行启动后,其界面与 JupyterLab 是一致的:

执行长时间训练#

机器学习尤其是深度学习的训练任务通常会需要比较长的运行时间,但是作为一个交互式的编程环境,JupyterLab 并不非常适合这种场景。在 JupyterLab 下运行长时间的任务会有如下两个问题:

  1. 长时间任务在运行时一旦网络出现波动会导致其运行的日志打印中断,导致无法查看到目前训练的进度
  2. 长时间任务在 Jupyter 工作空间中执行时即使任务执行完毕了或者由于某些原因报错了,Jupyter 工作空间不会立即关闭,但是计费还在继续导致计算资源的浪费

因此如果需要执行长时间的训练任务,建议查看 Task 与 Jupyter 工作空间结合部分采用 task 执行长时间任务。不过这里依然提供两个对应的解决方案:

使用 Log Console 找到丢失的日志#

这里通过一个简单的代码片段模拟一个长时间运行的任务:

import time
for i in range(100000):    print(i)    time.sleep(1)

将该段代码在一个 .ipynb 文件中执行看到如下的日志信息:

这个代码块会一直更新日志,但是如果我们刷新页面后再回来会发现日志不再更新了。这个时候在该代码块中右键点击「Show Log Console」打开当前的 Log Console 界面。

然后选择 Debug 级别的日志就可以看到之前的日志进度了:

Jupyter 的自动关闭#

由于 Jupyter 在开启之后就开始计费了,为了减少因为忘记关闭而带来的计算资源的浪费。OpenBayes 默认为容器里添加了 Jupyter 超时自动关闭的设置。

在 OpenBayes 中,Jupyter 没有任何页面操作并且 CPU 使用率一直为 0 被视为空闲。在「容器」的「设置」选项卡可以看到「JupyterLab 闲置自动关闭设置」。

Jupyter Kernel 内核的重启#

每次在 Jupyter 工作空间中打开一个 .ipynb 文件后系统会对应的创建一个名为 kernel 的后台负责执行在页面提交的代码。如果发现自己的 .ipynb 文件执行命令出现了问题,最简单的处理方法就是重启对用的 kernel

Jupyter 工作空间的重启#

在工作空间关闭之后可以再次启动。目前工作空间支持两种模式的启动:「快速启动」和「修改配置并启动」。

快速启动#

点击页面上的「启动」进行快速启动,默认保留上一次执行的「数据绑定」「算力」「运行时环境」(镜像),并自动绑定上一次运行时「输出」的数据。

修改配置并启动#

如果需要修改配置可以点击「启动」右侧的箭头:

之后可以按照流程修改算力、运行时环境(镜像)、数据绑定等信息。

Jupyter 工作空间的高速缓存机制#

  • 每位用户可创建的工作空间个数不受限制,但我们为每位用户提供的可缓存的工作空间的个数是有限的
  • 创建工作空间时,默认都会被高速缓存,被缓存的工作空间会在界面上额外显示一个闪电图标
  • 当达到当前用户可保存的高速缓存上限后,会将旧的被缓存的工作空间降级为普通工作空间。被缓存工作空间降级时,总是会优先删除上次关闭时间距离现在最远的那个(最早的一个)
  • 被缓存的工作空间在关闭后有最大的缓存时间,超过这个时间后,即使没有创建新的工作空间,也会被降级为普通的工作空间
  • 被缓存的工作空间在功能上与普通的工作空间没有任何区别,只是在启动速度上存在差异

是否还可以创建老版本的 JupyterLab?#

工作空间为全平台自动开启。在更新之后,用户就不再能够创建老版本的 JupyterLab 了,如果希望迁移到新的工作空间只需要在创建工作空间时绑定原有的输出即可。

为工作空间建立快照#

创建「快照」可以将当前工作空间的「输出」保存下来,作为一个固定的版本,以便在未来使用:

快照创建后依据「输出」规模大小需要一定的拷贝时间,工作空间「输出」越大,所需要拷贝的时间就越久。

快照会记录工作空间所使用的「算力类型」「数据绑定」「镜像类别」,通过「继续执行」可以从这个快照启动新的「工作空间」,默认沿用快照所记录的以上配置并将快照的「输出」拷贝到新的工作空间的 /output 目录下:

快照模式需要注意的几点:

  • 用户只有在工作空间处于「正在运行」和「已关闭」两种状态下可以创建快照
  • 快照所占用的空间即为标准的存储空间费用,无额外的其他费用,将不再使用的快照删除将释放相应的存储空间
  • 创建快照时尽量避免对运行中的工作空间执行文件写入 / 修改操作,以防生成的快照与期望内容不一致
最后由 Tunghsiao Liu 更新