IBM负载共享设备(LSF)中的神经网络训练

2024-04-23 20:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我被允许访问一些高性能的计算机系统来进行一些机器学习的实验。你知道吗

这个系统安装了IBM的LSF10.1。 我被指示运行bsub命令向队列提交一个新的ML任务。你知道吗

我的任务使用Python+Keras+Tensorflow。你知道吗

我的典型工作流程如下。我在python脚本train.py中定义NN架构和训练参数,将其提交给git repo,然后运行它。 然后我在train.py中做了一些更改,提交它并再次运行。你知道吗

我开发了以下bsub脚本

#!/bin/bash
# 
#BSUB -P "project"
#BSUB -q queue
#BSUB -n 1
#BSUB -o %J.log
#BSUB -e %J.err
#BSUB -cwd "/home/user/my_project/nntrain"

module load cuda9.0 cudnn_v7 nccl_2.1.15
source /home/user/my_python/bin/activate
export PYTHONPATH=/home/user/my_project/lib

python train.py 2>&1 | tee ${LSB_JOBID}_out.log 

现在问题来了。你知道吗

我定义了一个网络,然后运行bsub < batch_submit。 作业被放入队列中,并被分配了一些标识符,比如12345678。你知道吗

当它没有运行,等待下一个空闲节点时,我对train.py做了一些更改,以创建一个新的变量并以类似的方式再次提交它:bsub < batch_submit

让新作业ID为12345692。作业12345678仍在等待。你知道吗

现在我有两份工作在等他们的节点。你知道吗

剧本呢训练吗?你知道吗

他们两个都一样吗?你知道吗


Tags: pyproject脚本loghomebin定义队列
1条回答
网友
1楼 · 发布于 2024-04-23 20:33:28

是的,会的。提交作业时,bsub将只查看以#BSUB开头的前几行,以确定作业需要哪些资源,以及在哪个节点上最好地运行作业。你知道吗

脚本的所有其他部分都不是以#BSUB开头的,只有在脚本停止pending并开始running时才被解释。在一个特定的行中,bash将遇到命令python train.py,加载当前版本的train.py,并执行它。你知道吗

也就是说,bsub不会以任何方式“冻结”环境;当作业开始运行时,它将运行最新版本的train.py。如果提交的两个作业都引用相同的.py-文件,那么它们都将运行相同的python脚本(最新版本)。你知道吗

如果您想知道如何使用上千种不同的设置运行上千个作业,我通常会这样做:

  1. 请确保您的.py脚本可以接受带有配置参数的命令行参数,或者可以从某个文件获取配置;不要依靠手动修改脚本来更改某些设置。你知道吗
  2. 创建一个类似于上面bash脚本的bsub模板文件,但至少留下一个可以指定实验参数的元变量。我所说的“元变量”是指一个唯一的字符串,它不会与bash脚本中的任何其他内容发生冲突,例如NAME_OF_THE_DATASET

    #!/bin/bash
    # 
    #BSUB -P "project"
    #BSUB -q queue
    #BSUB -n 1
    #BSUB -o %J.log
    #BSUB -e %J.err
    #BSUB -cwd "/home/user/project/nntrain"
    
    module load cuda9.0 cudnn_v7 nccl_2.1.15
    source /home/user/my_python/bin/activate
    export PYTHONPATH=/home/user/my_project/lib
    
    python train.py NAME_OF_THE_DATASET 2>&1 | tee ${LSB_JOBID}_out.log 
    
  3. 使用插入元变量不同值的循环创建一个单独的bash脚本(例如,将NAME_OF_THE_DATASET替换为myDataset1.csv。。。,myDatasetN.csv使用sed),然后通过bsub提交修改后的模板。

它可能不是最简单的解决方案(使用bsub本身的功能,可以使用更简单的编号方案),但我发现它非常灵活,因为它同样适用于多个元变量和各种标志和设置,它还允许您将不同的预处理脚本插入到bsub模板中。你知道吗

相关问题 更多 >