코드 다섯 줄만 추가해 PyTorch 모델 모니터링하기
PyTorch를 사랑하고 실험 추적도 좋아합니다. 둘 다 쉽게 하는 방법을 소개합니다! 이 글은 AI 번역본입니다. 오역이 있을 수 있으니 댓글로 알려주세요.
Created on September 15|Last edited on September 15
Comment
저는 PyTorch를 좋아하고, 실험을 추적하는 것도 정말 좋아합니다. PyTorch에서 TensorBoard를 쓸 수도 있지만, 다소 번거롭게 느껴질 때가 있죠. 최근에 W&B로 PyTorch 모델을 아주 간단하게 모니터링할 수 있는 기능을 추가했습니다!
PyTorch로 시작했습니다 CIFAR-10 튜토리얼튜토리얼 자체는 훌륭하지만, 원격 서버에서는 이미지를 보여주기 위해 matplotlib을 쓰는 게 번거롭고, 정확도와 손실 곡선을 그려주지도 않으며, 레이어의 그래디언트를 살펴볼 수도 없습니다. 코드 몇 줄만 추가해서 이 모든 문제를 해결해 봅시다!
스크립트 맨 위에 다음 줄을 추가합니다:
import wandbwandb.init()
이렇게 하면 입력 하이퍼파라미터를 추적하고 메트릭과 파일을 저장할 수 있는 W&B 프로세스가 시작됩니다. 또한 stdout과 stderr를 저장하고, GPU 사용량과 기타 시스템 메트릭도 자동으로 추적합니다. 아래는 제 실행 중 하나에서 수집된 GPU 사용량과 온도 그래프입니다:

이제 각 에포크가 끝날 때 로그 명령을 추가해, 네트워크가 각 클래스에서 어떻게 성능을 내는지 쉽게 확인할 수 있습니다:
for i in range(10):print('Accuracy of %5s : %2d %%' % (classes[i], 100 * class_correct[i] / class_total[i]))class_acc["Accuracy of %5s" % (classes[i])] = 100 * class_correct[i] /class_total[i]wandb.log(class_acc)

각 에포크가 끝나면 네트워크가 무엇을 하고 있는지 감을 잡기 위해 예시 이미지를 몇 장 로그합니다. 이 이미지는 메트릭과 똑같이 로그할 수 있습니다. 사실 matplotlib 그래프도 같은 방식으로 로그할 수 있지만, 그건 다음 글에서 다루겠습니다!
example_images = [wandb.Image(image, caption=classes[predicted]) for image,predicted, label in zip(images, predicted, labels)]wandb.log({"Examples": example_images})

네트워크를 정의한 뒤, 저는 이 마법 같은 명령을 사용합니다:
wandb.watch(net)
이제 학습이 진행되는 동안 네트워크의 각 그래디언트에 대한 히스토그램을 확인할 수 있습니다!

각 새로운 PyTorch 실행은 내 테이블에 추가되며, 이를 탐색해 더 깊은 패턴을 발견할 수 있습니다.

Add a comment