
이 노트북에서 다루는 내용

설치, 임포트, 로그인
Step 0: W&B 설치
pip로 wandb 라이브러리를 설치해야 합니다.
Step 1: W&B 임포트 및 로그인
실험과 파이프라인 정의하기
wandb.init()으로 메타데이터와 하이퍼파라미터 추적하기
config 딕셔너리(또는 유사한 객체)에 저장해 두고 필요할 때마다 꺼내 쓰는 방식은 일반적인 워크플로입니다.
이 예제에서는 일부 하이퍼파라미터만 바뀌도록 두고 나머지는 직접 하드코딩합니다. 모델의 어떤 부분이든 config에 포함할 수 있습니다.
이 예제에는 MNIST 데이터셋과 합성곱 아키텍처에 대한 메타데이터도 포함됩니다. 나중에 예를 들어 같은 프로젝트에서 CIFAR에 완전연결 아키텍처를 사용하게 되면 이 메타데이터가 run들을 구분하는 데 도움이 됩니다.
- 먼저 모델과 관련 데이터, 그리고 옵티마이저를
make한 다음 - 그에 맞게 모델을
train하고 마지막으로 - 트레이닝이 어떻게 진행되었는지 확인하기 위해
test합니다.
wandb.init()의 컨텍스트 내에서
이뤄진다는 것입니다.
이 함수를 호출하면
사용자 코드와 W&B 서버 사이에 통신 경로가 설정됩니다.
config 딕셔너리를 wandb.init()에 전달하면
그 정보가 모두 즉시 W&B에 로깅되므로,
실험에 사용할 하이퍼파라미터 값을
어떻게 설정했는지 항상 알 수 있습니다.
선택해 로깅한 값이 실제로 모델에 사용되는 값과 항상 일치하도록 하려면,
W&B는 객체의 run.config 사본을 사용하는 것을 권장합니다.
몇 가지 예시는 아래 make의 정의를 확인하세요.
파이프라인을 정의했으므로,
다음 섹션에서는 각 step을 차례대로 구현합니다.
데이터와 모델 설정, 트레이닝, 그리고 테스트입니다.
참고: W&B는 W&B 측의 문제가 사용자 코드를 중단시키지 않도록 자체 코드를 별도의 프로세스에서 실행합니다. 문제가 해결되면 wandb sync로 데이터를 로깅할 수 있습니다.
데이터 로딩과 모델 정의
wandb가 없을 때와 달라지는 점은 없습니다.
wandb를 쓴다고 해서 달라지지 않으므로, 이 예제에서는 표준 ConvNet 아키텍처를 사용합니다. 이 코드는 자유롭게 바꿔 가며 실험해 보세요. W&B는 모든 결과를 wandb.ai에 로깅합니다.
트레이닝 로직 정의하기
model_pipeline에서 train을 어떻게 수행할지 정의할 차례입니다. 여기서 W&B integration은 트레이닝이 진행되는 동안 그라디언트, 파라미터, 메트릭을 추적합니다.
여기서는 wandb의 두 함수인 watch와 log를 사용합니다.
run.watch()로 그라디언트를 추적하고, 나머지는 모두 run.log()로 로깅하기
run.watch()는 모델의 그라디언트와 파라미터를 트레이닝 중 매 log_freq step마다 로깅합니다.
트레이닝을 시작하기 전에 run.watch()를 호출하세요. 로그 모드, 여러 모델, 성능 팁은 wandb.watch로 그라디언트와 모델 가중치를 로깅하려면 어떻게 하나요?를 참조하세요.
나머지 트레이닝 코드는 그대로입니다: 에포크와 배치를 순회하면서 forward 및 backward pass를 수행하고 optimizer를 적용합니다.
run.log()에 전달합니다.
run.log()는 키가 문자열인 딕셔너리를 받습니다. 이 문자열은 로깅할 객체를 식별하고, 해당 객체가 값이 됩니다. 현재 트레이닝의 몇 번째 step인지도 선택적으로 로깅할 수 있습니다.
참고: 모델이 지금까지 본 예제 수를 사용하면 batch size가 달라도 비교하기가 더 쉽지만, 단순 step 수나 batch 개수를 사용해도 됩니다. 트레이닝 run이 더 길다면 epoch 기준으로 로깅하는 것도 의미가 있습니다.
테스트 로직 정의
선택 사항: run.save() 호출
export하세요.
해당 파일명을 run.save()에 전달하면 모델 파라미터가 W&B 서버에 저장되므로, 어떤 .h5 또는 .pb 파일이 어떤 트레이닝 run에 해당하는지 더 이상 놓치지 않게 됩니다.
모델을 저장하고, 버전 관리하고, 배포하는 더 고급 wandb 기능은 Artifacts 도구를 확인하세요.
트레이닝을 실행하고 wandb.ai에서 메트릭을 실시간으로 확인하세요
- Charts: 모델 그라디언트, 파라미터 값, loss가 트레이닝 전반에 걸쳐 로깅됩니다.
- System: 디스크 I/O 사용량과 CPU 및 GPU 메트릭을 포함한 system 메트릭이 표시됩니다.
- Logs: 트레이닝 중 표준 출력으로 전송된 모든 내용의 복사본이 있습니다.
- Files: 트레이닝이 완료되면
model.onnx를 클릭해 Netron model viewer에서 네트워크를 확인할 수 있습니다.
with wandb.init() 블록이 종료되면, W&B는 셀 출력에도 결과 요약을 출력합니다.
스윕으로 하이퍼파라미터 테스트하기
- 스윕 정의: 검색할 하이퍼파라미터, 검색 전략, 최적화 metric 등을 지정하는 딕셔너리 또는 YAML 파일을 만드세요.
- 스윕 초기화:
sweep_id = wandb.sweep(sweep_config). - 스윕 에이전트 실행:
wandb.agent(sweep_id, function=train).
