일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 2021
- bootcamp
- yolo
- leetcode
- 빅데이터
- Ai
- 재미져
- MYSQL
- 부트캠프
- Codestates
- 코드스테이츠
- SQL
- JavaScript
- 자료구조
- 리뷰
- 열심히
- 코딩테스트
- 선형회귀
- 기초통계
- selenium
- 파이썬
- 딥러닝
- 매일매일
- python
- 주간보고
- 꾸준히
- 노마드코더
- 독서
- pandas
- 성실히
- Today
- Total
코딩일기
[머신러닝 파이프라인] 실험관리(feat. Weights and Biases) 본문
안녕하십니까 다제입니다.
오늘은 머신러닝 파이프라인을 쉽고 유용하게 관리할 수 있는 툴을 소개하고자 합니다.
해당 내용은 inflearn에서 수업을 듣고 제가 직접 정리한 내용입니다.
Tensorflow의 Tensorboard와 비슷한데, 이 도구는 Framework indepedent한 성격을 지니고 있어 Tensorflow, pytorch 등에서도 자유롭게 사용할 수 있습니다.
1. 실험관리 개요
-. 실험관리를 통해 실험내역을 체계적으로 관리하고자 합니다.
-. 머신러닝은 열심히하고 시간을 투자한다고 해서 성공하지 않습니다. 실패를 했다면 그 실패 결과를 가지고도 결과보고서를 만들고 성과로 입증하는 과정이 필요합니다. 이에 실험관리는 필수입니다.
2. Weights and Biases 소개
-. Weights and Biases는 미국의 스타트업이고 머신러닝 프로젝트의 실험관리 솔루션을 제공해주고 있습니다.
-. 개인적으로 사용하는 건 무료지만, 기업 단위는 별도의 가격 정책을 갖고 있습니다. ( 꽤..비쌉니다.. )
-. 실시간으로 퍼포먼스 디버깅이 가능합니다.
3. Tutorial
-. wandb 들어가보시면 면 colab 튜토리얼 파일이 있습니다. 스크롤을 내리시면 "Try A LIVE NOTEBOOK"이라는 하이퍼링크를 발견하실 수 있습니다.
# wandb 설치
!pip install wandb -q
# 로그인
!wandb login -> 개인 시리얼키를 클릭하면 됩니다.
# wandb 세팅을 위한 설치
import wandb
wandb.init(project="wandb-tutorial",
config={
"layer_1_activation":"relu",
"layer_1":128,
"learning_rate":0.01,
"dropout_rate": 0.2
})
# 위 설정한 config를 config라는 변수에 담아주도로 하겠습니다.
config = wandb.config
# wandb에 로그를 찍기 위해서 tensorflow와 wandb를 연결해주어야 합니다.
# 이때 사용되는 라이브러리가 WandbCallback이고 이를 model.fit에 넣어주면 됩니다.
from wandb.keras import WandbCallback
# 데이터셋은 tf에서 제공하는 minst를 사용하도록 하겠습니다.
import tensorflow as tf
minst = tf.keras.datasets.mnist
(train_x, train_y), (test_x, test_y) = minst.load_data()
# 데이터 전처리
train_x, test_x = train_x / 255.0, test_x / 255.0
# model settings
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(config.layer_1, activation=config.layer_1_activation), # 기존에는 128이라는 직접적인 숫자를 넣어주었지만, 이제는 config.layer_1이라고 수정합니다.
tf.keras.layers.Dropout(config.dropout_rate),
tf.keras.layers.Dense(10, activation="softmax")
])
# 기존에는 optimizer="adam", 기재하였으나 이는 learning_rate를 직접 지정할 수 없습니다.
# optimzier=tf.keras.optimizers.Adam(learning_rate=config.learning_rate)라고 수정해줍니다.
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=config.learning_rate),
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
# model fit
model.fit(train_x, train_y, epochs=5, callbacks=[WandbCallback()])
# model evaluation
model.evaluate(test_x, test_y)
# 위와 같이 실행을 하게 되면 별도의 링크가 생성되며, 그곳에서 모델 성능 지표를 일괄적으로 확인이 가능합니다.
아래 그래프는 wandb를 사용하고 생성된 링크에서 직접 캡쳐해온 이미지 입니다.
이 외에도 다양한 기능들이 있었습니다. 오늘은 간단하게 어떻게 적용하고 사용하는지에 대한 내용을 다루어보았습니다.
대규모의 프로젝트가 아니라면 이정도 선에서 하이퍼파라미터 등을 관리하면 된다고 수업시간에 듣게 되었습니다.
저도 더 가지고 놀아보고 좋은 기능들이 있다면 소개드리겠습니다.
감사합니다.
'Code > 머신러닝(ML)' 카테고리의 다른 글
[머신러닝 파이프라인] HPO W&B Sweeps(feat. ) (0) | 2021.12.07 |
---|---|
The Actual Difference Between Statistics and Machine Learning(feat. statistics study) (0) | 2021.12.02 |
[Emsseble] GBM 이해하기(ver.1 - Update) (0) | 2021.02.28 |
[Ensemble] AdaBoost 이해하기 (0) | 2021.02.20 |
[Ensseble] RandomForest 이해하기 (0) | 2021.02.20 |