0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スパコン ITO のバッチ処理で TensorFlow の実行手順

Last updated at Posted at 2020-04-12

スパコンITO のサブシステムB(ITO-B)には GPU が搭載されています.ITO-B で TensorFlow を実行する方法を紹介します.GPU を使うためにバッチ処理が必要となります.そのため,Jupyterではなく,Pythonコードとして実行する必要があります.
スパコンITOのフロントエンドにおいて,TensorFlow を実行する手順はこちらの記事で紹介しました.手順はフロントエンドの場合と共通する部分が多いですが,ITO-Bでのバッチ処理の方が簡単です.
以下の手順はすべて スパコンITO の ログインノード で行います.

TensorFlow のインストール

Minicondaで構築した Python の base 環境を前提とします.anaconda channel で仮想環境を構築し,anaconda channeltensorflow-gpu パッケージをインストールします.この経緯はこちらの記事を参照ください.
こちらの記事で整備した Miniconda を用い,新しい仮想環境 tf を用意して,インストール作業を進めます.

$ conda create -c anaconda -n tf
$ conda activate tf
$ conda install -c anaconda tensorflow-gpu

ログインノードでは GPU が使用できないため,この段階で動作確認はできません.

バッチ処理スクリプトの作成

バッチ処理については公式サイトを参照ください.GPU の load を含む環境の整備やPythonコードの実行方法を含む bash script を作成します.以下は GPU を1つ使用する場合の,bash script ito_b.sh です.矢印部分 以降はコメントですので,実際は削除してください.リソースグループは公式サイトを参照して決めます.

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

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

python ann_experiments.py     # ← Pythonコードを実行します
conda deactivate     # ← 仮想環境から抜けます

バッチ処理はログインノードの環境を(環境変数以外は)引き継ぎませんので,CUDA の load や Python 環境の構築が必要になります.ログインノードで tf 仮想環境に入る必要はありません.この例では Python コードと ito_b.sh は同一ディレクトリに存在していることを前提としています.

バッチジョブの投入

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

$ pjsub ito_b.sh

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

$ pjstat

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

0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?