Translate

ラベル fugaku の投稿を表示しています。 すべての投稿を表示
ラベル fugaku の投稿を表示しています。 すべての投稿を表示

2022年1月12日水曜日

富岳上でTensorFlowサンプルを動かす



前記事

「富岳上に tkinter が使用可能な TensorFlow 2.2.0 をインストールする方法 」
https://fight-tsk.blogspot.com/2021/12/tkinter-tensorflow-220.html


では、TensorFlow2.2.0が動作する環境をPythonともども富士通提供のソースコードからコンパイルして構築した。

富士通提供の富岳でも動作する TensorFlow ソースコード(a64fxブランチ)
https://github.com/fujitsu/tensorflow/tree/fujitsu_v2.2.0_for_a64fx



では、ビルドした環境が正常に動作するのかを確認するにはどうすればいいか。

そのために(?)提供されているのが fcc_build_script/sample_script にあるサンプルコード群である。



ここには

  • 01_resnet
  • 02_OpenMNT
  • 03_Bert
  • 04_Mask-R-CNN

の4つのサンプルコードが用意されている。

これらのディレクトリ内にはバッチスクリプトが提供されており、順番に富岳の計算ノード上で動かせば実行できる


..と思ったのだが、なかなか動作しない。

ここでは、2022/1/12時点の環境で実行するために修正をいれた内容を紹介する。


全体共通


env.src の編集


サンプルコードのスクリプトは基本的に fcc_build_script/env.src を使用する。
このため、env.srcが富岳の環境に合致するように環境変数を変更しておく必要がある。

以下、前記事でも書いた2022/1/12時点で動作した修正箇所である。

PREFIX=${HOME}/.local/aarch64
TCSDS_PATH=/opt/FJSVxtclanga/tcsds-1.2.33
VENV_PATH=${HOME}/.local/aarch64/venv/tensorflow
PREFIXやVENV_PATHは各自のホームディレクトリの使い方で異なるので、それぞれに合わせて変更しておく。

01_resnet

10_setup_resnet.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM --mpi "proc=1"
#PJM -S

11_train_resnet-single.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM --mpi "proc=1"
#PJM -S
富岳のスレッドは8でそのうち0から3の4つは使用できないので、NUMA_NODEを修正する。
NUMA_NODE=4

12_train_resnet-4process.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。
また、複数プロセスの実行となるのでmpiオプションなどが異なっていることに注意のこと。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S
#PJM -L "node=1:noncont"
#PJM --mpi "shape=1,proc=4"
#PJM -j

ステップジョブ実行

ログインノードで 01_resnet ディレクトリ上にてステップジョブ実行する。

