더 이상 tistory 블로그를 운영하지 않습니다. glanceyes.github.io에서 새롭게 시작합니다.

새소식

AI/AI 기본

PyTorch에서 자주 사용하는 학습 과정 및 결과 모니터링 Tool

  • -

 

2022년 1월 24일(월)부터 28일(금)까지 네이버 부스트캠프(boostcamp) AI Tech 강의를 들으면서 개인적으로 중요하다고 생각되거나 짚고 넘어가야 할 핵심 내용들만 간단하게 메모한 내용입니다. 틀리거나 설명이 부족한 내용이 있을 수 있으며, 이는 학습을 진행하면서 꾸준히 내용을 수정하거나 추가해 나갈 예정입니다.

 

 

Monitoring Tools for PyTorch

Untitled 6

모델 학습은 보통 아주 오랜 시간이 걸리므로 올바른 방향으로 학습이 진행되고 있는지 확인할 수 있는 기록이 필요한데, 이를 위해 자주 쓰이는 도구로는 크게 TensorBoard와 Weight & Biases가 존재한다.

 

TensorBoard

  • TensorFlow의 프로젝트로 만들어진 시각화 도구이다.
  • Pytorch도 연결 가능해서 DL의 시각화 핵심 도구이다.
  • 학습 그래프(computational graph), metric, 학습 결과를 시각화할 수 있다.
  • 자주 사용하는 기능

 

keyword 기능
scalar scalar : metric(ACC, loss)등 상수 값의 연속(epoch별로)을 표시
graph 모델의 computational graph 표시
histogram weight 등 값의 분포를 표현
image 예측 값과 실제 값을 비교
mesh 3d 형태의 데이터를 표현하는 도구

 

사용 예시 코드

import os
# 기록을 저장할 폴더 생성 및 지정
logs_base_dir = 'logs'
os.makedirs(logs_base_dir, exist_ok = True)

# 기록 생성 객체 SummaryWriter 생성
from torch.utils.tensorboard import SummaryWriter
import numpy as np

# 하나의 base_dir 안에 여러 실험을 기록하게 되면, 해당 폴더로 tensorboard를 열었을 때 쉽게 비교가 가능하다.
exp = f"{logs_base_dir}/ex1"
writer = SummaryWriter(exp)

# add_scalar는 scalar 값을 기록
for n_iter in range(100):
  writer.add_scalar("Loss", loss, n_iter)
  writer.flush() # writer.close()의 역할

# colab 또는 jupyter-notebook상에서 TensorBoard를 볼 수 있다.
# 또는 TensorBoard 설치 후 저장한 파일을 열어볼 수 있다. (port 6006)
%load_ext tensorboard
#tensorboard --logdir={logs_base_dir}

 

 

Weight & Biases

머신러닝 실험을 원활히 지원하기 위한 상용도구이며, 협업, code versioning, 실험 결과 기록 등 다양한 기능을 제공한다. MLOps의 대표적인 툴로 저변을 확대하고 있다.

 

설치 과정

[협업/MLOps] Weight & Biases

 

[협업/MLOps] Weight & Biases

Weight & Biases는 머신러닝 실험을 지원하기 위한 상용 도구로, 기본적인 기능들만 무료라고 한다. 기계학습의 모니터링 도구라는 점에서 Tensorboard와 유사하지만, 프로젝트 단위로 저장 및 공유가

mingchin.tistory.com

 

사용 예시 코드

!pip install wandb-q

# config 정보 dict로 넣어주거나 그 아래처럼 직접 할당하기
config={"epochs":EPOCHS,"batch_size size":BATCH_SIZE,"learning_rate rate":LEARNING_RATE}
wandb.init(project="my-test-project",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()
    #…
# tensorboard의 add_scalar 함수와 동일한 역할
wandb.log({'accuracy':train_acc,' loss':train_loss})

 

 

Contents

글 주소를 복사했습니다

부족한 글 끝까지 읽어주셔서 감사합니다.
보충할 내용이 있으면 언제든지 댓글 남겨주세요.