交互式使用
目录
交互式使用¶
Dask-jobqueue 最常用于使用 IPython 或 Jupyter notebook 等工具进行交互式处理。本页面提供有关如何在您的 HPC 系统上启动交互式 Jupyter notebook 服务器和 Dask dashboard 的说明。
我们建议首先从登录节点执行这些步骤(不会进行计算密集型操作),但在某些时候您可能需要切换到计算节点或交互节点。
注意:我们还推荐 JupyterHub 项目,该项目允许 HPC 管理员自动提供和控制本文档中描述的过程。如果您觉得这个过程有价值但很繁琐,那么您可以请求您的系统管理员使用 JupyterHub 提供支持。
安装 JupyterLab¶
我们推荐使用 JupyterLab 和 Dask JupyterLab 扩展。这将使您能够轻松通过 Jupyter 会话访问 Dask 的 dashboard。
可以通过以下步骤安装它们
# Install JupyterLab and NodeJS (which we'll need to integrate Dask into JLab)
conda install jupyterlab nodejs -c conda-forge -y
# Install server-side pieces of the Dask-JupyterLab extension
pip install dask_labextension
# Integrate Dask-Labextension with Jupyter (requires NodeJS)
jupyter labextension install dask-labextension
您也可以使用 pip
而不是 conda
,但您必须找到其他方式安装 NodeJS。

添加密码¶
出于安全考虑,我们建议您为 Jupyter notebook 配置添加密码。
jupyter notebook password
这既有利于安全,也意味着您不必复制 Jupyter token。
启动 Jupyter¶
当您在笔记本电脑上使用 Jupyter 时,通常只需输入 jupyter notebook
或 jupyter lab
。然而,在单独的机器上启动 notebook 服务器时情况有所不同。作为第一步,以下方法可行
jupyter lab --no-browser --ip="*" --port 8888
稍后,一旦我们设置好 SSH 隧道,您可能需要回来指定特定的 IP 地址或主机名以增强安全性。
SSH 隧道¶
如果您的个人机器与集群位于同一网络,则可以忽略此步骤。
如果您在不同的网络上(例如您的家庭网络),并且必须通过 SSH 连接,那么您的本地网络浏览器可能难以连接到在 HPC 机器上运行的 Jupyter 服务器。如果您的机构没有设置类似 JupyterHub 的东西,那么实现此目的的最简单方法是使用 SSH 隧道。
通常以下命令有效
ssh -L 8888:login-node-hostname:8888 username@hpc.agency.gov
其中 login-node-hostname
和 username@hpc.agency.gov
是您需要填写的占位符
login-node-hostname
是您在其上运行 Jupyter 服务器的节点的名称,在下方指定为hostname
。运行着您的 Jupyter 服务器,以下称为
主机名
。username@hostname$ jupyter lab --no-browser --ip="*" --port 8888
您也可以在该机器上运行
echo $HOSTNAME
来查看主机名。
hpc.agency.gov
是您通常用来通过 ssh 连接到集群的地址。
因此在一个真实的示例中,它可能看起来像这样
alice@login2.summit $ jupyter lab --no-browser --ip="login2" --port 8888
alice@laptop $ ssh -L 8888:login2:8888 alice@summit.olcf.ornl.gov
此外,如果端口 8888
已被占用,您可能希望选择不同的端口,例如 9999
。其他人可能正在使用此端口,特别是如果他们正在此机器上设置自己的 Jupyter 服务器。
您现在可以在本地浏览器上访问 http://localhost:8888
来访问 Jupyter 服务器。
查看 Dask Dashboard¶
当您启动一个 Dask Jobqueue 集群时,您也启动了一个 Dask dashboard。这个 dashboard 对于帮助您了解计算和集群的状态非常有价值。
通常,dashboard 通过与 Jupyter 不同的端口提供服务,因此无论您是否选择使用 Jupyter 都可以使用它。如果您想打开连接以查看 dashboard,可以通过上述的 SSH 隧道方式进行。dashboard 的默认端口是 8787
,并且可以通过在 Dask Jobqueue 集群对象中使用 scheduler_options
参数进行配置。例如,scheduler_options={'dashboard_address': ':12435'}
将使用 12435 作为网页 dashboard 端口。
然而,Jupyter 也能够通过 Jupyter 服务器代理 dashboard 连接,从而使您可以在 http://localhost:8888/proxy/8787/status
访问 dashboard。这无需额外的 SSH 隧道。此外,如果您将此地址放入 Dask Labextension 搜索栏(点击 Jupyter 会话左侧的 Dask logo 图标),那么您可以在 Jupyter Lab 中直接访问图表,而无需打开另一个标签页。
配置¶
最后,您可能需要更新在 notebook 中显示的 dashboard 链接,即从 Cluster 和 Client 对象中显示的链接。为此,请编辑 Dask 配置文件,可以是 ~/.config/dask/jobqueue.yaml
或 ~/.config/dask/distributed.yaml
,并添加以下内容
对于用户启动的 notebook
distributed: dashboard: link: "/proxy/{port}/status"
对于 JupyterHub 启动的 notebook
distributed: dashboard: link: "/user/{JUPYTERHUB_USER}/proxy/{port}/status"