chmod +x ./*.sh
pjsub --step 10_setup_resnet.sh
pjsub --step --sparam "jid=XXXXXXX" 11_train_resnet-single.sh
pjsub --step --sparam "jid=XXXXXXX" 12_train_resnet-4process.sh

02_OpenNMT

20_setup_OpenNMT の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM --mpi "proc=1"
#PJM -S

21_train_OpenNMT_Transformer-single.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -L "node=1"
#PJM -S
富岳のスレッドは8でそのうち0から3の4つは使用できないので、NUMA_NODEを修正する。
NUMA_NODE="4,5"

22_train_OpenNMT_Transformer-2process.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM --mpi "shape=1,proc=2"
#PJM -S
環境変数MPIには、並列プログラム実行プレフィックスが格納されている。
デフォルトではなぜか富岳上のmpirunではサポートされていないオプション --display-map 、 --display-allocation 、 --map-by が付いているのでこれらを除去する。

  MPI="mpirun -np 2"

ステップジョブの実行

ログインノードで 02_OpenNMT ディレクトリ上にてステップジョブ実行する。

chmod +x ./*.sh
pjsub --step 20_setup_OpenNMT.sh
pjsub --step --sparam "jid=XXXXX" 21_train_OpenNMT_Transformer-single.sh
pjsub --step --sparam "jid=XXXXX" 22_train_OpenNMT_Transformer-2process.sh

03_Bert

300_setup_bert.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

311_create_pretraining_data.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

312_run_pretraining.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

numactl のオプションは変更しなくても良い(使われていないので)。

313_run_pretraining-2process.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM --mpi "shape=1,proc=2"
#PJM --mpi "max-proc-per-node=4"
#PJM -S
環境変数MPIから富岳上のmpirunに実装されていないオプションを除去する。
MPI="mpirun -np 2"

321_create_finetuning.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

322_run_finetuning.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S
環境変数NUMAは使用されていないのでそのままでもよい。

323_run_finetuning-2process.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#!/bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM --mpi "shape=1,proc=2"
#PJM --mpi "max-proc-per-node=4"
#PJM -S
環境変数MPIから富岳上のmpirunに実装されていないオプションを除去する。
MPI="mpirun -np 2"

ステップジョブの実行

ログインノードで 03_bert ディレクトリ上にてステップジョブ実行する。

chmod +x ./*.sh
pjsub --step 300_setup_bert.sh
pjsub --step --sparam "jid=XXXXX" 311_create_pretraining_data.sh
pjsub --step --sparam "jid=XXXXX" 312_run_pretraining.sh
pjsub --step --sparam "jid=XXXXX" 313_run_pretraining-2process.sh
pjsub --step --sparam "jid=XXXXX" 321_create_finetuning.sh
pjsub --step --sparam "jid=XXXXX" 322_run_finetuning.sh
pjsub --step --sparam "jid=XXXXX" 323_run_finetuning-2process.sh

04_Mask-R-CNN

libxml2/libxsltのコンパイル

Mask R CNN のトレーニング処理を実行するためには、contextlib2 というPythonパッケージが必要になる。その前提としてlibxml2/libxsltライブラリが必要となるため、先にホームディレクトリ内でコンパイル・インストールする。
http://xmlsoft.org/downloads.html からlibxml2とlibxsltのソースコードをダウンロード
富岳上へソースをコピーし展開(以下では ${HOME}/.tmp 直下に2つとも展開し${HOME}/.local/aarch64へインストールする前提での記述となる)する。
 
cd ${HOME}/.tmp/libxml2
make clean
source ${PYTHONHOME}/bin/activate
./autogen.sh --prefix=${HOME}/.local/aarch64 --with-python-install-dir=${HOME}/.local/aarch64/venv/tensorflow
make
make install
cd ../libxslt
./autogen.sh --prefix=${HOME}/.local/aarch64 --with-python-install-dir=${HOME}/.local/aarch64/venv/tensorflow
make
make install

40_setup_mask-r-cnn.sh の編集

スクリプト先頭のPJMコメントを以下のように修正する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

41-0_download_traindata.sh の編集

スクリプト先頭のPJMコメントを以下のように追加する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

41-1_setup_traindata.sh の編集

スクリプト先頭のPJMコメントを以下のように編集する。
なお rscunit は各自の環境に合わせて編集すること。 

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

42_train_maskrcnn_single.sh の編集

スクリプト先頭のPJMコメントを以下のように編集する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -S

43_train_maskrcnn_multi.sh の編集

スクリプト先頭のPJMコメントを以下のように編集する。
なお rscunit は各自の環境に合わせて編集すること。

#! /bin/bash
#PJM --rsc-list "node=1"
#PJM --rsc-list "rscunit=rscunit_ft99"
#PJM --rsc-list "rscgrp=small"
#PJM --rsc-list "elapse=72:00:00"
#PJM -L "node=1:noncont"
#PJM --mpi "shape=1,proc=2"
#PJM -S
環境変数MPIRUNから富岳上のmpirunに実装されていないオプションを除去する。
MPIRUN="mpirun -np 2"

ステップジョブの実行

ログインノードで 04_Mask-R-CNN ディレクトリ上にてステップジョブ実行する。

chmod +x ./*.sh
pjsub --step 40_setup_mask-r-cnn.sh
pjsub --step --sparam "jid=XXXXX" 41-0_download_traindata.sh
pjsub --step --sparam "jid=XXXXX" 41-1_setup_traindata.sh
pjsub --step --sparam "jid=XXXXX" 42_train_maskrcnn_single.sh
pjsub --step --sparam "jid=XXXXX" 43_train_maskrcnn_multi.sh

以上

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

参考

2021年6月30日水曜日

富岳上で実行したジョブの開始・終了・ステータスをSlackで受ける

富岳上でジョブを実行する際に pjsub コマンドを使います。


pjsub には様々なオプションがあるのですが、このなかに指定イベントごとにメールを送信するオプションがあります。


オプションの詳細は man pjsub を参照してください。たくさんあります。



これと SlackアプリのEmailを組み合わせれば、メールではなく直接Slackへのメッセージとして受け取ることができます。

Slack アプリ Email
https://slack.com/apps/A0F81496D-email?tab=more_info
 

Slackアプリサイトにてインストールボタンを押して、どのチャネルへ送信するかを指定すると、送信先メールアドレス(ex. hogehoge@workspace_name.slack.com)を受け取ることができます。

pjsub の引数に -m b,e,s --maillist "hogehoge@workspace_name.slack.com" と指定すればOK。

引数にいちいち指定するのが面倒くさい場合は、ジョブスクリプト上部のPJMオプション指定箇所に、以下のように指定すればOKです。

#!/bin/bash
:
#PJM -m b,e,s
#PJM --mail-list "
hogehoge@workspace_name.slack.com"
#PJM -S
:

-mの後ろがメール送信が発生するイベントを指定しています。ここでは開始、終了、ステータスを指定していますが、ほかのイベントについては man pjsub の -m の箇所を読んでください(-Sは、ステータスを表示させるために必要)。

p.s.

実行ジョブ監視にログインノード上で watch pjstat -E している人も多いと思うのですが、おそらく私のネットワーク環境の問題だと思いますが、SSH接続がたまにぷつんと切れてしまうので..メールへ送ってましたが..ジョブスクリプト開発中はやたらめったらpjsubするので、ほぼスパムメール状態に..

 

あと、たくさんの種類のジョブを投げる人はジョブ名をつけたほうがよいとおもいます。

pjコマンドは宣言的な設計になっており、APIもあるのでIPリーチャブルな環境にあるCIサーバ(BLUE WATERのWebinerで紹介していたjenkinsみたいなやつ、スパコンの場合はslumというのがあるそうですが..よく知りません)があれば、CI管理画面上で完結できるので、たぶんそちらが正解なのかもしれませんが..


2021年6月29日火曜日

富岳でホームディレクトリの.sshを削除してしまった件

今回の情報は..役に立つ人がいるのか、わかりませんが、忘備録としてのこしておきます。



スーパーコンピュータ富岳上でいろんなジョブを実行していたのですが、
うっかりそのジョブの中で~/.sshを消してしまいました。

そうするとどうなるかというと..

次にSSH接続するときにエラーになって接続できなくなります。


でヘルプデスクへ問い合わせたところ公開鍵を再登録してくれという返事が..


富岳では、以下の2つの手順をおこないます。
・クライアントPC側のPuTTY Genなどで鍵ペアを作成
・利用者ポータルにて公開鍵登録


すでに鍵ペアは作成済みであるので、2番めの項目のみを実行します。

・クライアントPC側のブラウザから富岳ポータルを開く
・利用者ポータルリンクをふむ
・publickey registration リンクをふむ
・鍵ペア作成時に取得した公開鍵文字列をコピー&ペースト
・Registerボタン押下


これでホームディレクトリの.sshディレクトリ内に公開鍵に関する情報が登録されます。
あとは再度クライアントPCからユーザID、パスフレーズをつかってSSH接続しなおせばOKです。

 

ほかの公開鍵で接続する場合もにたようなポータルサイトのような機能をもつことがおおいので、富岳以外の場合もあせらずまずポータルに公開鍵登録機能がないかしらべてみてください。

2021年5月25日火曜日

富岳にdonkeycarパッケージをインストールする

 表題の手順をgithub上に公開しました。

GitHub: Donkeycar on Fugaku
https://github.com/coolerking/donkeycar_on_fugaku



去年あたりからニュース画像でもおなじみになってきたスーパーコンピュータ富岳ですが、OSSを使った計算を行う場合は多少厄介になります。

すでにインストール済みのものであればよいのですが、未インストールであり、さらに依存関係のあるOSパッケージ管理ツール管理化のパッケージを使用する場合、一般ユーザの許可されている権限でなんとかしないといけないので、いろいろややこしくなります。

自分が思いつく方法は、以下の2種類になります。
 

  • ホームディレクトリ上でソースからコンパイル
  • spack を使ってコンパイル&インストール


ホームディレクトリ上にソースコードを展開して、手動でビルドするときに、`--prefix` オプションでホームディレクトリ上のサブディレクトリ(ex. `~/local/aarch64fx` )にして`make install`したときにこのディレクトリに書き込まれるようにする方法です。

自分は Slackware 時代からのLinuxユーザなので、この手の手順にはなれていますが、依存関係のあるパッケージをたどっていくと..やがて LLVM まで到達してしまい、この方法であっているのか?..と。

で、富岳ポータルサイト(登録ユーザのみが参照可能)のコンテンツを調べ直したところ、Spackを使うことを推奨しているようです。

Spackは、スーパーコンピュータ上でOSSをインストールするためのツールで、Pythonで動作します(富岳にも最初からインストールされている)。なので、http://github.com/spack/spack.git をチェックアウトするだけで動作します。

Spackはpyenvやvirtualenv、condaなどのように"環境"を作ることができるので、デフォルトの環境ではなく、用途に合わせて個々の"環境"を作ることができます(削除もコマンド1発)。この"環境"の中にインストールすればOKです。最初の環境であるルート環境に入るには、用意されたセットアップシェルを実行します。

# インストール
git clone https://github.com/spack/spack.git ~/spack
cd ~/spack
git checkout releases/<使いたいバージョン>

# ルート環境に入る
. ~/spack/share/setup-env.sh


これでspackコマンドが使用可能になります。

独自の"環境"を作る場合も、spackコマンドを使用します。

# 環境 hogehoge を作成する
spack env create hogehoge
# 環境 hogehoge に入る
spack env activate hogehoge
# インストール可能なOSSパッケージをリスト
spack list
# インストール済みパッケージのリスト
spack find
# openblasパッケージをインストール
spack install openblas
# 環境 hogehoge から抜ける(ルート環境にもどる)
spack env deactivate
# 環境 hogehoge を削除する(確認なし)
spack env remove hogehoge


spack install で指定する引数によっては、OSSバージョン、使用するコンパイラおよびバージョン、リンクオプションなどを指定可能です。

# 富岳ではterminfoをリンクする場合-ltinfoを使う
spack install mesa ldlibs="-ltinfo"


spack install されると、~/spack/var/spack/environments/<Spack環境名>/.spack-env/view以下のbin、libやincludeへインストールされます。これらへのパスなどの環境変数はspack env activate時にセットされます。

ただし、pipからフォークされるcmakeなどのオプションにまで到達しない場合があるので、個別にセットする必要があるケースもあります(Pythonパッケージをpipでインストールする際には内部でcmakeすることがあります)。このあたりはトライ&エラーでみつけていくしかありません。

Pythonパッケージの一部もspackからインストールできます。もちろんpipも可能ですが、一般ユーザではグローバルインストールはできないので、--userオプションを付けないと動きません。


富岳は会話型とジョブ型の2種類の実行方法がありますが、spack installが会話型だと制限時間内に終わらないことがあるため、それなりのボリュームのパッケージはジョブ型で実行(pjsubコマンドでシェルを実行)する必要があります。


あと、TensorFlow2.2.0/PyTorch1.7.0はあらかじめインストールされたパスが公開されているので、これらへパスを変更することで使用可能になります。Spackでもインストールできそうですが、富岳管理者が提供しているので、コンパイラ最適化オプションをきちんとつけて作成している(..とおもいます)はずなので、こちらをつかうほうがよいでしょう。

執筆時点のTensorFlow2.1.0は、pipが移動元パスになっているので、使用するには工夫が必要。


なのでvirtualenvなどのPython環境と、Spack環境を併用するのがよいと、私は判断しました。最初に紹介したGitHub上のスクリプトも、それを前提に作成しています。

細かい使い方はSpackのドキュメントを参照してみてください。チュートリアルもありますし、Youtubeに英語ですが概要紹介のセッション動画も投稿されています(字幕翻訳させれば内容はわかるとおもいます)。



 

 

ご参考まで。

Google Colab相当の環境をローカルPC上のDocker Composeで実現する

 Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた: コンテナイメージとして a...