在 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正规提交作业。提高资源利用率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641747.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chmod高阶用法 | 特殊权限位 | SUID | SGID | Sticky Bit

一、【写在前面】 笔者记得最早开始背八股文的时候,只知道rwx和软连接这种权限设置和查看,也就是最常见的chmod 777, 后来工作的时候看前辈的代码和文档,发现还有一个特殊权限位,分别是SUID | SGID | Sticky Bit写的…

新的全息技术突破计算障碍

一种突破性的方法利用基于Lohmann透镜的衍射模型实时创建计算机生成全息图(CGH),在保持3D可视化质量的同时,大大降低了计算负荷要求。 全息显示为制作逼真的三维图像提供了一条令人兴奋的途径,这种图像给人以连续深度…

在linux系统中启动pycharm

1.找到pycharm的安装路径,一般在下载文件夹中 2.进入pycharm的安装路径,进入bin目录 3.右击,打开终端,输入./pycharm.sh

如何利用亚马逊云科技上的Amazon Bedrock构建负责任的AI?

AI安全是最近非常热门的话题,无论是训练数据全生命周期保护、模型安全、AI安全与合规等,今天我们来介绍一个新兴的AI安全话题—负责任(Responsible)的AI 1️⃣什么是负责任的AI? 所谓负责任,就是通过构建AI治理框架,让…

Redis入门到通关之Redis实现Session共享

文章目录 ☃️前期概要☃️基于Session实现登录方案☃️现有方案存在的问题☃️Redis代替Session的业务流程❄️❄️设计key的结构❄️❄️设计key的具体细节❄️❄️整体访问流程 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博…

Kubernetes(k8s)的概念以及使用

k8s的概念: K8s是指Kubernetes,是一个开源的容器编排和管理平台。它最初由Google开发,并于2014年将其开源。Kubernetes旨在简化容器化应用程序的部署、扩展和管理。 Kubernetes提供了一种可靠且可扩展的平台,用于管理容器化应用…

Qt 集成OSG

Qt 你好 | 专注于Qt的技术分享平台 一&#xff0c;新建一个 QOsgWidget 类&#xff0c;继承自osgQOpenGLWidget #ifndef QOSGWIDGET_H #define QOSGWIDGET_H#include <QObject> #include <osgViewer/Viewer> #include <osgQOpenGL/osgQOpenGLWidget> class…

【QT进阶】Qt Web混合编程之使用ECharts显示各类折线图等

往期回顾 【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客 【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView&#xff08;图文并茂超详细版本&#xff09;-CSDN博客【QT进阶】Qt Web混合编程之html、 js的简单交互-CSDN博客 【QT进阶】Qt Web混合编程之使…

软考 系统架构设计师系列知识点之大数据设计理论与实践(13)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之大数据设计理论与实践&#xff08;12&#xff09; 所属章节&#xff1a; 第19章. 大数据架构设计理论与实践 第4节 Kappa架构 19.4.2 Kappa架构介绍 Kappa架构由Jay Kreps提出&#xff08;Lambda由Storm之父Nayhan M…

jmeter 指定QPS压测接口

文章目录 jmeter 指定QPS压测接口更换语言为中文创建测试任务新建线程组右键线程组&#xff0c;新建http request&#xff0c;填写要你要压测的接口地址、参数如果需要自定义请求头&#xff0c;添加一个Http头信息管理器要查看结果和QPS统计数据&#xff0c;给上门的http请求添…

C++ | Leetcode C++题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; class Solution { public:string multiply(string num1, string num2) {if (num1 "0" || num2 "0") {return "0";}int m num1.size(), n num2.size();auto ansArr vector<int>(m n);for (int i …

AI论文速读 |从图结构角度统一车道级交通预测:基准和基线

题目&#xff1a;Unifying Lane-Level Traffic Prediction from a Graph Structural Perspective: Benchmark and Baseline 作者&#xff1a;Shuhao Li, Yue Cui, Jingyi Xu, Libin Li, Lingkai Meng, Weidong Yang(杨卫东), Fan Zhang, Xiaofang Zhou(周晓方) 机构&#xff…