- 궁금한점이나 해석이 잘못된 부분이 있으면 언제든지 댓글로 말씀해주시면 감사하겠습니다!
- 정의 : Weights & Biases의 줄인말로써 실험 결과를 시각적으로 알려주고, hyper-parameter tuning의 역할을 수행할 수 있도록 도와주는 ML Experiment tracking tool 입니다.
pip install wandb
wandb login #(cmd창) -> 사이트 통해 API key 복붙하기 (참고로 붙여넣기할 때 key가 cmd에서 안보이는데 바로 enter눌러주면 해결됌)
wandb.init()
wandb.config.update({
"batch_size" : self.batchsize,
"epochs": self.epochs,
})
wandb.log({
'rmse_score' : rmse_score
})
def train(self):
### wandb init
wandb.init()
### config 설정
wandb.config.update({
"batch_size" : self.batchsize,
"epochs": self.epochs,
})
for epoch in range(self.epochs):
self.model.train()
total_loss = 0
tk0 = tqdm.tqdm(self.train_dataloader, smoothing=0, mininterval=1.0)
for i, (fields, target) in enumerate(tk0):
self.model.zero_grad()
fields, target = fields.to(self.device), target.to(self.device)
y = self.model(fields)
loss = self.criterion(y, target.float())
loss.backward()
self.optimizer.step()
### watch
wandb.watch(self.model)
total_loss += loss.item()
if (i + 1) % self.log_interval == 0:
tk0.set_postfix(loss=total_loss / self.log_interval)
total_loss = 0
# rmse 계산
rmse_score = self.predict_train()
print('epoch:', epoch, 'validation rmse:', rmse_score)
### wandb logging 설정
wandb.log({
'rmse_score' : rmse_score
})
- 기본적으로 hyper parameter를 자동으로 최적화 해주는 Tool!! (wandb GUI)
- 장점
1. 자동으로 최적의 값을 찾아준다!
- hyper-parameter와 metric(rmse, auc, loss등)간의 상관관계를 시각화해줌!
- 현재까지 둘 다 활용해보면서 느낀점은 시각화적인 측면에서는 wandb가 더 낫지 않나?라는 생각이 든다!
- 그러나, 자동으로 찾아서 저장한 best_parameters라는 기능이 Optuna에는 있지만, wandb에는 없는 것이 조금 아쉽다.(오늘 공부한 바론 그런데 다른 방법이 있으시면 꼭 알려주세요 ~!)
- template 상에서 code로 구현하고 싶었으나, 많은 오류로 인해 해결하지 못해서 GUI방식으로 구현하는 방법을 모색했고, GUI 방식으로 하는 방법을 공유하겠습니다. 다시 도전해서 python template에서 작동하도록 구현한다면 그때 다시 공유해볼게요.
클릭해서 들어가면 오른쪽 위 상단에 Create Sweep을 눌러줍니다.
Sweep Configuration 화면이 나올텐데 거기서 program 변수에는 main또는 train을 하는 파이썬 파일을 기입합니다. 그리고, 아래에는 각종 hyperParameters가 있는데 이 부분은 wandb documentation에서 확인할 수 있습니다. (원하는 하이퍼파라미터와 범위를 설정하세요!)
여기서 주의할 점은 자신의 Template의 arg element와 동일해야 한다 주의!!!
Config를 완성하셨으면 다음 Launch Agent에서 가운데 표시되는 코드를 CMD창에 복붙하면 끝~!
코드를 돌리고 나면 아래의 창에서 자신이 실행한 모델의 결과를 확인하고, 시각적으로 분석할 수 있습니다 !
헉 이거 보고 쉽게 했어요!! ㅎㅎ 감사합니다