先日の GTC2020においてはいろいろなトピックが公演されており、ここでは日本で実施された、実際にClara を動かしてみようというトピック[A21696]を、当方の視点で振り返ってみようと思い記事にしております。内容のボリュームがありすぎ1時間で説明しようというのは、かなり挑戦的な取り組みだったと思います。
セミナーのあらましとして私が感じ取ったのは、
- 前準備
- まずは、nvidia docker を動かす準備
- 稼働開始
- 必要な docker image と staring data を持ってきて、juypter note book を起動するまで
- 稼働してから何をするのか?
- jupyter notebook にアクセスして、手順通りサンプルを動かしてみる。
- AIAAサーバと3D Slicer を使い、Anotation 操作をしてゆく。
となります。最後の段からは、リンクに張っている、Clara Train Live-Demo というドキュメントに沿って説明されるのですが、まず最初のデモを実行するファイル群がダウンロードできません。ただ、このセミナー自体は、
を基に作成されているはずですので、これを読み進めていくと、最後の付録のところにやっとそれらしき項目が出てきます。
Clara Train - Getting started with a Cloud Service Provide
そこには、実際にどうやって、Public クラウドで Clara の実行を試すことができるかが書かれています。内容自体は Cloud で実行する必要なく、最低必要な環境は、
1. Nvidia docker 18+
2. User is in the docker group. ( you can check by typing `groups` in the terminal, you should see `docker`)
3. One or more Nvidia GPU. (2+GPUS are recommended for advanced features as AutoML).
とのことですから、Nvidia Docker ready のマシンがであればたいていは動作するだろうということわかります。
次にやることは、Getting Started Script をダウンロードすることです!(これにたどり着くまでに時間がかかりました!)
https://ngc.nvidia.com/catalog/resources/nvidia:med:clara:getting_started
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/med/getting_started/versions/1/zip -O getting_started_1.zip
そして、download した gettings_started__1.zip を適当なディレクトリに展開し、下記のルールで実行するわけです。
./startDocker.sh <portForNotebook> <gpulist> <AIAA_PORT>
cd scripts bash ./startDocker.sh 8890 '0,1,2,3' 5000
例えば、DGX OS Server 5 の環境で実行すると、
clara-test@dgx1v50:~/getstart/scripts$ bash ./startDocker.sh 8890 '0,1,2,3' 5000
-----------------------------------
starting docker for nvcr.io/nvidia/clara-train-sdk:v3.0 using GPUS 0,1,2,3
-----------------------------------
starting please run ./installDashBoardInDocker.sh to install the lab extensions then start the jupeter lab
once completed use web browser with token given yourip:8890 to access it
Unable to find image 'nvcr.io/nvidia/clara-train-sdk:v3.0' locally
v3.0: Pulling from nvidia/clara-train-sdk
5667fdb72017: Pulling fs layer
d83811f270d5: Pulling fs layer
ee671aafb583: Pulling fs layer
7fc152dfb3a6: Waiting
dbc57626691b: Waiting
e20092842144: Waiting
d64c76da70d5: Waiting
429f0b34bf97: Waiting
39d853a0098c: Waiting
dc9dfc23df66: Waiting
1a32524cb863: Waiting
d3d394313ced: Waiting
857b6050fd78: Waiting
3a51649b9b50: Waiting
885e286ed6cc: Waiting
62be33d17790: Waiting
6a7d05a28b83: Waiting
11ff4c1b1e9b: Pulling fs layer
252fb308c785: Waiting
4749ee710260: Waiting
47668c0cb079: Waiting
4f9ec6b1521d: Waiting
292b425b68e8: Waiting
93e46b746825: Waiting
9334b2469b1a: Pulling fs layer
a9d3427ef8f1: Waiting
0a91c68ff9a1: Waiting
f5f626660a65: Waiting
e16685627c50: Pulling fs layer
99dfb0f50bad: Waiting
5e0430538e53: Waiting
c3c3189112dc: Waiting
0a9b551dba88: Waiting
dd23726b6281: Waiting
bcf5e26ee78d: Waiting
57897222b520: Waiting
35cf7ceb758a: Waiting
9fe8816ccbaf: Waiting
568529d84601: Waiting
feac13e821f0: Waiting
63bf01aa2e10: Pulling fs layer
8237dc0aa519: Waiting
e08f7bfdba39: Waiting
5dbebdcd9dd4: Waiting
10b59eb6c0e7: Waiting
4321391484e3: Pulling fs layer
e34075c0c812: Waiting
5c3fd4b3c64e: Pulling fs layer
5773b85768cb: Waiting
8a463a607b0d: Waiting
5c41a81fbb6e: Waiting
e36b20174218: Pulling fs layer
d6bb84f1169f: Waiting
6bb825deb8a9: Waiting
01ee13459f0e: Waiting
4fa013da199b: Pulling fs layer
a62afce2d344: Waiting
480282b992b1: Waiting
2f94baa14ffe: Waiting
eb272cd761dd: Waiting
a8494a349af6: Waiting
a11b5605d0d6: Waiting
7a5d03ee7ce5: Waiting
b4c087b35334: Waiting
913dbe33ddb0: Waiting
5cd9e9488409: Pulling fs layer
b3ef5d01df03: Waiting
9b2535eeb94c: Waiting
c023baf1b469: Waiting
6b7432d01360: Waiting
03ab8f428549: Pulling fs layer
ce6aa4b56297: Pulling fs layer
d28be18cb7b8: Waiting
80736fbe77ce: Waiting
a5896ade2941: Pull complete
49599169fa47: Pull complete
7bf7ff836426: Pull complete
4db3d1afd038: Pull complete
3c174de81957: Pull complete
4fac5e4fdc02: Pull complete
69e6ca08f03e: Pull complete
88fe0d048b8a: Pull complete
973ed82e78ff: Pull complete
8a40c2b0da69: Pull complete
15561e315253: Pull complete
c932b0fabd1d: Pull complete
eb081e209b8c: Pull complete
1749189c9773: Pull complete
a5d1a52cac6a: Pull complete
06fcb0eb5b34: Pull complete
fd86186f22b9: Pull complete
ebf4541c69bb: Pull complete
af9dbc4eed3a: Pull complete
7d12a3572637: Pull complete
96b3b2ae8e7f: Pull complete
693d9dd52a58: Pull complete
d8e624108b6d: Pull complete
Digest: sha256:23cef5514b585e5e8c383e74ce1491190ef51d3023e236f1bc22b5de7972140a
Status: Downloaded newer image for nvcr.io/nvidia/clara-train-sdk:v3.0
================
== TensorFlow ==
================
NVIDIA Release 19.10 (build 8471601)
TensorFlow Version 1.14.0
Container image Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
Copyright 2017-2019 The TensorFlow Authors. All rights reserved.
Various files include modifications (c) NVIDIA CORPORATION. All rights reserved.
NVIDIA modifications are covered by the license terms that apply to the underlying project or file.
ERROR: Detected MOFED driver 5.1-2.4.6, but this container has version 4.4-1.0.0.
Unable to automatically upgrade this container.
Use of RDMA for multi-node communication will be unreliable.
root@79d4ea70a040:/claraDevDay/scripts#と表示されるようになります。5.0 と 4.x 系では、Infiniband driver のバージョンが異なるのでさすがに、IB を使いノードをまたがった、マルチGPUを使うことは執筆状況(2020/12月初頭)では対応していませんが、Tensorflow は Horovod に対応しているので、OSを適合環境に下げるか適合した Docker container の組み合わせがあれば IBを使いほかのノードと通信できる可能性はあります。それはまた機会があったら試すとして、まずはダッシュボードを立ち上げてみましょう。
bash ./claraDevDay/scripts/installDashBoardInDocker.sh
しばらくすると、次のように表示されます。
To access the notebook, open this file in a browser:
file:///root/.local/share/jupyter/runtime/nbserver-623-open.html
Or copy and paste one of these URLs:
http://hostname:8888/?token=f224d1a8df7525d2cb425db670e1fccf926ad60282a2aa628888 にアクセスするよう書かれていますが、 docker で port 変換が行われているので、8890 にアクセスすべきでしょう。
今回のテストでは、teraterm の ssh のport forward 転送を使い、リモートホストの 8890 を localhost の 8890 と接続したうえで、ウエブブラウザで localhost:8890 に接続すると。

そちらにアクセスして最初に行うことはテストデータのダウンロードになります。

まずはデータをダウンロードしてみましょう。書かれている通りにステップを踏むだけですので、Play ボタンを押していきましょう。

ステップが実行中はアスタリスマークが[*]、終われば、python のステップ数[1] が出てきます。ステップ数が出てくれば次に進みます。
ここでは、どんなデータについてデモンストレーションをするかが記載されています。取り扱うデータは
の Download Data のなかで Task09_spleen.tar であることが記載されています。
https://drive.google.com/drive/folders/1HqEgzS8BV2c7xYNrZdEAnrHk7osJJ--2
ここにアクセスすることで、Task09_spleen.tar 脾臓のCT画像データがダウンロードできます。このデータは Slicer でどんなデータか見ることもできますので。
から手元の環境に合わせたバイナリーをダウンロード、インストールをしてみて先に確認してもいいかもしれません。
では次回は、Welcome.ipynb からのステップを実際にやってみたいと思います。