早速 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 倍は高速化が達成できていることがわかります。