오늘은 PyTorch에서 쉽게 그래프 등 시각화하여 살펴볼 수 있는 방법들을 소개하려고 한다.
원래 matplotlib 밖에 모르던 때는 귀찮아서 잘 안그렸지만, 확실히 시각화해서 보는게 학습과정 이해에 필요한 것 같다.
아래의 도구들은 귀찮다라는 말을 달고 사는 내가 쓸 정도니까
대부분의 사람들은 좋아하지 않을까...?라는 생각이 든다.☺️
학습과정을 트래킹 하기 위한 도구들이다.
우선 Tensorboard 기록을 위한 directory를 생성한다.
import os
logs_base_dir = "logs"
os.makedirs(logs_base_dir, exist_ok=True)
기록 생성 객체인 SummaryWriter를 생성한다.
from torch.utils.tensorbard import SummaryWriter
writer=SummaryWriter(logs_base_dir)
for n_iter in ramge(100):
writer.add_scalar('Loss/train',np.random.random(),n_iter)
writer.add_scalar('Loss/test',np.random.random(),n_iter)
writer.add_scalar('Accuracy/train',np.random.random(),n_iter)
writer.add_scalar('Accuracy/test',np.random.random(),n_iter)
writer.flush() # 값을 기록한다 (disk에 쓰기)
add_scalar 함수 : scalar 값 기록
Loss/train : loss category에 train 값
n_iter: x축의 값
jupyter 상에서 tensorboard 수행하고
파일 위치 지정 같은 명령어를 입력한다.
%load_ext tensorboard
%tensorboard --logdir {logs_base_dir}
나도 처음 봤을 때 완디비라고 읽는 줄 알았으나,,,더블유-앤드-비 라고 읽는다고 한다.😮
!pip install wandb -q
config = {"epochs":EPOCHS,"batch_size":BATCH_SIZE,"learning_rate":LEARNING_RATE}
wandb.init(project="my-test-project",entity='~',config=config)
# wandb.config.batch_size = BATCH_SIZE
# wandb.config.learning_rate = LEARNING_RATE
for e in range(1,EPOCHS+1):
epoch_loss=0
epoch_acc=0
for X_batch,y_batch in train_dataset:
X_batch, y_batch = X_batch.to(device),y_batch.to(device).type(torch.cuda.FloatTensor)
...
optimizer.step()
...
wandb.log({'accuracy':train_acc,'loss':train_loss}) # Tensorboard의 add와 동일
파이토치에서 가장 많이 쓰이는 Trainer 패키지로는 pytorch-lightning이 있습니다. 라이트닝에서 지정해준 방식으로 모델을 생성하면 쉽게 로깅을 해주기 때문에 시간이 날 때 사용해보시면 좋을 것 같습니다!
https://pytorch-lightning.readthedocs.io/en/latest/?_ga=2.56561195.1060632747.1643291161-1826384194.1643291161
또한 모니터링 툴로는 데이터브릭스에서 만든 mlflow도 있습니다. 3개의 툴들을 비교해보시는 것도 좋을 것 같습니다!