[WandB] WandB 기본

 

WandB

  • WandB는 Weights and Bias의 약자로 딥러닝 모델 학습 과정의 loss, 평가 지표 등을 확인할 수 있는 툴로 모델 실험에 도움을 주는 툴이다
  • print문을 통해 여러 지표들을 출력하거나, 시각화하여 표현하는 것이 필요 없이 metric들이 어케 변하는지 쉽게 확인할 수 있다.

WandB 사용해보기

  1. WandB 설치 및 로그인
    • WandB를 사용하려면 먼저 패키지를 설치하고 로그인(API 키 등록)을 진행해야 한다.
    • 우선 wandb를 import해준다. 만약 없다면 pip install wandb로 설치해주면 된다.
    • 그리고 wandb.login() 으로 로그인한다. 로그인 시에 API 키가 필요하다.
    • wandb.login(key = “api 키”) 로 설정할 수 있다. 또는 os.environ["WANDB_API_KEY"]=’api키’ 로 지정하여 환경 변수로 저장해 놓을 수 있다.
  2. WandB 프로젝트 초기화
    • 로그인을 마친 후에는 wandb.init() 으로 프로젝트를 초기화 해줘야 한다.
    • 프로젝트는 직접 WandB 사이트에서 직접 만들 수도 있지만, wandb.init()을 통해 자동으로 생성할 수도 있다.
     wandb.init(
         entity='kdw6177012-naver', # 나의 entity 이름 혹은 team의 이름
         project = 'wandb-practice', # 프로젝트 이름
         name = 'basic-practice', # 실험(run) 이름
         config = { # 해당 실험의 하이퍼 파라미터 등을 기록
             'learning_rate': 1e-2,
             'epochs': 150,
             'batch_size': 16
         }
     )
    
  3. 학습 중 로깅 남기기
    • 위와 같이 프로젝트를 초기화 한 후에는 학습 과정에서 wandb.log() 를 통해 로그를 남겨 준다.
    • 내가 어떤 값을 로깅할지 직접 지정해주면 된다.
    • step은 wandb가 로그의 순서를 인식하는 기준으로, 일반적으로 epoch(학습 단위)나 iteration(배치 단위) 값을 지정한다. 지정하지 않으면 wandb가 자동으로 1씩 증가시키며 관리한다.
     wandb.log({
         "epoch": epoch,
         "train/loss": tr_loss,
         "train/acc": tr_acc,
         "val/loss": val_loss,
         "val/acc": val_acc,
         "lr": optimizer.param_groups[0]['lr']
     }, step=epoch)
    
  4. 학습 종료 후 wandb 종료
    • 학습이 다 끝난 뒤에는 wandb.finish()로 프로젝트를 종료해주면 된다.
    • 모든 로그를 서버로 업로드하고, 대시보드에서 해당 run을 Finished 상태로 마무리합니다.
     wandb.finish()
    
  • 위 과정을 통해 해당 실험의 Loss, Accuracy 등의 metric의 변화를 실시간으로 추적하고 시각적으로 분석할 수 있다.

image