[MLOps] Weight & Biases 소개 및 사용 방법
Page content
인프런 강의
- 취준생을 위한 강의를 제작하였습니다.
- 본 블로그를 통해서 강의를 수강하신 분은 게시글 제목과 링크를 수강하여 인프런 메시지를 통해 보내주시기를 바랍니다.
스타벅스 아이스 아메리카노를 선물
로 보내드리겠습니다.
- [비전공자 대환영] 제로베이스도 쉽게 입문하는 파이썬 데이터 분석 - 캐글입문기
1줄 요약
- wandb로 MLOps를 배워봅니다.
References
- Weight & Biases(wandb) 사용법(wandb 설치 및 설명) by greeksharifa
초기 설정
-
회원가입을 한 뒤, 가장 먼저 나오는 화면은 아래 대시보드 입니다.
-
참조: 필자는 Mac M1을 사용하는 중입니다.
Quick Start
- 새로운 가상환경을 만들도록 하겠습니다. (필자는 virtualenv 사용합니다.)
$ pip install wandb
Collecting wandb
Downloading wandb-0.10.31-py2.py3-none-any.whl (1.8 MB)
|████████████████████████████████| 1.8 MB 464 kB/s
.
.
.
Successfully installed GitPython-3.1.17 configparser-5.0.2 docker-pycreds-0.4.0 gitdb-4.0.7 pathtools-0.1.2 promise-2.3 psutil-5.8.0 sentry-sdk-1.1.0 shortuuid-1.0.1 smmap-4.0.0 subprocess32-3.5.4 wandb-0.10.31
- 이번에는 로그인을 합니다.
$ wandb login
-
이 때 터미널 창에 로그인 모드활성화가 되면서 URL이 하나 나타나게 됩니다.
-
여기서
https://wandb.ai/authorize
를 클릭하면 API 키값 화면이 나타납니다. -
초기 설정이 끝났습니다.
프로젝트 세팅
- 가상환경 위에서 wandb init을 실행합니다.
- 그리고 프로젝트 명을 기재합니다.
$ wandb init
This directory has been configured previously, should we re-configure it? [y/N]: y
Enter a name for your first project: temp
This directory is configured! Next, track a run:
* In your training script:
import wandb
wandb.init(project="temp")
* then `python <train.py>`.
- 그리고 홈페이지를 확인해봅니다.
Tutorial
- 이번에는 필수 패키지 및 tutorial.py 파일을 작성하여 실행하도록 합니다.
- requirements.txt
tensorflow
keras
pandas
numpy
pillow
wandb
h5py
opencv-python
scikit-learn
- 그리고, 설치를 진행합니다.
$ pip install -r requirements.txt
- tutorial.py 소스코드는 아래와 같습니다.
import math
import random
# Start a new run, tracking hyperparameters in config
wandb.init(project="temp", config={
"learning_rate": 0.01,
"dropout": 0.2,
"architecture": "CNN",
"dataset": "CIFAR-100",
})
config = wandb.config
# Simulating a training or evaluation loop
for x in range(50):
acc = math.log(1 + x + random.random()*config.learning_rate) + random.random() + config.dropout
loss = 10 - math.log(1 + x + random.random() + config.learning_rate*x) + random.random() + config.dropout
# Log metrics from your script to W&B
wandb.log({"acc":acc, "loss":loss})
- 위 파일을 작성한 뒤, 터미널을 실행합니다. 그런데, 에러가 생길 수가 있습니다.
$ python3 tutorial.py
wandb: Currently logged in as: dschloe (use `wandb login --relogin` to force relogin)
wandb: Tracking run with wandb version 0.10.31
wandb: Syncing run sage-morning-2
wandb: View project at https://wandb.ai/dschloe/basic-intro
wandb: View run at https://wandb.ai/dschloe/basic-intro/runs/q0eccvb5
wandb: Run data is saved locally in /Users/evan/Desktop/mlops_wandb/wandb/run-20210529_104935-q0eccvb5
wandb: Run `wandb offline` to turn off syncing.
Exception in thread Thread-3:
.
.
.
raise Exception("The wandb backend process has shutdown")
Exception: The wandb backend process has shutdown
- 필자의 경우 설치 버전이 낮아서 생긴 오류 였습니다. 따라서 버전을 업그레이드 해줬습니다.
>>> import wandb
>>> print(wandb.__version__)
0.10.31
- pip 명령어를 활용하여 0.10.8로 업그레이드 하였습니다.
$ pip3 install --upgrade wandb==0.10.8
- 이제 다시 실행합니다.
$ python3 tutorial.py
wandb: Currently logged in as: dschloe (use `wandb login --relogin` to force relogin)
wandb: wandb version 0.10.31 is available! To upgrade, please run:
wandb: $ pip install wandb --upgrade
wandb: Tracking run with wandb version 0.10.8
wandb: Syncing run vibrant-donkey-3
wandb: ⭐️ View project at https://wandb.ai/dschloe/temp
wandb: 🚀 View run at https://wandb.ai/dschloe/temp/runs/33aupjxx
wandb: Run data is saved locally in wandb/run-20210529_144202-33aupjxx
wandb: Run `wandb off` to turn off syncing.
wandb: Waiting for W&B process to finish, PID 26327
wandb: Program ended successfully.
wandb:
wandb: Find user logs for this run at: wandb/run-20210529_144202-33aupjxx/logs/debug.log
wandb: Find internal logs for this run at: wandb/run-20210529_144202-33aupjxx/logs/debug-internal.log
wandb: Run summary:
wandb: acc 4.58345
wandb: loss 6.5208
wandb: _step 49
wandb: _runtime 1
wandb: _timestamp 1622266923
wandb: Run history:
wandb: acc ▁▁▂▃▄▅▄▄▆▅▆▆▆▆▅▆▆▇▆▆▇▆▆▇█▇▇██▇▇██▇█▇▇███
wandb: loss █▇▆▅▄▅▄▅▅▄▃▃▄▄▄▃▃▃▂▃▂▃▂▂▂▃▃▂▂▂▂▂▂▂▁▂▁▂▂▁
wandb: _step ▁▁▁▁▂▂▂▂▂▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▆▆▆▆▆▆▇▇▇▇▇███
wandb: _runtime ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
wandb: _timestamp ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
wandb:
wandb: Synced 4 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
wandb:
wandb: Synced vibrant-donkey-3: https://wandb.ai/dschloe/temp/runs/33aupjxx
- 정상적으로 잘 되는 것을 확인할 수 있었다. 마찬가지로 대시보드에서도 아래와 같이 확인할 수 있을 것이다.
소결
- 지금까지 가장 wandb 튜토리얼의 기본적인 내용을 확인하였습니다.