【常用bsub指令介绍】使用bsub命令提交作业、开启交互式窗口,在集群服务器上用pdb进行代码调试

这篇具有很好参考价值的文章主要介绍了【常用bsub指令介绍】使用bsub命令提交作业、开启交互式窗口,在集群服务器上用pdb进行代码调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. LSF作业调度系统和服务器集群介绍

在一个服务器集群中,有很多的人要使用,却只有很少的GPU。LSF作业调度系统则是对每个用户提交的作业和需要使用的GPU进行调度。一般使用bsub命令来将待运行的作业提交到集群上。

用bsub < run.sh提交了作业,一般是作业已经可以成功跑起来,提交了作业后直接等作业运行结束就行。但更多时候我们的代码可能会出现报错,需要进行调试。

一般情况下,我们会用pychram/ vscode等软件对代码打断点,进行调试。但使用的是本地的CPU资源,而不是服务器上的GPU。而且我们本地的电脑往往存储不够,不能加载大模型,没有在GPU上提交作业加载模型的话也无法在本地进行调试。这就需要用bsub开启一个交互式的窗口进行调试。

2. bsub运行作业的两种方式

2.1 bsub直接提交作业

比较常用的一种方式。通常是把作业脚本和需要使用的gpu资源定义在sh文件里,然后用busb < run.sh 来提交文件。一个sh文件示例如下:

#/bin/bash
#BSUB -J job_name
#BSUB -e /nfsshare/home/xxx/log/NAME_%J.err
#BSUB -o /nfsshare/home/xxx/log/NAME_%J.out
#BSUB -n 2
#BSUB -q gpu
#BSUB -R "rusage[ngpus_physical=2]"
#BSUB -gpu "num=2:mode=exclusive_process"
python file.py

bsub参数说明

bsub参数 说明 示例
-n : 提交一个并行作业并指定作业中的核心数量 #BSUB -n 2
-q : 将作业提交到指定的队列 如gpu, volta #BSUB -q gpu
-i : 从指定的文件路径获取作业的标准输入 输入路径
-o : 将作业的标准输出附加到指定的文件路径 标准输出路径
-e : 将作业的标准错误输出附加到指定的文件路径 报错输出路径
-J : 将指定的名称分配给作业 名称 name
-m : 在指定节点上运行提交的作业 -m gpu04

不同GPU资源需求的命令示例

(1)使用1块gpu卡运行作业

1、独占1块gpu卡运行作业
#!/bin/sh
#BSUB –gpu "num=1:mode=exclusive_process"
#BSUB -n 1
#BSUB -q gpu
#BSUB -o %J.out
#BSUB -e %J.err
#BSUB -J gputest
nvidia-smi >> out

(2) 同一节点独占2块gpu卡运行作业

#!/bin/sh
#BSUB -gpu "num=2:mode=exclusive_process"
#BSUB -n 2
#BSUB -q gpu
#BSUB -m gpu01
#BSUB -o %J.out
#BSUB -e %J.err
#BSUB -J gputest
#BSUB -R "rusage[ngpus_physical=2]"
nvidia-smi >>out

(3) 独占两个节点上的4块gpu卡运行作业

#!/bin/sh
#BSUB -gpu "num=4:mode=exclusive_process"
#BSUB -n 4
#BSUB -q gpu
#BSUB -o %J.out
#BSUB -e %J.err
#BSUB -J gputest
#BSUB -R "rusage[ngpus_physical=2] span[ptile=2]"
nvidia-smi >>out

2.2 bsub开启交互式窗口

用busb命令在命令行中开启一个交互式窗口可以方便我们使用交互式的 shell 会话,与计算节点上的 shell 进程进行交互。查看代码的中间过程。其使用方式为直接在命令行里输入bsub + gpu资源指定命令 + -Is /bin/bash,-Is /bin/bash 的意思是直接与计算节点进行交互,如:

bsub -R "rusage[ngpus_physical=1]" -gpu "num=1:mode=exclusive_process" -m gpu04  -Is /bin/bash

出现以下信息就表明已经成功连接到计算节点了:
bsub>sbmit,集群服务器,服务器,gpu算力,bug

3. 使用pdb进行代码调试

可以自行百度更多pdb的使用指南,我常用的方式为:
(1) 在python代码中需要添加断点的行前加入这两行:

import pdb
pdb.set_trace()

(2) 用bsub开启交互式窗口,然后输入 python project.py 运行python代码

(3)由于断点存在的关系,程序运行会卡在插入断点的那一行,然后输入interact启动一个python的交互式解释器,就可以像在vscode/pychram的python interprect一样输入python代码查看对象的具体信息了。文章来源地址https://www.toymoban.com/news/detail-813545.html

