iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
AI & Data

PyTorch 生態鏈實戰運用系列 第 12

[Day12] Training Log and History

  • 分享至 

  • xImage
  •  

前言

本日的文章將介紹幾個常見的Deep Learning Log system,然後嘗試解決目前模型所看到的問題。

Lightning-Module Log 與 TensorBoard

在前一日的實作中,除了為了讓Callback可以參考metrics作為模型儲存的依據,而增加在validation_epoch_endself.log(val/puroc)以外,相信眼尖的讀者應該有發現,我們也分別在train_stepvalidation_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:

就可以看到先前訓練模型的紀錄囉!

另一個推薦的選擇 -- WandB

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來看看成效!

本日小節

  • 本日介紹兩種使用Training Log的工具
  • 模型看來要繼續訓練

上一篇
[Day11] Build a trainable Lightning-Module
下一篇
[Day13] 資料預處理機制與優化 - 硬體篇
系列文
PyTorch 生態鏈實戰運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言