【常用bsub指令介绍】使用bsub命令提交作业、开启交互式窗口,在集群服务器上用pdb进行代码调试
创始人
2025-01-20 01:04:33
0

目录

  • 1. LSF作业调度系统和服务器集群介绍
  • 2. bsub运行作业的两种方式
      • 2.1 bsub直接提交作业
      • 2.2 bsub开启交互式窗口
  • 3. 使用pdb进行代码调试
  • 4. 更多bsub指令分享

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]"  -m gpu04  -Is /bin/bash  

出现以下信息就表明已经成功连接到计算节点了:
在这里插入图片描述

3. 使用pdb进行代码调试

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

import pdb pdb.set_trace() 

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

(3)由于断点存在的关系,程序运行会卡在插入断点的那一行,然后输入interact启动一个python的交互式解释器,就可以像在vscode/pychram的python interprect一样输入python代码查看对象的具体信息了。

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显示节点及其静态和动态资源

相关内容

热门资讯

透视脚本(微扑克)wpk提高胜... 透视脚本(微扑克)wpk提高胜率(透视)详细辅助玩家教程(其实是有挂)1、这是跨平台的wpk提高胜率...
aapoker发牌机制!aa扑... aapoker发牌机制!aa扑克网上的挂真的,(aa poker)总是真的有挂(详细辅助必备教程);...
智星德州菠萝辅助器!红龙扑克有... 智星德州菠萝辅助器!红龙扑克有挂么,(德州机器人)都是是有挂(详细辅助wpk教程);一、智星德州菠萝...
透视好友(Wpk)wpk俱乐部... 透视好友(Wpk)wpk俱乐部(透视)详细辅助切实教程(本来真的有挂);1、全新机制【wpk俱乐部软...
aapoker透视辅助!aap... aapoker透视辅助!aapoker辅助工具,(aapoker)确实是有挂(详细辅助可靠教程)1、...
wepokeai机器人!德州数... wepokeai机器人!德州数据辅助器,(WepoKe)从前真的有挂(详细辅助普及教程);玩家必备必...
辅助透视(wPK)微扑克有辅助... 辅助透视(wPK)微扑克有辅助挂(透视)详细辅助介绍教程(其实真的有挂);1、完成微扑克有辅助挂透视...
aapoker有猫腻!aapo... aapoker有猫腻!aapoker在哪里下载,(aapokeR)本来真的有挂(详细辅助力荐教程)1...
WePoKe外挂!德扑统计软件... WePoKe外挂!德扑统计软件,(aapokEr)往昔真的是有挂(详细辅助2025新版);WePoK...
aapoker透明挂!aapo... aapoker透明挂!aapoker软件app,(aapokEr)一贯是真的有挂(详细辅助揭秘攻略)...