4. 更多bsub指令分享

常用指令 说明 示例
bsub < xx.sh 提交脚本 bsub run.sh
bjobs 查看作业信息
bjobs -p jobid 查看某个作业等待运行(pend)的原因 bjobs -p 69087
bkill jobid 终止某个作业
lsload -l +gpu名称 查看某个节点的使用状态,其中ngpus为正在使用的gpu的数量 lsload -l gpu06
lsload 显示集群的当前负载级别。
bhosts 显示节点及其静态和动态资源

到了这里,关于【常用bsub指令介绍】使用bsub命令提交作业、开启交互式窗口,在集群服务器上用pdb进行代码调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 57个Linux常用命令含参数介绍和使用示例

    点击下载《57个Linux常用命令含参数介绍和使用示例》 作用:显示当前所在的工作目录的全路径名称 该命令无需任何参数,只需在终端窗口中输入 pwd 命令即可使用。 作用:更改当前工作目录。 该命令需要一个参数:目标目录名称。 作用:列出指定目录中的文件和子目录名

    2024年02月03日
    浏览(34)
  • git常用命令 更新代码 提交代码

    Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper 。 使用命令将代码克隆到本地

    2024年02月14日
    浏览(37)
  • Linux系统常用命令行指令

    Linux系统是一种常用于开源项目开发的生产环境,因其免费、开源、安全、稳定的特点被广泛应用于手机、平板电脑、路由器、电视和电子游戏机等嵌入式系统中,能够更加简便地让用户知道系统是怎样工作的。前几日我安装好了Red Hat Enterprise Linux 9.0,今天就实操和记录一下

    2024年01月24日
    浏览(40)
  • 【Linux】常用指令介绍

    使用方法: ls [选项][目录或文件] 功能: 显示当前目录下的目录、文件列表。 常用选项: -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -l 列出文件的详细信息。 -d 将目录像文件一样显示,而不是显示其下的文件。 -i 输出文件的 i 节点的索引信息。(ls –ai 指定文

    2024年02月05日
    浏览(50)
  • 【Linux】常用的基本命令指令②

    前言:前面我们学习了Linux的部分指令,今天我们将接着上次的部分继续将Linux剩余的基本指令. 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:Linux的深度刨析 👈 💯代码仓库:卫卫周大胖的学习日记💫 💪关注博主和博主一起学习!一起努力! head 与 tail 就像它的名字一

    2024年02月03日
    浏览(37)
  • 【Linux】Linux常用指令介绍

    目录 1、whoami命令 2、pwd命令 3、ls命令 4、cd命令 5、touch命令 6、mkdir命令 7、rm命令 8、man命令 9、cp命令 10、mv命令 11、cat命令 12、more命令 13、less命令 14、head命令 15、tail命令 16、find命令 语法: whoani 功能: 显示当前用户名 语法: pwd 功能: 显示用户当前所在的目录 语法:

    2024年03月11日
    浏览(26)
  • Redis常用命令指令、描述及简单举例

    指令 描述 举例 set 存入单个数据 set number 1 setex 存入并设置过期时间 setex key 30 value setnx 不存在则存入,实现分布式锁 setnx key value msetnx 不存在则批量存入,原子性操作 msetnx key1 value1 key2 value2 有一个key存在则整个语句插入失败 mset 批量存入数据 mset key1 1 key2 2 get 获取单个数据

    2024年01月22日
    浏览(32)
  • 【Git】3.git常用命令(结合提交/拉取代码)

    前言:         跟git交互有好多场景,比如第一次推送代码;第一次拉取git上已有的项目;修改代码推送解决冲突;代码提交错误会滚等。接下来就结合场景来学习git命令吧~ 目录:         前提:                 在下列场景操作时的前提是需要先配置好git全局用户名和

    2024年02月04日
    浏览(42)
  • idea提交代码到git以及git常用命令

    本次操作以将本地代码提交到gitlab为例,不过都大同小异,差别不大。 Git 作为分布式版本控制软件,存储文件的位置叫做仓库。仓库有远程仓库(互联网上一台服务器或局域网内的一台服务器)和本地仓库(本机的一个目录)两种。 系统中任意文件夹都可以作为本地仓库。

    2024年02月04日
    浏览(63)
  • linux(centos7)常用命令 开启关闭防火墙

    在 CentOS 7 中,默认的防火墙服务是 firewalld ,它取代了之前版本中的 iptables 。 firewalld 使用了名为“firewall-cmd”的命令行工具来管理防火墙规则。 firewalld 的关键概念包括: 区域 (Zones) : 用于定义不同信任级别的网络连接。你可以为不同的网络接口或来源 IP 分配不同的区域,

    2024年01月21日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包