Sangmun

[MLOps]pytorch lightning에서 wandb 로깅하기 본문

네이버 AI 부스트캠프 4기/MLops

[MLOps]pytorch lightning에서 wandb 로깅하기

상상2 2022. 11. 24. 10:00

https://wandb.ai/cayush/pytorchlightning/reports/Use-PyTorch-Lightning-with-Weights-Biases--Vmlldzo2NjQ1Mw

 

Use PyTorch Lightning with Weights & Biases

In this article, we explore how to use PyTorch Lightning with Weights & Biases so that it's possible to quickly train and monitor models. .

wandb.ai

Pytorch ligntning에서 wandb를 이용하여 실험내용을 로깅하는 것은 매우 간단한다.

 

아래 코드 처럼 wandb_logger class를 선언만 해주고 trainer에 넘겨주기만 하면 되기 때문이다.

from pytorch_lightning.loggers import WandbLogger

# wandb logger
model = Model(your_model_config)
wandb_logger = WandbLogger(name='wandb 대시보드에서 표시되는 이름', 
			project='해당 프로젝트 이름',
            		entity='저장소 이름')
                
wandb.watch(model)

# ligh
trainer = pl.Trainer(gpus=1, # number of gpu
                    max_epochs=10, # number of epoch
                    log_every_n_steps=100, # logging step
                    logger=wandb_logger # wandb logging
                    )

 

기록 하고자 하는 metric등은 pytorch lightning model 안에서 self.log()를 이용하여 기록하는 metric이 되겠다.

def training_step(self, batch, batch_idx):
    x, y = batch
    logits = self(x)
    loss = self.loss_func(logits, y.float())
    
    # self.log() 함수를 이용하여 log를 기록하는 항목들을 wandb_logger가 알아서 받아서
    # wandb 대시보드에 시각화 해준다.
    self.log("train_loss", loss)
    
    return loss

 

 

하지만 맨처음에는 위의 방식으로 로깅을 하면 epoch가 아닌 step별로 로깅이 되는 문제가 있었는데...

step별로 로깅이됨...

 

이는 그냥 wandb 대시보드에서 x축 항목을 epoch로 바꿔주면 되는 문제였다..

오른쪽 위의 X 아이콘에 x축의 범주를 바꾸는 기능이 있다..

Comments