Translate

2021年12月9日木曜日

富岳上に tkinter が使用可能な TensorFlow 2.2.0 をインストールする方法

 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 が未実装のバージョンのため使用できない

参考

AWS Glueジョブ(Python/Spark)にPythonパッケージを追加する方法

 AWS Glueジョブには2つの種類が存在します。 ETLジョブ(Spark) PySparkコードが実行できるジョブ。 最低でも10並列で実行するので、DynamicFrame/DataFrame操作以外の処理はPython Shellジョブを使ったほうがよい。 Python...