インタラクティブノード上か、qrshでログインした計算ノード上で以下のように環境を構築しておきます。
$ module load python/3.6/3.6.5
$ module load cuda/9.0/9.0.176.4
$ module load cudnn/7.4/7.4.2
$ module load openmpi/2.1.5
$ python3 -m venv horovod
$ source horovod/bin/activate
(horovod) $ pip3 install tensorflow-gpu keras torch
(horovod) $ pip3 install horovod
(horovod) $ deactivate
次にhorovod-testというディレクトリを作ってテスト用のコードをダウンロードします。
$ mkdir -p ~/horovod-test
$ cd ~/horovod-test
$ wget https://raw.githubusercontent.com/uber/horovod/master/examples/keras_mnist.py
以下のようなスクリプトを用意します。名前はhorovod-run.shなど適当につけます。
#!/bin/sh
#$ -l rt_F=4
#$ -l h_rt=1:00:00
#$ -N horovod-run
#$ -cwd
source /etc/profile.d/modules.sh
module load python/3.6/3.6.5
module load cuda/9.0/9.0.176.4
module load cudnn/7.4/7.4.2
module load openmpi/2.1.5
source $HOME/horovod/bin/activate
mpirun -n 16 -map-by ppr:4:node python3 keras_mnist.py
4ノード割り当て(rt_F=4)、ノードあたり4プロセス(-map-by ppr:4:node)、合計16プロセス(-n 16)立ち上げるようにしています。
qsubで実行するには、以下のように実行します。
$ qsub -g gXXNNNNN horovod-run.sh
qrshでインタラクティブに実行することも可能です。
$ qrsh -g gXXNNNNN -l rt_F=4
$ cd ~/horovod_test
$ sh horovod-run.sh