ML/AI/SW Developer

Pytorch(5)-Monitering(Tensorbaord & Weight and Bias)

1. Intro

  • 긴 학습시간… 기다림의 기록이 필요
    • log, csv 등도 활용가능
  • 잘만들어진 도구를 활용하자
    • Tensorboard
    • weigth & biases

2. Tensorboard

  • TensorFlow의 프로젝트로 만들어진 시각화 도구
  • 학습 그래프, metric, 학습 결과의 시각화 지원
  • Pytorch도 연결 가능 $\rightarrow$ 핵심도구

2.1 자주 사용하는 것들

  • scalar: metric 등 상수 값의 연속을 표시 (epoch 마다)
    • Acc, Precision, Recall, Loss, 등
  • graph: 모델의 computational graph 표시
  • histogram: weight 등 값의 분포 표현
  • image: 예측 값과 실제 값을 비교 표시
  • mesh: 3d 형태의 데이터를 표현
import os
logs_base_dir = 'logs' # 로그를 저장할 공간 생성
os.makedirs(logs_base_dir, exist_ok=True)

# 기록 생성 라이브러리 임포트
from torch.utils.tensorboard import SummaryWriter

# 기록을 위한 객체 생성
wirter = SummaryWriter(logs_base_dir)

# 학습 동안 원하는 값을 저장
for n in range(100):
    writer.add_scalar('Loss/train', loss, n)
    writer.add_scalar('Loss/valid', val_loss, n)
    writer.add_histogram('distribution centers', x + i, i)
    writer.add_images('my_image_batch', img_batch, 0)
    writer.add_mesh('my_mesh', vertices=vertices_tensor, colors=colors_tensor, faces=faces_tensor)
# disk에 기록
writer.flush() 

# jupyter notebook 상에서 tensorboard 수행,
# log 파일 위치 지정필요
# 콘솔에서도 동일하게 실행가능
%load_ext tensorboard
%tensorboard --logdir {logs_base_dir}

2.2 Advanced

3. Weight & biases

  • 머신러닝 실험을 원활히 지원해주는 사용도구
  • 협업과 code versioning, 실험 결과 기록 등의 기능 제공
  • MLOps의 대표적인 도구로 진화 중

3.1 설치하기

pip install wandb -q

3.2 활용하기

  • 프로젝트 설정 및 config 설정하기
conf = {'eopch': epochs, 'batch_size': batch_size, 'learning_rate':lr}
wandb.init(project="프로젝트명", config=conf)
# 가입 후 API key 입력 필요
  • 정보 기록하기
for e in range(epochs):
    loss = 0
    acc = 0
    for X, y in dataloader:
        X, y = ...
        ...
        optim.step()
        ...
    # tensorboard의 add와 동일
    wandb.log({'Acc':acc, 'Loss':loss})

wandb.watch(model, log='all') # 모든 Parmeter 관리