-
Notifications
You must be signed in to change notification settings - Fork 1
TensorFlow oneDNN build manual for FUJITSU Software Compiler Package (TensorFlow v2.7.0) JP
本書は富士通Supercomputer PRIMEHPC FX1000, FX700 上に TensorFlow をインストールするための手順書です。
また、サンプルとしていくつかの重要モデルを FX1000, FX700 用に最適化したものをインストール、実行するための手順も提供します。
TensorFlow のビルドは、インターネットに直接 (またはproxy経由で) アクセスできるシステム上で行う必要があります。 しかし、企業の実験室など外部と遮断された環境への導入要望も多いため、 暫定的にそのような環境へのインストール手順も示しています (この手順書ではこれを「オフラインインストール」と呼びます)。 この手順はまだベータテストレベルであり動作を保証するものではありません。 インターネットに接続されたシステムでインストールすることをお勧めします。
オフラインインストールでは、 予めインターネットに接続されているシステム(以下「ダウンロード用システム」)で 必要なファイル一式をダウンロードしておき、 それをインストール対象システム(以下「インストール対象システム」)に転送してビルドします。
本書では以下の用語・略語を使用します。
用語・略語 | 意味 |
---|---|
オンラインインストール | インターネットに直接アクセスできるシステムにTensorFlowをインストールすること |
オフラインインストール | インターネットにアクセスできないシステムにTensorFlowをインストールすること |
インストール対象システム | TensorFlowをインストールする対象システム |
ダウンロード用システム | オフラインインストール用に、必要なファイルを予めダウンロードするシステム |
TCS | FX1000のジョブ実行スケジューラやコンパイラ・ライブラリ環境 (Technical Computing Suite) |
CP | FX700のコンパイラ・ライブラリ環境 (Compiler Package) |
- OSはUNIXまたはLinux
- bash, python, wget, git, unzip, tar, curl が実行可能なこと
- インストール対象システムへアクセス可能であること
- ファイルシステムに十分な空容量があること
ダウンロードデータ量はおよそ41GBです。
モジュール ダウンロード量 TensorFlow のソース 2GB TensorFlow 本体構築用にダウンロードするファイル 2GB サンプルモデルResNet 5MB サンプルモデルOpenNMT 5GB サンプルモデルBERT 1GB サンプルモデルMask R-CNN 30GB 合計 41GB
なお、ダウンロード先のディレクトリはTensorFlowのソースディレクトリ配下になります。
- PRIMEHPC FX1000 または FX700
- FX700 の場合
- RHEL 8.x または CentOS 8.x がインストールされていること
- FCC で環境を構築するなら Compiler Package V10L20がインストールされていること
- 以下のパッケージ、コマンドがインストール済であること
make gcc cmake libffi-devel gcc-gfortran numactl git patch unzip tk tcsh tcl lsof python3 pciutils
(Mask-RCNN サンプルモデルを実行する場合) libxml2 libxslt libxslt-devel libxml2-devel - 空き容量100GB以上のストレージがあること
なお、NFS上でのビルド、実行はNFSサーバの性能や設定により予期せぬトラブルが起こることがありますのでご注意ください。
ローカルに接続されたストレージか、十分に高速なネットワークストレージを使うことをお薦めします。
インストール後のディレクトリ構成は以下のようになります。
それぞれディレクトリ PREFIX, VENV_PATH, TCSDS_PATH はインストール用の設定ファイル env.src
で指定します。
TENSORFLOW_TOP も含めた4ディレクトリは、互いに独立したディレクトリを指定するようにしてください。
(あるディレクトリが、別のディレクトリの下にならないようにしてください)
PREFIX (ローカルバイナリ置き場) +- bin (Python など) +- lib VENV_PATH (TensorFlow実行に必要なpythonモジュール置き場) +- bin (activate) +- lib (pip でインストールするパッケージ類) TCSDS_PATH (富士通コンパイラ、※: 手順実行前にインストール済) +- bin (fcc, FCC など) +- lib64 TENSORFLOW_TOP (TensorFlow ソース一式, ダウンロード用システムから転送、またはhttps://www.github.com/fujitsu/tensorflowからダウンロードしたもの) +- tensorflow +- third_party +- fcc_build_script (TensorFlow構築スクリプト) +- down (ダウンロードしたファイル格納) +- sample_script (ResNet, OpenNMT, BERT, Mask RCNN 各モデルのソースと学習データ、構築スクリプト)
お使いの環境が、外部アクセスにproxyを通す必要がある環境の場合、以下の環境変数を設定してください。
(user, pass, proxy_url, port はお使いの環境に合ったものに置き換えてください。)
$ export http_proxy=http://user:pass@proxy_url:port
$ export https_proxy=https://user:pass@proxy_url:port
注: curl, wget, git, pip3, bazel, は上記環境変数を認識するので、rc や .gitconfig の設定は不要です。
大まかな流れは以下のようになります。
- 前準備 (オフラインインストール・オンラインインストール共通)
- ダウンロード用システム手順 (オフラインインストールのみ)
- インストール対象システム手順 (オフラインインストール・オンラインインストール共通)
$ git clone https://github.com/fujitsu/tensorflow.git
$ cd tensorflow # これ以降このディレクトリを TENSORFLOW_TOP と呼びます
$ git checkout -b fujitsu_v2.7.0_for_a64fx origin/fujitsu_v2.7.0_for_a64fx
$ cd fcc_build_script
以降の例では /home/user/tensorflow を TENSORFLOW_TOP として例示してあります。
env.src は構築方法やディレクトリを指示するための設定ファイルです。
$TENSORFLOW_TOP/fcc_build_script
にあります。
設定は大きく2つの部分に分れています。
-
構築の方法を制御する
フラグ名 初期設定値 意味 補足 fjenv_use_venv
true true だと VENVを使う 設定なしは動作未検証です fjenv_use_fcc
true true だと FCCを使う 設定なしは動作未検証です fjenv_offline_install
false true だとオフラインインストールを行う なお、これらのフラグは'env.src'でシェル変数として定義されていますが、 'env.src' 外で環境変数として設定することもできます。 その場合、環境変数の設定が 'env.src' の設定よりも優先されます。
-
構築ディレクトリを設定する
ディレクトリ構成図は2.3を参照してください。変数名 意味 補足 PREFIX
この構築手順で生成される実行ファイルをインストールするディレクトリ VENV_PATH
VENVをインストールするディレクトリ名 use_venv=true
のとき有効TCSDS_PATH
TCS, CP のベースディレクトリ名 (ベースディレクトリ: bin, lib などを含むディレクトリ) use_fcc=true
のとき有効
これ以外の設定もありますが、変更の必要はありません。
この節はオフラインインストールする場合の前準備の手順です。 インターネット接続システムにインストールする場合は、この節は飛ばして3.3に進んでください。
fcc_build_script
ディレクトリにある、0で始まるシェルスクリプトを、数字の小さい方から順番に、引数 download
を与えて実行してください。
ダウンロード先は $TENSORFLOW_TOP/fcc_build_script/down
です。
$ pwd
/home/user/tensorflow/fcc_build_script # $TENSORFLOW_TOP/fcc_build_script
$ bash 01_python_build.sh download # Python のダウンロード
$ bash 02_bazel_build.sh download # bazel のダウンロード
$ bash 03_make_venv.sh download # VENV 設定とpythonモジュール更新
$ bash 04_numpy_scipy.sh download # NumPy, SciPy のダウンロード
$ bash 05-1_build_batchedblas.sh download # BatchedBlas ダウンロード
$ bash 05_tf_build.sh download # TensorFlow ビルドに必要なモジュールダウンロード
$ bash 07_horovod_install.sh download # Horovod のダウンロード
スクリプトは、すでにダウンロードずみのファイルがある場合はダウンロードを行わないようになっています。
再度ダウンロードを行いたい場合は、まず、各スクリプトの引数に clean
を指定して実行した後、download
を指定して実行してください。
clean
は download
より優先度が高いので、clean download
あるいは download clean
と指定すると clean
が実行されます。
$TENSORFLOW_TOP/fcc_build_script/sample_script
配下にサンプルモデルごとのディレクトリがあります。
そのディレクトリ内にある、数字で始まるシェルスクリプトを、数字の小さい方から順番に、引数 download
を与えて実行してください。
ダウンロード先は、サンプルモデルと学習データは各サンプルモデルディレクトリ、
その他は $TENSORFLOW_TOP/fcc_build_script/down
です。
こちらのスクリプトも上と同様、何度実行しても再ダウンロードは行いません。
再度ダウンロードを行いたい場合はまず各スクリプトに clean
を指定して実行し、その後で download
を指定して実行してください。
なお、学習データのダウンロードや作り直しには時間がかかるため、clean
でも削除しないようにしてあります。
削除したい場合は、サンプルモデルディレクトリ配下の以下のデータディレクトリを手動で削除してください。
$TENSORFLOW_TOP/fcc_build_script/sample_script/02_OpenNMT/dataset
$TENSORFLOW_TOP/fcc_build_script/sample_script/03_Bert/cased_L-12_H-768_A-12*
$TENSORFLOW_TOP/fcc_build_script/sample_script/04_Mask-R-CNN/dataset
$TENSORFLOW_TOP
以下すべてのファイルを転送します。
具体的な方法は各システム構成により異なるので記載しません。
scp, ftp, 共有ディレクトリ使用、など、システムに応じた方法で転送してください。
数字で始まるスクリプトを順次実行していきます。 以下の例は対話型シェルでインストールする場合の例です。コメントの後ろにおおよその所要時間を示してあります (FX700 2.0GHz 48core の実測結果)。
ジョブ制御システムを使用する場合は、たとえば一連のビルドスクリプトを実行するバッチスクリプトを作成して投入してください。
その際のバッチスクリプトは、構築スクリプトがエラーした時点で終了するようにしておくことをお勧めします (bashスクリプトなら一連のスクリプト走行の前にset -e
を実行する)。
[option]
はスクリプトに渡すオプションです。省略した場合はビルドを実行します。
スクリプトは、すでにビルド済みの場合は再ビルドしないようになっているので、
再ビルドしたい場合は rebuild
を指定してください。
clean
と間違えないようにしてください。clean
を指定するとダウンロード済みのファイルを消去するので、オフラインインストールにおいてインストール対象システムで指定すると、再度転送が必要になります。
$ pwd
/home/user/tensorflow/fcc_build_script # $TENSORFLOW_TOP/fcc_build_script
$ bash 01_python_build.sh [option] # python のビルドとインストール (5分)
$ bash 02_bazel_build.sh [option] # bazel のインストール (< 1分)
$ bash 03_make_venv.sh [option] # VENV 作成 (< 1分)
$ bash 04_numpy_scipy.sh [option] # NumPy, SciPy のビルド (90分)
$ bash 05-1_build_batchedblas.sh [option] # BatchedBlas のビルド (< 1分)
$ bash 05_tf_build.sh [option] # TensorFlow のビルド (120分)
$ bash 07_horovod_install.sh [option] # Horovod のインストール (10分)
正しくビルドできたかどうかの確認にはサンプルモデル01_ResNet (下記) を実行してください。
sample_script 配下に各サンプルモデルごとのディレクトリがあります。 そのディレクトリ内にある、数字で始まるシェルスクリプトを、 数字の小さい方から順番に実行してください。
以下に構築方法と実行性能確認方法を示します。 なお、実行性能については、深層学習モデルの実行速度は10~20%のくらいの変動があるため、 本書に記載した実行速度を目安に、おおよそその範囲にあれば正しく構築できていると判断できます。
注意: ここで提供したサンプルモデルは、動作確認や性能分析用途に、オリジナルを若干変更してあります。 プロファイル採取のために乱数シードを固定してあったり、一定回数の実行で中断するように設定していることもあるので、 実際の学習にはそのまま使わないようにしてください。
また、サンプルモデルの走行スクリプトの設定は、必ずしも最速になっているわけではないことに留意してください。
google の公式モデル(TensorFlow v1.x用)を使用します。
https://github.com/tensorflow/models/tree/v2.0/official/r1/resnet
Tag: v2.0 (2019/10/15)
$ pwd
/home/user/tensorflow/fcc_build_script/sample_script/01_resnet
$ bash 10_setup_resnet.sh [option] # モデル構築 (< 1分)
$ bash run1proc.sh # 動作確認 (1ノード, 1プロセス、12コア, ダミーデータ)
$ bash run1node.sh # 動作確認 (1ノード, 4プロセス、12コア/プロセス, ダミーデータ)
2ノード以上を使用するスクリプトは提供していないので、run1node.sh
の内容を参考に作成してください。
実行結果確認方法は以下の通りです。(矢印の部分)
$ bash run1proc.sh
(中略)
INFO:tensorflow:cross_entropy = 7.4513965, learning_rate = 0.0, train_accuracy = 0.0
I0320 15:34:57.914131 281473099739712 basic_session_run_hooks.py:270] cross_entropy = 7.4513965, learning_rate = 0.0, train_accuracy = 0.0
INFO:tensorflow:loss = 8.846884, step = 0
I0320 15:34:57.917531 281473099739712 basic_session_run_hooks.py:270] loss = 8.846884, step = 0
INFO:tensorflow:global_step/sec: 0.152233
I0320 15:35:04.481962 281473099739712 basic_session_run_hooks.py:718] global_step/sec: 0.152233
INFO:tensorflow:loss = 8.846884, step = 1 (6.565 sec)
I0320 15:35:04.482757 281473099739712 basic_session_run_hooks.py:268] loss = 8.846884, step = 1 (6.565 sec)
INFO:tensorflow:global_step/sec: 0.503296
I0320 15:35:06.468833 281473099739712 basic_session_run_hooks.py:718] global_step/sec: 0.503296
--> INFO:tensorflow:loss = 8.840118, step = 2 (1.987 sec)
I0320 15:35:06.469572 281473099739712 basic_session_run_hooks.py:268] loss = 8.840118, step = 2 (1.987 sec)
INFO:tensorflow:global_step/sec: 0.503718
I0320 15:35:08.454073 281473099739712 basic_session_run_hooks.py:718] global_step/sec: 0.503718
--> INFO:tensorflow:loss = 8.820971, step = 3 (1.985 sec)
(中略)
INFO:tensorflow:Starting evaluation at 2022-03-20T15:35:34
I0320 15:35:34.029292 281473099739712 evaluation.py:254] Starting evaluation at 2022-03-20T15:35:34
INFO:tensorflow:Graph was finalized.
I0320 15:35:35.488217 281473099739712 monitored_session.py:247] Graph was finalized.
INFO:tensorflow:Restoring parameters from /home/user/tensorflow/fcc_build_script/sample_script/01_resnet/run_20220320_153359/model.ckpt-10
I0320 15:35:35.489164 281473099739712 saver.py:1399] Restoring parameters from /home/user/tensorflow/fcc_build_script/sample_script/01_resnet/run_20220320_153359/model.ckpt-10
INFO:tensorflow:Running local_init_op.
I0320 15:35:37.194845 281473099739712 session_manager.py:531] Running local_init_op.
INFO:tensorflow:Done running local_init_op.
I0320 15:35:37.274327 281473099739712 session_manager.py:534] Done running local_init_op.
INFO:tensorflow:step = 1 time = 1.845 [sec]
I0320 15:35:39.972107 281473099739712 resnet_run_loop.py:760] step = 1 time = 1.845 [sec]
INFO:tensorflow:Evaluation [1/10]
I0320 15:35:39.972590 281473099739712 evaluation.py:167] Evaluation [1/10]
--> INFO:tensorflow:step = 2 time = 0.575 [sec]
I0320 15:35:40.547780 281473099739712 resnet_run_loop.py:760] step = 2 time = 0.575 [sec]
INFO:tensorflow:Evaluation [2/10]
I0320 15:35:40.548261 281473099739712 evaluation.py:167] Evaluation [2/10]
--> INFO:tensorflow:step = 3 time = 0.586 [sec]
(中略)
各ステップの実行時間が表示されます。最初に学習を10ステップ、その後推論を10ステップ行います。 1ステップ目は初期化も行うため時間がかかるので、2ステップ目以降にかかる時間を確認してください。
FX700(2.0GHz) の場合、
run1proc.sh
も run1node.sh
も学習で約2秒、推論で約0.6秒ならば正しく実行できています。
なお、run1node.sh
はTensorFlowを4つ起動し、各TensorFlowがrun1proc.sh
と同じ条件の学習・推論を行うので、
全体の処理量は4倍になっています。このため、ひとつのTensorFlowの結果で比べると run1proc.sh
よりも多少1ステップの実行時間が長くなります。
英語とドイツ語の文を対で入力し、翻訳の学習します。
https://github.com/OpenNMT/OpenNMT-tf/tree/v2.11.0
Tag: v2.11.0 (2020/6/17)
$ pwd
/home/user/tensorflow/fcc_build_script/sample_script/02_OpenNMT
$ bash 20_setup_OpenNMT.sh [options] # セットアップ (5分)
$ bash run1proc.sh # 動作確認 (1ノード, 1プロセス、24コア, 英文-独文)
$ bash run1node.sh # 動作確認 (1ノード, 2プロセス、24コア/プロセス, 英文-独文)
2ノード以上を使用するスクリプトは提供していないので、run1node.sh
の内容を参考に作成してください。
実行結果確認方法は以下の通りです。(矢印の部分)
INFO:tensorflow:Number of model weights: 260 (trainable = 260, non trainable = 0)
INFO:tensorflow:Step = 1 ; steps/s = 0.01, source words/s = 35, target words/s = 35 ; Learning rate = 0.000000 ; Loss = 10.499719
INFO:tensorflow:Saved checkpoint run_20220320_153804/testrun/ckpt-1
INFO:tensorflow:Step = 2 ; steps/s = 0.09, source words/s = 516, target words/s = 504 ; Learning rate = 0.000000 ; Loss = 10.497824
INFO:tensorflow:Step = 3 ; steps/s = 0.22, source words/s = 1259, target words/s = 1226 ; Learning rate = 0.000000 ; Loss = 10.496581
INFO:tensorflow:Step = 4 ; steps/s = 0.23, source words/s = 1336, target words/s = 1331 ; Learning rate = 0.000001 ; Loss = 10.491531
(中略)
--> INFO:tensorflow:Step = 10 ; steps/s = 0.24, source words/s = 1365, target words/s = 1377 ; Learning rate = 0.000001 ; Loss = 10.479089
--> INFO:tensorflow:Step = 11 ; steps/s = 0.24, source words/s = 1350, target words/s = 1317 ; Learning rate = 0.000001 ; Loss = 10.476576
--> INFO:tensorflow:Step = 12 ; steps/s = 0.23, source words/s = 1307, target words/s = 1320 ; Learning rate = 0.000002 ; Loss = 10.471901
--> INFO:tensorflow:Step = 13 ; steps/s = 0.24, source words/s = 1325, target words/s = 1325 ; Learning rate = 0.000002 ; Loss = 10.468829
--> INFO:tensorflow:Step = 14 ; steps/s = 0.24, source words/s = 1348, target words/s = 1360 ; Learning rate = 0.000002 ; Loss = 10.459951
--> INFO:tensorflow:Step = 15 ; steps/s = 0.24, source words/s = 1364, target words/s = 1333 ; Learning rate = 0.000002 ; Loss = 10.462379
--> INFO:tensorflow:Step = 16 ; steps/s = 0.24, source words/s = 1364, target words/s = 1371 ; Learning rate = 0.000002 ; Loss = 10.451959
--> INFO:tensorflow:Step = 17 ; steps/s = 0.24, source words/s = 1340, target words/s = 1333 ; Learning rate = 0.000002 ; Loss = 10.449181
各ステップで出力される target words/s を確認します。 開始直後は性能が不安定なので10ステップ目以降を見てください。
FX700(2.0GHz)の場合、run1proc.sh
なら1350 target words/sec,
run1node.sh
なら2300 target words/sec 程度なら正しく動作しています。
google の公式モデルを使用します。
https://github.com/tensorflow/models/tree/v2.7.0/official/nlp
Tag: v2.7.0 (2021/11/16)
※: 以前は事前学習とファインチューニング2つのタスクを用意していましたが、 演算処理内容は両者はほぼ同じなので、より重たい事前学習の方だけにしました。
$ pwd
/home/user/tensorflow/fcc_build_script/sample_script/03_Bert
$ bash 300_setup_bert.sh [options] # セットアップ (5分)
$ bash 311_create_pretraining_data.sh [options] # 事前学習タスクのデータ作成 (1分)
$ bash run1proc.sh # 事前学習タスク実行 (1ノード, 1プロセス、24コア)
$ bash run1node.sh # 事前学習タスク実行 (1ノード, 2プロセス、24コア/プロセス)
2ノード以上を使用するスクリプトは提供していないので、run1node.sh
の内容を参考に作成してください。
実行結果確認方法は以下の通りです。(矢印の部分)
I0329 11:25:12.250460 281473158656576 model_training_utils.py:288] Loading from checkpoint file completed
I0329 11:25:58.921862 281473158656576 model_training_utils.py:518] Train Step: 1/20 / loss = 12.329887390136719 masked_lm_accuracy = 0.000000 lm_example_loss = 11.555142 next_sentence_accuracy = 0.395833 next_sentence_loss = 0.774745
I0329 11:25:58.923070 281473158656576 keras_utils.py:145] TimeHistory: 46.61 seconds, 1.03 examples/second between steps 0 and 1
I0329 11:26:03.738602 281473158656576 model_training_utils.py:518] Train Step: 2/20 / loss = 12.409647941589355 masked_lm_accuracy = 0.000000 lm_example_loss = 11.572385 next_sentence_accuracy = 0.312500 next_sentence_loss = 0.837263
I0329 11:26:03.739170 281473158656576 keras_utils.py:145] TimeHistory: 4.79 seconds, 10.03 examples/second between steps 1 and 2
I0329 11:26:08.520679 281473158656576 model_training_utils.py:518] Train Step: 3/20 / loss = 12.32846450805664 masked_lm_accuracy = 0.000000 lm_example_loss = 11.509584 next_sentence_accuracy = 0.437500 next_sentence_loss = 0.818880
(中略)
--> I0329 11:26:37.495301 281473158656576 keras_utils.py:145] TimeHistory: 4.79 seconds, 10.02 examples/second between steps 8 and 9
I0329 11:26:42.298977 281473158656576 model_training_utils.py:518] Train Step: 10/20 / loss = 9.174365043640137 masked_lm_accuracy = 0.025974 lm_example_loss = 8.481404 next_sentence_accuracy = 0.562500 next_sentence_loss = 0.692961
--> I0329 11:26:42.299548 281473158656576 keras_utils.py:145] TimeHistory: 4.78 seconds, 10.05 examples/second between steps 9 and 10
I0329 11:26:47.065550 281473158656576 model_training_utils.py:518] Train Step: 11/20 / loss = 8.464371681213379 masked_lm_accuracy = 0.070133 lm_example_loss = 7.815945 next_sentence_accuracy = 0.666667 next_sentence_loss = 0.648427
--> I0329 11:26:47.066114 281473158656576 keras_utils.py:145] TimeHistory: 4.74 seconds, 10.13 examples/second between steps 10 and 11
I0329 11:26:51.883372 281473158656576 model_training_utils.py:518] Train Step: 12/20 / loss = 8.288689613342285 masked_lm_accuracy = 0.098573 lm_example_loss = 7.585730 next_sentence_accuracy = 0.520833 next_sentence_loss = 0.702960
(中略)
各ステップで出力される examples/second を確認します。
開始直後は性能が不安定なので10ステップ目以降を見てください。
FX700(2.0GHz)の場合、
run1proc.sh
, run1node.sh
とも 9.5~10 examples/sec なら正しく動作しています。
なお、run1node.sh
では2プロセスがそれぞれの結果を出力します。全体の処理量はこれらの合計になります。
このため、ひとつのプロセスの出力結果で比べると run1proc.sh
よりも多少性能が下がることに注意してください。
(中略)
I0320 15:53:23.390330 281473826665024 keras_utils.py:145] TimeHistory: 4.94 seconds, 9.72 examples/second between steps 11 and 12
I0320 15:53:23.392809 281473556394560 keras_utils.py:145] TimeHistory: 4.94 seconds, 9.72 examples/second between steps 11 and 12
I0320 15:53:28.290043 281473826665024 keras_utils.py:145] TimeHistory: 4.89 seconds, 9.81 examples/second between steps 12 and 13
I0320 15:53:28.291527 281473556394560 keras_utils.py:145] TimeHistory: 4.89 seconds, 9.82 examples/second between steps 12 and 13
(中略)
google の公式モデルを使用します。
https://github.com/tensorflow/models/tree/master/research/object_detection
Commit id: dc4d11216b (2020/11/8)
$ pwd
/home/user/tensorflow/fcc_build_script/sample_script/04_Mask-R-CNN
$ bash 40_setup_mask-r-cnn.sh [options] # セットアップ (20分)
$ bash 41_dataset.sh # 学習データ(26GB)ダウンロードと加工 (3時間30分)
$ bash run1proc.sh # タスク実行 (1ノード, 1プロセス、24コア)
$ bash run1node.sh # タスク実行 (1ノード, 2プロセス、24コア/プロセス)
実行結果確認方法は以下の通りです。(矢印の部分)
INFO:tensorflow:Step 1 per-step time 181.858s loss=9.109
INFO:tensorflow:Step 2 per-step time 4.071s loss=9.131
(中略)
INFO:tensorflow:Step 20 per-step time 4.378s loss=4.496
--> INFO:tensorflow:Avg per-step time 4.592s Avg per-step batch 0.436
FX700(2.0GHz)の場合、
run1proc.sh
なら 0.45 batch/sec,
run1node.sh
なら 0.65 batch/sec 程度出ていれば正しく動作しています。
なお、run1node.sh
では各プロセスが結果を出力しますが、batch/sec は全プロセスのバッチ数を元に計算されます。
値は厳密に一致しませんが、これは実行時間がプロセスごとに管理されているためです。
INFO:tensorflow:Step 19 per-step time 6.789s loss=4.601
INFO:tensorflow:Step 20 per-step time 6.313s loss=4.492
--> INFO:tensorflow:Avg per-step time 6.206s Avg per-step batch 0.645
INFO:tensorflow:Step 20 per-step time 6.578s loss=4.569
--> INFO:tensorflow:Avg per-step time 6.232s Avg per-step batch 0.642
- _ctype のエラーが出る場合は libffi-devel が不足していますので
yum install
してください。 - Fortran が見つからない場合は
yum gcc-gfortran
してください。
以下の条件に当てはまる場合 'cannot execute binary file: Exec format error' というエラーメッセージが出て実行できません。
- オフラインインストールを実施している
- ダウンロード用システムがFX1000,FX700以外である (例:PRIMERGYなどx86サーバ)
- ダウンロード用システムとインストール対象システムで共通のネットワークストレージを使っており、 そのネットワークストレージにインストールしようとしている
- TensorFlowは構築済みで、後からサンプルモデルをビルドしようとしている
この場合は、次の1,2いずれかの方法を取ってください。
- 最初に全部ダウンロードしてからビルドする
- ダウンロードするディレクトリとビルドするディレクトリを分ける
主要なソフトウェアの版数は以下の通りです。
ソフトウェア名 | 版数)リリース日) | ライセンス | 備考 |
---|---|---|---|
Python | 3.9.x (2021/10/4またはそれ以降) | GPL | 'x'はインストール時点により異なる (3.9ブランチの最新を使用) |
TensorFlow | 2.7.0 (2021/10/31) | Apache 2.0 | |
bazel | 4.2.2 (2021/12/02) | Apache 2.0 | |
oneDNN | v2.4.0 (2021/10/5) | Apache 2.0 | |
BatchedBlas | 1.0 (2021/2/9) | BSD-3 | |
Horovod | 0.23.0 (2021/10/6) | Apache 2.0 | |
NumPy | 1.22.x (2021/12/30 またはそれ以降) | BSD-3 | 'x'はインストール時点により異なる (1.22ブランチの最新を使用) |
SciPy | 1.7.x (2021/6/19 またはそれ以降) | BSD-3 | 'x'はインストール時点により異なる (1.7ブランチの最新を使用) |
上記以外のモジュールも、基本的にインストール時の最新版を使用します。
インストールスクリプトを実行すると、pip3_list.txt
というファイルが生成されます。
以下はTensorFlow本体とすべてのサンプルモデルをインストールし終えた時点の内容です (2022/3/26時点)。
モジュール版数はインストール日時によって変わることがあるのでご注意ください。
Package Version
----------------------- --------------------
absl-py 1.0.0
astunparse 1.6.3
beniget 0.4.1
cachetools 5.0.0
certifi 2021.10.8
cffi 1.15.0
charset-normalizer 2.0.12
cloudpickle 2.0.0
contextlib2 21.6.0
cppy 1.2.0
cycler 0.11.0
Cython 0.29.28
dataclasses 0.6
flatbuffers 2.0
fonttools 4.30.0
future 0.18.2
gast 0.4.0
gin-config 0.5.0
google-auth 2.6.0
google-auth-oauthlib 0.4.6
google-pasta 0.2.0
grpcio 1.44.0
h5py 3.6.0
horovod 0.23.0
idna 3.3
importlib-metadata 4.11.3
keras 2.7.0
Keras-Preprocessing 1.1.2
kiwisolver 1.3.2
libclang 13.0.0
lvis 0.5.3
lxml 4.8.0
Markdown 3.3.6
matplotlib 3.5.1
numpy 1.22.3+8.g2f1410d
oauthlib 3.2.0
OpenNMT-tf 2.11.0
opt-einsum 3.3.0
packaging 21.3
Pillow 7.2.0
pip 22.0.4
ply 3.11
portalocker 2.0.0
protobuf 3.19.4
psutil 5.9.0
pyasn1 0.4.8
pyasn1-modules 0.2.8
pybind11 2.9.1
pycocotools 2.0.2
pycparser 2.21
pyonmttok 1.31.0
pyparsing 3.0.7
pyter3 0.3
python-dateutil 2.8.2
pythran 0.11.0
PyYAML 6.0
requests 2.27.1
requests-oauthlib 1.3.1
rouge 1.0.1
rsa 4.8
sacrebleu 1.5.1
scipy 1.7.4.dev0+0.38cd478
sentencepiece 0.1.96
setuptools 58.1.0
six 1.16.0
tensorboard 2.8.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit 1.8.1
tensorflow 2.7.0
tensorflow-addons 0.15.0
tensorflow-estimator 2.7.0
tensorflow-hub 0.12.0
termcolor 1.1.0
tf-slim 1.1.0
typeguard 2.13.3
typing_extensions 4.1.1
urllib3 1.26.8
Werkzeug 2.0.3
wheel 0.37.1
wrapt 1.14.0
zipp 3.7.0
Copyright RIKEN, Japan 2021-2022
Copyright FUJITSU LIMITED 2021-2022