WandB
- WandB는 Weights and Bias의 약자로 딥러닝 모델 학습 과정의 loss, 평가 지표 등을 확인할 수 있는 툴로 모델 실험에 도움을 주는 툴이다
- print문을 통해 여러 지표들을 출력하거나, 시각화하여 표현하는 것이 필요 없이 metric들이 어케 변하는지 쉽게 확인할 수 있다.
WandB 사용해보기
- WandB 설치 및 로그인
- WandB를 사용하려면 먼저 패키지를 설치하고 로그인(API 키 등록)을 진행해야 한다.
- 우선 wandb를 import해준다. 만약 없다면
pip install wandb로 설치해주면 된다. - 그리고
wandb.login()으로 로그인한다. 로그인 시에 API 키가 필요하다. wandb.login(key = “api 키”)로 설정할 수 있다. 또는os.environ["WANDB_API_KEY"]=’api키’로 지정하여 환경 변수로 저장해 놓을 수 있다.
- 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 } ) - 로그인을 마친 후에는
- 학습 중 로깅 남기기
- 위와 같이 프로젝트를 초기화 한 후에는 학습 과정에서
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) - 위와 같이 프로젝트를 초기화 한 후에는 학습 과정에서
- 학습 종료 후 wandb 종료
- 학습이 다 끝난 뒤에는
wandb.finish()로 프로젝트를 종료해주면 된다. - 모든 로그를 서버로 업로드하고, 대시보드에서 해당 run을 Finished 상태로 마무리합니다.
wandb.finish() - 학습이 다 끝난 뒤에는
- 위 과정을 통해 해당 실험의 Loss, Accuracy 등의 metric의 변화를 실시간으로 추적하고 시각적으로 분석할 수 있다.
PREVIOUS[WandB] WandB 기본