Deep learning 如何将训练数据发送到执行命令的节点

Deep learning 如何将训练数据发送到执行命令的节点,deep-learning,cluster-computing,slurm,Deep Learning,Cluster Computing,Slurm,我正在使用slurm操纵GPU来训练我的模型。我在节点A上配置了python环境,这是我的代码和数据存储的地方。通常的做法是这样的: srun -p gpu --ntasks-per-node=1 --gres=gpu:2 python train.py 这将让slurm为我找到一个节点,并在此节点上运行我的代码。在这里,我发现我的代码运行速度比在一些具有相同数量GPU的本地计算机上运行速度慢3倍。我猜原因是代码中使用的数据存储在节点A上,而slurm为我分配了一个节点B来运行代码。因此,节点

我正在使用slurm操纵GPU来训练我的模型。我在节点A上配置了python环境,这是我的代码和数据存储的地方。通常的做法是这样的:

srun -p gpu --ntasks-per-node=1 --gres=gpu:2 python train.py
这将让slurm为我找到一个节点,并在此节点上运行我的代码。在这里,我发现我的代码运行速度比在一些具有相同数量GPU的本地计算机上运行速度慢3倍。我猜原因是代码中使用的数据存储在节点A上,而slurm为我分配了一个节点B来运行代码。因此,节点A上的数据必须从节点A连续传输到节点B,这会减慢处理速度


这里我的问题是:是否有一种方法可以将数据复制到节点B,以便代码可以像在本地机器中一样使用数据?

您可以使用Bash脚本替换命令中的
python train.py
部分,该脚本首先传输数据,然后运行
python train.py

最好是考虑创建一个正确的提交脚本,并提交它的代码< Stubs>代码>,而不是单独使用<代码> SRun:

#!/bin/bash
#SBATCH -p gpu 
#SBATCH --ntasks-per-node=1
#SBATCH --gres=gpu:2

cp /global/directory/data /local/directory/

python train.py

您需要使用适当的命令替换行
cp/global/directory/data/local/directory/
,以复制文件。它可以是
scp
,而不是
cp

您可以使用Bash脚本替换命令中的
python train.py
部分,该脚本首先传输数据,然后运行
python train.py

最好是考虑创建一个正确的提交脚本,并提交它的代码< Stubs>代码>,而不是单独使用<代码> SRun:

#!/bin/bash
#SBATCH -p gpu 
#SBATCH --ntasks-per-node=1
#SBATCH --gres=gpu:2

cp /global/directory/data /local/directory/

python train.py
您需要使用适当的命令替换行
cp/global/directory/data/local/directory/
,以复制文件。它可以是
scp
,而不是
cp