실험 추적과 협업을 위한 Weights & Biases 활용 방법: 사례 연구
연구팀이 W&B를 활용해 협업하고 실험을 추적하는 방법
이 글은 AI 번역본입니다. 오역 가능성이 있으면 댓글로 알려 주세요.
Created on September 15|Last edited on September 15
Comment
우리는 ETH 취리히에서 학사 과정을 밟고 있는 네 명의 친구로 이루어진 팀입니다. 올해 6월, International Supercomputing Conference 2019의 Student Cluster Competition에 참가했습니다. 특히 AI 과제에 참가해 기상 데이터에서 사이클론과 같은 극한 기상 현상을 탐지하는 문제를 다뤘습니다. Weights & Biases는 우리 팀에 매우 유용한 도구였기에, 다른 분들도 도움이 될 수 있도록 모델을 개발하고 개선하는 과정에서 우리가 사용한 워크플로를 소개하고자 합니다.
Weights & Biases를 사용하는 우리의 기본 워크플로:
- W&B에서 공유 프로젝트 만들기
- 우리 코드에 W&B를 API로 설정하기
- 실행할 실험 목록 만들기
- 실험을 자동으로 추적하기
- 논의하고 결과를 검토한 뒤, 3–5단계를 반복하기
기상 데이터에서 극한 현상을 탐지하기 위해, 우리는 딥러닝 기반의 최첨단 이미지 분할 아키텍처인 deeplabv3+를 출발점으로 삼기로 했습니다. 이 아키텍처를 기상 데이터에 맞게 조정한 뒤, 알고리즘에 적용할 수 있는 잠재적 개선 사항 목록을 정리했습니다. 여기 우리가 참고한 논문입니다
목록이 늘어나면서, 실행할 실험들을 체계적으로 추적할 수 있는 종합적인 방법이 필요하다는 걸 깨달았습니다. 조사 끝에 Weights & Biases를 찾았습니다.
W&B 설정 진입 장벽이 낮아서, 실험을 추적하는 데 도움이 되는지 확인해 보려고 사용해 보기로 했습니다. 결과적으로—정말 도움이 됐습니다!
설정
우리는 Python에서 TensorFlow 콜백으로 Weights & Biases를 통합해, 실험 전반에 걸쳐 아키텍처에 가한 모든 변경 사항을 추적했습니다.
import wandbfrom wandb.keras import WandbCallbackwandb.init(entity="RACKlette", project="isc", name="test lower learning rate",tags=["lr"])config = wandb.config# Pass variables to wandb that should be stored:config.epochs = epochsconfig.batch_size = batch_sizeconfig.samples = samplesconfig.output_stride = output_strideconfig.channels = channelsconfig……deeplab_model.fit(xTrain, yTrain,validation_data = (xVal, yVal),epochs=epochs,batch_size=batch_size,callbacks=[WandbCallback(), reduce_lr])
실험 추적
우리는 실험을 시작하면서 손실 함수를 바꾸고, 옵티마이저를 변경하고, 더 일반적인 아키텍처 속성들도 조정했습니다. W&B는 각 실행을 기록해 주었고, 시각화를 통해 서로 다른 접근법을 쉽게 비교할 수 있게 해주었습니다.
W&B에서 본 검증 IoU 예시 시각화: 기본 모델 vs 학습률 스케줄러 적용 모델 vs 추가 오탐지 손실 적용 모델

학습률 스케줄러를 적용하자 성능이 크게 향상되었지만, 예측 결과를 실제 라벨과 비교해 보니 특정 클래스에서 여전히 오탐지가 지나치게 많다는 것을 확인했습니다. 그래서 이러한 오탐지에 더 강한 패널티를 주도록 손실 함수를 변경했습니다.
W&B의 큰 장점 중 하나는 전체 실험 중에서 원하는 하위 집합을 쉽게 골라 비교할 수 있다는 점입니다. 위의 예시는 W&B가 새로운 인사이트를 얻는 데 어떻게 도움이 되는지 잘 보여줍니다.
모델들을 비교할 수 있었던 덕분에 협업이 수월해졌습니다. 각 팀원은 언제 어디서나 프로젝트의 전체 기록에 접근할 수 있었습니다. 모든 실험을 실시간으로 확인할 수 있었기 때문에, 누가 어떤 접근을 시도했는지 파악하느라 별도로 시간을 들일 필요가 없었습니다. 따라잡기에 시간을 쓰는 대신 다음에 시도할 접근을 논의하는 데 더 집중할 수 있었습니다. 더 나아가 어떤 기기에서든 실험 진행 상황을 확인할 수 있었던 점은 지속적인 진척감을 주어 큰 동기 부여가 되었습니다.
Weights & Biases는 다양한 해법이 분기하는 대규모 프로젝트에서 팀의 노력을 조율하는 데 유용한 도구입니다. 모든 팀원이 언제든 즉시 진행 상황에 접근할 수 있도록 해 주어 상태 공유에 드는 시간을 줄이고 팀워크를 높여 줍니다.
요령과 팁
- 필터: 끝없이 스크롤하는 대신 이전 실험을 필터로 찾아보기
- 크래시 알림: 실행이 중단될 때마다 Slack 알림을 받아 조기에 실패를 감지하고 계산 자원을 낭비하지 않을 수 있습니다. 자세한 내용은 다음을 참조하세요. https://docs.wandb.com/docs/alerts/slack.html
- 리포트 작성: 진행 상황을 문서로 요약하면 흐름을 체계화하고 혼란을 줄일 수 있습니다.
읽어주셔서 감사합니다! 우리의 워크플로우나 프로젝트에 대해 궁금한 점이 있다면 언제든 Rackletteai@gmail.com 으로 연락 주세요.
Add a comment