오늘은 PyTorch에서 쉽게 그래프 등 시각화하여 살펴볼 수 있는 방법들을 소개하려고 한다.
원래 matplotlib 밖에 모르던 때는 귀찮아서 잘 안그렸지만, 확실히 시각화해서 보는게 학습과정 이해에 필요한 것 같다.
아래의 도구들은 귀찮다라는 말을 달고 사는 내가 쓸 정도니까
대부분의 사람들은 좋아하지 않을까...?라는 생각이 든다.☺️
Monitoring tools
학습과정을 트래킹 하기 위한 도구들이다.
Tensorboard
- Tensorflow의 프로젝트로 만들어진 시각화 도구이다.
- 학습 그래프, metric, 학습 결과의 시각화를 지원한다.
Tensorboard 지원 도구
- scalar : metric 등 상수 값의 연속(epoch 단위)을 표시한다.
- graph : 모델의 computational graph를 표시한다.
- histogram : weight 등 값의 분포를 표현한다.
- image : 예측값과 실제값을 비교 표시한다.
- mesh : 3d형태의 데이터를 표현하는 도구이다.
사용 방법
우선 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}
Weight & biases (Wandb)
나도 처음 봤을 때 완디비라고 읽는 줄 알았으나,,,더블유-앤드-비 라고 읽는다고 한다.😮
특징
- 머신러닝 실험을 원활히 지원하기 위한 상용도구이다.
- 협업, code versioning, 실험 결과기록 등을 제공해준다.
- MLOps의 대표적인 툴로 저변 확대 중이다.
설치
!pip install wandb -q
config 설정
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와 동일
'AI' 카테고리의 다른 글
효율적인 Hyperparameter Tuning | Ray (0) | 2024.01.12 |
---|---|
Multi-GPU, Parallel | 용어와 개념 간단한 코드[PyTorch] 와 함께 한방에 정리 (0) | 2024.01.12 |
PyTorch | Model save, checkpoints, freezing (0) | 2024.01.12 |
PyTorch | Dataset & DataLoader (0) | 2024.01.12 |
PyTorch | nn.Module, Parameter, Backward (0) | 2024.01.12 |