NVIDIA Claraの使い方(その2)
NVIDIA Clalaの使い方(その1)の続編です。 医用画像処理における AI の開発と導入を加速するNVIDIAのアプリケーションフレームワーク「NVIDIA Clara™ Imaging」についてDGXで利用するまでを詳しく解説します。
Clara Train SDK(その2: Welcome.ipynb: Getting Started)
早速 Welcom.ipynb を開いてみましょう。
赤枠のところが、Clara Train SDK ということなので、まずはここから、CTスキャンで取得した生画像に、部位分けした部分がどのような権能を持っているかをラベルを付け(Annotated)をおこない、様々なデータを学習させることで、データ分別を自動化すること目的だとわかります。
つぎに、GPU の負荷状況をモニタリングするツールについて説明があります。
ブラウザの左側、PCIカードのようなタブを押してみると、TeslaV100, T4 のようなモニタリングに対応しているGPU を使っていれば状況観察が出てきますが、そうではなければ出てきません。また、このコンテナを動作させる状況にも依存しており、 cuda10.2 の Nvidia Driver 環境でこのコンテナを動作させることを念頭に作られているため、cuda11.1 の場合には、python のモジュール構築にエラーが出ています。本筋的にはこのようなアプライアンス的な動作をさせるには、参照環境下で動作させることを推奨します。ただ、当方は、どのあたりに限界があるのかを探す必要もあるため、修正を加えることにしました。その1では、jupyter labを起動させるために ./installDashBoardInDocker.sh を実行していますが、これを次のように修正します。
#!/usr/bin/env bash
/usr/bin/python -m pip install –upgrade pip pip install jupyterlab-nvdashboard jupyter labextension install jupyterlab-nvdashboard echo —————— echo ——jupyterlab intallation completed echo —————— echo — fix bokeh issue downgrad to 1.4.0 #pip uninstall -y bokeh #pip install bokeh==1.4.0 echo —————— bokeh installed nvidia-smi echo ——————
jupyter lab /claraDevDay –ip 0.0.0.0 –port 8888 –allow-root –no-browser |
修正したら無事に出てくることが分かったので先に進むことにします。
大項目が4つあり、本家ではすべて解説していますが、日本では1,3について解説されてあったので、まず、1.Getting Started からやってみることにします。
-> Getting Started をクリックすると。
Clara Train SDK のあらましが説明されています。ここでは、
・Medical Model ARcivie(MMAR)の理解
つまり、
ROOT config config_train.json config_validation.json environment.json commands set_env.sh train.sh train_finetune.sh train_2gpu.sh train_2gpu_finetune.sh infer.sh validate.sh export.sh resources log.config … docs license.txt Readme.md … models (all forms of model: checkpoint, frozen graphs, saved model, TRTIS manifest) model.ckpt.meta, model.ckpt.index, model.ckpt.data tensorboard event files model.frn.pb, model.trt.pb |
この構造を持った、ディレクトリ群を使って作業をすることを理解し
・この中の、config 下の json ファイルで環境構築を行い
・1つまたは複数のGPUを使って学習を行ってみて
・学習済みモデルを作り上げる。
・そのモデルを使ってテストデータをもとに、推論をしてみましょう
となります。このコースが終わってからどうするかや、AutoML を使った自動化については、GTC2020へのログインができるのであれば、公演番号 s22563 でそこから先も解説されています。これはまたやってみることにしたいと思います。
このサンプルで使用しているデータセットは spleen :脾臓になります。具体的なデータは、
http://medicaldecathlon.com ここにアクセスして、Download data から取得できます。
https://drive.google.com/drive/folders/1HqEgzS8BV2c7xYNrZdEAnrHk7osJJ–2
ディレクトリにある、Task09_Spleen.tar が具体的なデータになります。これは、(その1)のデータダウンロードに書かれているとおりです。
レッツポチポチ:MMARの理解:
Play ボタンを押していき、MMAR の構造、どのあたりを編集する必要があるかを理解します。
config_train.json をいろいろ修正すればいいということがわかってきます。ここで解説している、MMAR の Rootディレクトリは、MMARs/GettingStarted なわけですから、その config/ 下 trn_base.json に確かにそれらの内容が記載されていることがわかります。
次に、TnsorBoard をスタートさせるのはいいのですがこの段階では学習はスタートしていないので、何も表示されません。
この状態で待機させ、次の学習ステップが進んでから参照してみましょう。
レッツポチポチ:学習開始:
開始から、終了まで V100 16GB で、
Total time for fitting: 376.33s Best validation metric: 0.12738775701025734 at epoch 1 2020-12-01 03:06:49,321 – nvmidl.utils.train_conf – INFO – Total Training Time 380.4172296524048 |
実行時間は6分から7分程度になります。流れだけ追うなら、あとは、play ボタンをポチポチ押すだけで、chekpoint file のexport, 学習済みモデルの評価、そして、画像データを使って、推論をしてみるという流れになります。
最後の項目が、複数の GPU を使用した学習の高速化です。Horovod は複数のノードを束ねて計算を高速化させるフレームワークですが、今回の検証はそこまでは考えてないので、1台、4GPU でどこまで高速化するか見てみましょう。
練習というところで、
train_2gpu.sh を編集してみて 4 GPU にしてどうなるか試してみようというのがあります。リンクになってますので、train_2gpu.sh をクリックすると、
ファイルの記載内容が表示されます。この、2 -> 4 に修正し、Ctr-S でファイルの保存修正になりますので、再度 train_2gpu.sh を実行してみると、
Best validation metric: 0.14018323383431297 at epoch 2
2020-12-01 05:47:14,761 - nvmidl.utils.train_conf - INFO - Total Training Time 136.937926530838
380 secから見て、 1/4 にはなっていませんが、137 sec ですので、2.77 倍は高速化が達成できていることがわかります。
~「NVIDIA Clalaの使い方(その3)」(12/11掲載予定)へつづく~
内田盛久
ジーデップ・アドバンス エンジニアリングフェロー 兼 ULGS株式会社代表
京都大学大学院工学研究科を経て20年以上HPCの仕事に携わり、国プロ絡みの大規模案件を多数経験。 HPCクラスターやGPUクラスターの構築、HPC系ジョブスケジューラーの運用に強いノウハウを持つ。 2021年からジーデップ・アドバンスにおけるUbuntuOSのサポートサービス「UGDEP」の提供を開始予定。