在服务器或超算集群上使用jupyter notebook

在普通服务器上

一般如果不需要集群的话,可以参考anaconda的说明
简单来讲,在服务器的本地终端上,可以先启动一个环境(如r41),或者在base下有安装也是可以的。再运行jupyter notebook

conda activate r41
jupyter notebook --no-browser --port=

port可以自己指定,例如使用8888,则

jupyter notebook --no-browser --port=8888

然后在自己电脑的终端建立隧道,如windows的Powershell,(需要提前安装SSH)输入

ssh -L 8080:localhost: @

例如,以用户名john在IP地址为111.111.1.1的服务器上面建立隧道

ssh -L 8080:localhost:8888 [email protected]
# 这里只是为了说明而用了不同端口,实际操作中可以用同样的端口
ssh -L 8888:localhost:8888 [email protected]

此时在服务器的终端上会显示Notebook的链接,如:
http://localhost:8888/?token=bf05bff12b9d36a31520c0290a0ba4526f03b3e48e3f397f
此时将端口8888换成8080(使用同样端口则不替换)即可在本地浏览器上访问服务器的Notebook。

注意:这种方法不会一直占用端口,退出后重新登录还可以再使用同样的端口,如8888

在集群上

例如使用slurm,先新建一个shell文档(如job.sh),加入slurm以及jupyter运行的代码,自定义设置slurm的配置和jupyter环境。

#!/bin/bash
#SBATCH -J jupyternotebook
#SBATCH -o job.%j.out
#SBATCH --nodes=1
#SBATCH -t 20

# Activate environment
source $HOME/.bashrc
source $HOME/.bash_profile
# r41只一个普通的anaconda环境,只不过包含了R语言,所以也可以用R kernel
conda activate r41

jupyter notebook --no-browser --port=8888 --ip "*" --notebook-dir /public/home/john/data/
conda deactivate

这里只设置了20分钟的运行时间,只是为了测试,如时间超过20分钟任务会自动断开。
然后,直接在服务器的本地终端运行:

sbatch job.sh

查看分配的计算单元

squeue

例如分配到的计算单元是cu015

             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
            308500   small_s jupytern     john  R       0:08      1 cu015

那么就可以在本地的终端(如Powershell)输入:

ssh -N -f -L localhost:8080:cu015:8888 [email protected]
# 这里同样只是为了说明而用了不同端口,实际操作中可以用同样的端口
ssh -N -f -L localhost:8888:cu015:8888 [email protected]

其中-N代表不需要执行命令,-f代表后台运行,可以在普通服务器上测试这些参数。
这时再查看slurm的任务输出job.%j.out,可以得到Notebook的链接,如:
http://127.0.0.1:8888/tree?token=bcff237c867a7854b77a34d4c10258ac284a425c1ffc64b2
此时将端口8888换成8080(使用同样端口则不替换)即可在本地浏览器上访问服务器集群的Notebook。
注意:这种方法会占用端口,退出后重新登录需要更换端口,如将8888换成8889,一段时间后可以再测试之前用过的端口。

你可能感兴趣的:(在服务器或超算集群上使用jupyter notebook)