2021/12/09 時点における富岳環境では、TensorFlow 2.2.0 が使用可能であるが、有効にした場合の Python は tkinterが使用できない。
富岳上で動作する TensorFlow 2.2.0 のソースコードは、以下のリポジトリにて管理されている TensorFlow ブランチとして公開されている。
上記サイトのWikiに、日本語のセットアップ手順つきで提供されている。
この手順通りに実行することで、 tkinter が無効な TensorFlow 2.2.0 実行環境をホームディレクトリ上に構築することができる。
注意
上記サイトをそのまま実行する場合、以下の項目に注意すること。
- 必ず富岳計算ノード上で実行する
- 会話ジョブで実行する場合、オプションなしスクリプト実行は、各スクリプトごとに会話ジョブを終了・立ち上げる(実行に時間がかかるのでタイムアウトで失敗しないように)
- 失敗したら、使ったリポジトリは削除して、git checkoutからやりなおす
- 全スクリプトを download オプション付きで実行しておく(これもタイムアウト対策)
- spack は使わない(ガイドどおりにセットアップしても現時点で動作しない、富岳は環境が頻繁に変わるしサポートも弱い)
そこでこの記事では、上記サイト上のスクリプトを利用して tkinter が有効な Python 管理下での TensorFlow 2.2.0 実行環境を構築する手段を紹介する。
注意
本リポジトリは、2021/12/09 時点の富岳環境での動作を確認している。
富岳は、随時かつ頻繁に環境更新がおこなわれているため、本リポジトリの情報がすでに使用できない可能性がある。使用の際は、各自の責任にて判断のこと。
インストール手順
- 計算ノードへログイン
- 以下のコマンドを実行
cd ${HOME}
mkdir projects
cd projects
git clone https://github.com/coolerking/fugaku_sample
cd fugaku_sample
git checkout master
cd tensorflow
- env.src_fugakuを確認する。env.src は、デフォルトの設定から以下の環境変数を変更している。必要に応じて値を変更する。
- PREFIX : バイナリおよびライブラリの配置先ディレクトリ
- TCSDS_PATH : 富士通コンパイラのベースディレクトリ(定期的にバージョンが更新される)
- VENV_NAME : Python venv環境の配置先ディレクトリ
PREFIX=${HOME}/.local/aarch64
TCSDS_PATH=/opt/FJSVxtclanga/tcsds-1.2.33
VENV_PATH=${HOME}/.local/aarch64/venv/tensorflow
- 01_tensorflow.sh を確認する。有効なメールアドレスへの書き換えを行う。
#PJM --mail-list "hogehoge@fugafuga.slack.com"
- 以下のコマンド実行
chmod +x 01_tensorflow
pjsub 01_tensorflow.sh
注意
試行時は、ジョブ開始から完了まで7時間半ほどかかった。
TensorFlow 2.2.0 の利用
以下のコマンドを計算ノード上で実行し、venv環境 tensorflow を有効化する。
source ${HOME}/.local/aarch64/venv/tensorflow/bin/activate動作を確認したい場合は、計算ノード上で以下のコマンドを実行する。
python -c "import tkinter"
python -c "import tensorflow"
備考
- インストールされる tcl/tk は、富士通コンパイラではなく、gccコンパイラによりビルドされている(Python/TensorFlowは富士通コンパイラでビルドされる)
- ビルドされるTensorFlowはGPUは使用できない(計算ノードにはGPUが搭載されていない)かわりにoneDNNを使用したCPU高速化が行われている
- 上記手順を実行するとPython上でMPI相当の実装が可能になる horovod パッケージもあわせて構築される
- TensorFlow 2.2.0 には、mesh-tensorflow が未実装のバージョンのため使用できない