gpt4 book ai didi

python - 在 IBM Load Shareing Facility (LSF) 中训练神经网络

转载 作者:行者123 更新时间:2023-12-01 01:45:12 25 4
gpt4 key购买 nike

我被授予访问一些高性能计算系统的权限,以进行一些机器学习实验。

该系统安装了 IBM 的 LSF 10.1。我被指示运行 bsub 命令将新的 ML 任务提交到队列。

我使用 Python+Keras+Tensorflow 来完成我的任务。

我的典型工作流程如下。我在 python 脚本 train.py 中定义神经网络架构和训练参数,将其提交到 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 仍在等待。

现在我有两个作业,正在等待它们的节点。

脚本 train.py 怎么样?

他们两个的情况会一样吗?

最佳答案

是的,会的。当您提交作业时,bsub 将仅查看以 #BSUB 开头的前几行,以确定您的作业需要哪些资源以及在哪个节点上( s) 使其运行得最好。

脚本的所有其他部分(不以 #BSUB 开头)仅在脚本停止挂起并开始运行时进行解释>。在某一特定行中,bash 将遇到命令 python train.py,加载当前版本的 train.py 并执行它。

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

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

  1. 确保您的 .py 脚本可以接受带有配置参数的命令行参数,或者可以从某个文件获取配置;不要依赖手动修改脚本来更改某些设置。
  2. 创建一个 bsub 模板文件,该文件看起来与上面的 bash 脚本大致相似,但至少留下一个可以指定实验参数的元变量。我所说的“元变量”是指一个唯一的字符串,不会与 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 模板中。

关于python - 在 IBM Load Shareing Facility (LSF) 中训练神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51441358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com