1. Wandb란?
Weights & Biases, 더 나은 모델을 더 빨리 구축할 수 있도록 하는 기계 학습 플랫폼으로 AutoML의 한 종류이다.
Wandb에서는 총 5가지의 기능을 제공하고 있다.
1️⃣Experiment
머신러닝 모델 실험을 추적하기 위한 대쉬보드 제공
2️⃣Reports
실험결과를 문서로 정리하여 협업 및 공유 가능
3️⃣Artifacts
데이터셋 버전과 모델의 버전 관리 가능
4️⃣Tables
데이터 logging하여 시각화 및 query에 사용
5️⃣Sweeps
하이퍼파라미터 튜닝을 자동으로 실행함
정리하면, Wandb는 가볍고 상호 운용 가능한 도구를 활용하여 최적의 모델을 신속하게 추적, dataset의 버전 관리 및 반복을 수행한다. 또한, 모델 성능 평가, 결과 시각화, 공유 등의 기능도 가능한 AutoML이라고 할 수 있다.
2. 사용방법
(1) Set up Wandb
1️⃣ https://wandb.ai/site 접속 및 회원가입
2️⃣ pip 명령어로 python 환경에 wandb 라이브러리 설치
!pip install wandb
3️⃣ wandb library 로그인 및 Weights & Biases (wandb.ai) API 키 발급
import wandb
wandb.login()
(2) Start a new run
wandb.init()를 사용하여 wandb를 실행시킬 수 있다.
코드 실행 후 API키 메시지가 뜨면 실행이 정상적으로 되었다는 의미다.
import wandb
wandb.init(project="프로젝트명", entity = "계정명", name = "저장 시 사용하는 이름")
wandb.init(config = dict)를 사용하면 사전에 여러 값을 한 번에 업데이트할 수도 있다.
config_setting 변수에 (변수명은 편하게 지정) 모델의 하이퍼파라미터, 데이터명 등 학습에 필요한 구성들을 딕셔너리 형태로 입력해준다. config에 입력한 내용은 추후 하이퍼파라미터를 자동으로 최적화할 때(sweep) 필요하다.
config_setting = {
'epochs': 5,
'classes':10,
'batch_size': 128,
'kernels': [16, 32],
'weight_decay': 0.0005,
'learning_rate': 1e-3,
'dataset': 'MNIST',
'architecture': 'CNN',
'seed': 42
}
변수명에 넣어준 다음에 init할 때 함께 넣어주면 편하다.
import wandb
wandb.init(project="프로젝트명", entity = "계정명", name = "저장 시 사용하는 이름",
config = config_setting)
(3) 모델 선언
(4) 하이퍼파라미터 튜닝(sweep)
sweep이란 하이퍼파라미터를 자동으로 최적화해주는 도구로 사용자가 지정한 방식을 기반으로 하이퍼파라미터 최적화를 진행함 (sweep에서 제공하는 방식은 grid, random, bayes 방식 등이 있다.)
sweep 순서
1️⃣ initialize sweep
sweep의 구성요소를 구성하고 sweep API 초기화
필수 파라미터는 program, method, parameters가 있다.
어디(program)에서 무엇(parameters)을 어떻게(method) 최적화할 것인지 정의하는 것이다.
*program
훈련을 실행할 script입력
*method
위에서 언급한 대로 grid, random, bayes 이렇게 3가지 방식이 있다.
* parameters
필수 파라미터를 sweep_configuration이라는 변수에 dict형태로 미리 입력해두고 sweep을 적용시키면 편리하다.
import wandb
# Example sweep configuration
sweep_configuration = {
'method': 'random',
'name': 'sweep',
'metric': {
'goal': 'maximize',
'name': 'val_acc'
},
'parameters': {
'batch_size': {'values': [16, 32, 64]},
'epochs': {'values': [5, 10, 15]},
'lr': {'max': 0.1, 'min': 0.0001}
}
}
2️⃣ run the weep agent
함수 또는 프로그램을 wandb 서버에서 실행시킴
sweep_id = wandb.sweep(sweep=sweep_configuration, project="프로젝트명")
wandb.agent(sweep_id, function = train)
실행시키면 sweep_config의 조합에 따른 각각의 결과를 wandb에 저장해준다.
참고한 글
https://pebpung.github.io/wandb/2021/10/06/WandB-1.html
https://pebpung.github.io/wandb/2021/10/10/WandB-2.html
Quickstart - Documentation (wandb.ai)
'머신러닝과 딥러닝 > ML 개념정리' 카테고리의 다른 글
[ML] 26. (AutoML) pycaret 개요, pycaret 주요 function (1) | 2022.11.17 |
---|---|
[ML] 25. AutoML 개요 (0) | 2022.11.14 |
[ML] 22. 머신러닝 분류모델과 분류모델의 알고리즘 개요 (1) | 2022.11.14 |
[ML] 21. 데이터 전처리 (10) - 파생변수 만들기 (0) | 2022.11.14 |
[ML] 20. 데이터 전처리 (9) - 인코딩(Ordinary-Encoding, label-Encoding, One-hot-Encoding) (0) | 2022.11.14 |
댓글