在 Slurm 上运行 Jupyter

2024-04-24 08:20
文章标签 运行 jupyter slurm

本文主要是介绍在 Slurm 上运行 Jupyter,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 背景介绍

现在的大模型训练越来越深入每个组了,大规模集群系统也应用的愈发广泛。一般的slurm系统提交作业分为2种,一种是srun,这种所见即所得的申请方式一般适用于短期的调试使用,大概一般允许的时间从几个小时到1天左右,很多集群分组都会限制运行时长。而另一种sbatch,则是批量提交作业,当srun调试程序能够成功运行的时候,就可以使用sbatch提交。如何使用slurm可以参考之前写的《slurm初相识》以及《查询slurm集群各个节点的运行情况》。

那么有没有一种方式可以以sbatch提交作业,但是又能有srun的交互式体验呢?有的,那就是使用sbatch提交jupyter作业。这样就可以在jupyter里自由的使用申请到的资源了。闲话不多说,下面介绍一下具体的实现步骤。

2. 实现

2.1 代码准备

#!/bin/bash
#SBATCH -J [job name]
#SBATCH -p [partition name]
#SBATCH --nodes=1
#SBATCH --gres=gpu:4 # 需要使用多少GPU,n是需要的数量
#SBATCH --cpus-per-gpu 4
#SBATCH -t 5-00:00:00 # 运行总时间,天数-小时数-分钟, D-HH:MM
#SBATCH -o logging_sbatch_8_3.o # 把输出结果STDOUT保存在哪一个文件
#SBATCH -e logging_sbatch_8_3.e # 把报错结果STDERR保存在哪一个文件
#SBATCH --mail-user=[notified E-mail address]
#SBATCH --mail-type=ALL
#SBATCH --nodelist=[Hostname]export XDG_RUNTIME_DIR=""
node=$(hostname -s)
user=$(whoami)
submit_host=${SLURM_SUBMIT_HOST}
port=[端口号]echo $node pinned to port $port
# print tunneling instructions jupyter-logecho -e "
To connect to the compute node ${node} on sribd running your jupyter notebook server,
you need to run following two commands in a terminal
1. Command to create ssh tunnel from you workstation/laptop to cs-login:
ssh -N -f -L ${port}:${node}:${port} ${user}@[登陆机ip]
Copy the link provided below by jupyter-server and replace the NODENAME with localhost before pasting it in your browser on your workstation/laptop
"# Run Jupyter
jupyter lab --no-browser --port=${port}  --ip=${node} 

当然,由于各种实现方式和资源分配方案,里面的SBATCH可能还需要下面的一些代码:

#SBATCH -A [指定账户]
#SBATCH --reservation=[保留代号]

2.2 在服务器上运行上述代码

当按照自己的需求,直接修改后,保存为sh命令行文件,例如sbatch_run.sh在主节点直接输入下面的命令:

sbatch sbatch_run.sh

如果有报错提示,建议提前安装一下Jupyter:

pip install jupyter notebook

然后,去客户端上执行以下步骤。

2.3 客户端执行代码

在本地电脑上打开一个新的终端窗口,复制并执行 ./logging_sbatch_8_3.o 第一行生成的命令,创建一个SSH隧道:

windows 通过 cmd (命令提示符) 执行 ,Linux 或 Mac 通过 terminal 执行下面代码:

ssh -N -f -L [Port]:[HostName]:[Port] [username]@[Server IP]  # 输入密码登录成功后,请勿关闭此终端窗口。

在通过本地电脑打开浏览器,访问 ./logging_sbatch_8_3.o 最后一行生成的网址。

类似如下的命令:

http://127.0.0.1:8820/lab?token=5ab3861accf57e32f1351ab895cb456c30a20cf9cd10f86c

然后进去以后会长这样:
在这里插入图片描述
选择终端[Terminal]即可。这样就可以以sbatch的时长享用srun了。

3. 道德声明

这种做法其实是不对的,本来slurm创建作业系统,就是为了避免资源空闲。一旦这样做,我们就会独享一个服务器的资源,无论我们是否使用,它都已经被占用了。所以建议非必要紧急,不要使用这种方式去申请资源。如果有的话,建议使用sbatch正规提交作业。提高资源利用率。

这篇关于在 Slurm 上运行 Jupyter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931229

相关文章

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时