本日的文章將介紹幾個常見的Deep Learning Log system,然後嘗試解決目前模型所看到的問題。
在前一日的實作中,除了為了讓Callback
可以參考metrics作為模型儲存的依據,而增加在validation_epoch_end
的self.log(val/puroc)
以外,相信眼尖的讀者應該有發現,我們也分別在train_step
與validation_step
內新增了self.log('train/loss', loss.item())
以及self.log('val/loss', loss.item())
,如此一來便能開啟Lightning-Module在訓練的途中紀錄LOSS的功能。
另外可以在PyTorch-Lightning文件當中,可以看到其實預設是會使用TensorBoard的logger。所以其實先前訓練完會在/home/$USER/workspace/artefacts/weights
內的就包含有TensorBoard的Log檔唷!(主要就是那個event檔)
此時可以使用Jupyter Lab已經設定好的Tensorboard:
就可以看到先前訓練模型的紀錄囉!
TensorBoard可說是最老牌的開源工具,且當然,也有不少可以替代他的工具。在這邊我介紹一個我個人滿喜歡的一個服務WandB(Weights & Biaes)。
有興趣的人可以直接到官網申請帳號,只要在Terminal打入
wandb login
然後輸入辦好帳號以後獲得的API KEY就完成初步的設置了。
接著只要在加到Trainer後就可以使用了
wandb_logger = pl.loggers.WandbLogger(project="iThome2022")
# set trainer
trainer = pl.Trainer(
callbacks = checkpoint_callback,
logger = wandb_logger, # 加在這裡
default_root_dir = CONFIG['train']['weights_folder'],
max_epochs = CONFIG['train']['max_epochs'],
limit_train_batches = CONFIG['train']['steps_in_epoch'],
accelerator = 'cuda',
devices = 1,
profiler="simple")
一樣到這次對應的commit底下,執行
python src/train.py --config=hparams.yaml
(註:這次有更新一些Dockerfile及Docker-compose的內容,建議重新Build,不然可能會有bug)
訓練完以後,登入以後可以在首頁看到目前有跑得實驗們的紀錄
點進去以後就可以到處看看囉!個人覺得最方便的則是可以互動式的去新增自己想看的圖
從上面這張比較Training與Validation的圖當中可以看到,Training很穩定的下降,而validation一開始上升,但後續就跟training十分接近了!評估起來應該是沒有Overfitting的問題。但考慮到auroc還不夠高,而且似乎尚未收斂的狀況,我想應該是太早就停下來訓練所導致。
下次可以訓練多一點Epoch來看看成效!