LoginSignup
2
1

More than 3 years have passed since last update.

スパコン ITO フロントエンド で PyTorch

Last updated at Posted at 2021-04-15

スパコン ITO の フロントエンドのベアメタルを利用すると,GPUを用いたインタラクティブな PyTorch の実行が可能です.バッチ処理であれば,ITO-BでもGPUの利用が可能です.
Miniconda をインストールしていることを前提に,conda-forge を highest priority に設定し,仮想環境 torch を作成し,activate しておきます.
補足: 当初は こちらの記事 にあるように,dockerhubのpytorchイメージを Singularity で実行しようとしましたが,動きませんでしたので,ローカルインストールすることにしました.

conda config --add channels conda-forge
conda update conda
conda create -n torch
conda activate torch

インストール

ITO の cuda ドライバは最新バージョンに対応していませんので,利用可能な cuda ドライバのバージョンに合わせて,以前のバージョンから適切なインストールコマンドを見つける必要があります.ここでは cuda/11.0 を load して利用します.

module load cuda/11.0
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch

テスト

インストールが成功したかテストします.Pythonのインタラクティブ環境ではShift + Enter(Windowsのキーボード)で入力になります.

(torch) $ python
Python 3.8.8 | packaged by conda-forge | (default, Feb 20 2021, 16:22:27)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> x=torch.rand(5,3)
>>> print(x)
tensor([[0.7027, 0.1075, 0.9553],
        [0.6718, 0.3508, 0.2277],
        [0.6082, 0.3109, 0.6119],
        [0.6703, 0.1544, 0.2207],
        [0.7046, 0.0201, 0.6421]])
>>> torch.cuda.is_available()
True

バッチ処理

ITO-B ではバッチ処理GPU の利用が可能です.PyTorch を利用する実行用の bash スクリプトを run.sh とします.以下の ito_b.sh は GPU を1つ使用する場合の例です.矢印部分 以降はコメントですので,実際は削除する必要があります.リソースグループは 公式サイトを参照して決めます.

ito_b.sh
#!/bin/bash
#PJM -L "rscunit=ito-b"          ← ITO-B を指定       
#PJM -L "rscgrp=ito-g-4"       ← リソースグループ指定
#PJM -L "vnode=1"          ← 使用するノード数を指定
#PJM -L "vnode-core=36"          ← ノード当たりのコア数を指定
#PJM -L "elapse=12:00:00"          ← 最大の計算時間の指定(12時間を指定)
#PJM -X          ← ログインノードの環境変数をバッチ処理でも引き継ぐ指定

source ~/.bashrc     # ← MinicondaがPythonの設定を.bashrcに書き込んでおり,これを読み込みます
module load cuda/11.0     # ← GPU を使用するため,CUDA 11.0 を load します
module list     # ← CUDA が load されたことを確認します
conda activate torch     # ← 仮想環境 torch に入ります
conda info -e     # ← 仮想環境 torch に入ったことを確認します

source ./run.sh     # ← 実行用の bash script
conda deactivate     # ← 仮想環境から抜けます

バッチ処理はログインノード環境を(環境変数以外は)引き継ぎませんので,CUDA の load や Python 環境の準備が必要になります.この例では ito_b.sh と PyTorch のコードを実行するスクリプト run.sh が同一ディレクトリに存在しています.

バッチジョブの投入

作成したバッチ処理スクリプト ito_b.sh をバッチ処理システムに投入します.

pjsub ito_b.sh

後は処理が終わるまで待つだけですので,ログアウトして構いません.
ジョブの状況を確認するには以下のようにします.

pjstat

バッチジョブが終わると,標準出力および標準エラー出力が,それぞれ ito_b.sh.o0000000 および ito_b.sh.e0000000 のようなファイル名で出力されます.ファイル名はバッチ処理スクリプト名に加え,oまたはeと7桁の数字で構成されています.標準出力ファイルが大きくなりすぎないよう,注意が必要です.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1