일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 흥미붙이기
- TimeSeries
- NLinear
- 프레딧
- 제발쉽게좀가르치자
- LTSF
- 불법마약특별단속 #부산지방경찰청
- de
- 벨만방정식
- HY7714
- AI
- 도커로 깃블로그 만들기
- express
- RL
- node.js
- ML
- transformer
- socket.io
- mlflow
- 프로바이오틱스
- MPRO
- YOLO
- DLInear
- 엠프로
- DataProcessing
- 강화학습으로주식하기
- DL
- 오토트레이딩
- pandas
- 강화학습
- Today
- Total
상황파악
[MLFlow] #3. 기본 기능 이해하기 본문
내 입맛대로 서비스를 구성하기 참 어렵다
오랜만에 이런 코드를 봐서 인지 막막하고 답답하기만 하다
하지만 어쩌겠어 해야지
일단 포기하고 싶은 마음을 열심히 참아가면서 MLFLow 공식 홈페이지를 보면서 차근차근 따라해본다
우선 MLFlow는 로거의 역할에 충실한 것 같다. 내가 여러 시도를 하면서 발생한 결과를 트래킹하고, 각 모델별 성능도 비교해주고
아무튼 손이 많이 가는 만큼 직관적으로 사용이 가능할 것으로 기대가 된다
공홈에 있는 그림인데, 위 그람을 보면 일단 데이터 레이크에서 데이터를 가져와서 전처리하고 모델 학습시키고, 최적의 모델을 선정하는 것 까지 데이터 사이언티스트의 역할이고, 이후 모델 관리나 서빙은 MLOps 엔지니어 영역으로 구분되어 있다.
사실 이렇게 예쁘게 딱 딱 구분되어 있다면 얼마나 좋을까. 현실은 일단 다 할줄 알아야 하기 때문에 (근데 징징대면 또 어떻게든 해결되는 것 같음) 하나씩 하나씩 배워보자
1. Add MLflow tracking to your code
import mlflow
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor
mlflow.autolog()
db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target)
# Create and train models.
rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3)
rf.fit(X_train, y_train)
# Use the model to make predictions on the test dataset.
predictions = rf.predict(X_test)
내 코드를 트래킹 하는 코드를 실습하는데 정확히 트래킹이 어떤 의미로 쓰인건지 모르겠다. 아마 로깅정도의 뜻일 것 같은데...
mlflow.autolog() 라는 부분이 있고, 아래는 일반적인 모델 학습 및 추론 코드이다
아마 logger 처럼 파일에 상태값을 저장하는 역할이 아닐 까 싶다. 아니면 print 된 값도 다 저장을 하거나
For many popular ML libraries, you make a single function call: mlflow.autolog(). If you are using one of the supported libraries, this will automatically log the parameters, metrics, and artifacts of your run (see list at Automatic Logging). For instance, the following autologs a scikit-learn run:
읽어보니 내가 실행한 모델의 파라미터나 모델 성능, 아티팩트 (모델관련 모든 자료) 를 기록해준다고 한다. 이 과정을 sklearn을 통한 실습을 저 코드로 하는거고
우선 임의로 폴더를 만들고 test.py 파일을 만들어 해당 코드를 실행시켜 보았다
(mlflow) ~/mlflow/ python test.py
2023/07/23 16:40:52 INFO mlflow.tracking.fluent: Autologging successfully enabled for sklearn.
2023/07/23 16:40:52 INFO mlflow.utils.autologging_utils: Created MLflow autologging run with ID '0a0376b4261b4d39b63b764130bedbd1', which will track hyperparameters, performance metrics, model artifacts, and lineage information for the current sklearn workflow
2023/07/23 16:40:55 WARNING mlflow.utils.autologging_utils: MLflow autologging encountered a warning: "/Users/miniforge3/envs/mlflow/lib/python3.11/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils."
우선 Autologging이 잘 되었다고 한다
그런 다음 0a0376b4261b4d39b63b764130bedbd1 라는 ID로 하이퍼 파라미터, 매트릭, 아티팩트, 관련 정보등을 볼 수 있는걸 만들었다고 한다 (아마 로깅 파일 이름인듯)
그런다음 그냥 warning (안좋은 습관이지만 워닝은 사실 잘 안본다, 코드가 돌다가 멈췄을때만 잠깐 봄)
어쨋든 폴더를 확인해보니 0 (아마도 인덱스인듯) 폴더 아래 아까 설명한 ID에 각종 정보들과, 사용한 데이터셋에 대한 meta 가 들어있다
.trash에는 아무것도 없다
artifact_location: file:~/mlflow/mlruns/0
creation_time: 1690098052157
experiment_id: '0'
last_update_time: 1690098052157
lifecycle_stage: active
name: Default
최상단에 있는 meta.yaml 을 살펴보니 전반적인 내용에 대한 내용이다
생각보다 괜찮다고 느꼇던 부분은 main 코드를 실행했는데 모델 자체도 저장이 된다는 점과, 실행에 필요한 패키지들이 requirements 파일로 저장이 된다는 점이었다. python_env.yaml 파일을 통해 python 자체에 대한 디펜던시까지 함께 관리할 수 있다는 점이다
이런 정보가 있으면 도커를 활용하기 정말 좋다. 파일을 그냥 파싱만 하면 되니까.
이래서 사람들이 mlflow를 좋다고 하는구나 라는걸 바로 알 수 있었다
다만 모델 최초실행 까지의 과정이 수고스러울 것으로 보인다 (너무 당연한 얘기)
그렇게 생각한 이유는 아무래도 test.py 라는 메인 파일을 통해 한번의 실행만 해봤기 때문에 분명 이러한 내용 (디렉터리 구성 가이드) 기본 틀이 있을 것으로 생각이 드는데, 아직까지는 찾지 못했기 때문이다.
경험상 이런 폴더구조로 시작했던 프로젝트들은 하나같이 다 입맛대로 만들고 나니까 사실 그렇게 하는게 아니더라 라는게 너무 많았어서;
랜딩페이지로 가보면 테스트 결과가 저장되어 있다
신기하게 mlruns 로 경로를 옮기지도 않았는데 실행이 된다
그럼 git을 clone 할 필요도 없는거 아닌가?
어쨋든 결과를 확인해보면 yaml 파일과 디렉토리에서 확인할 수 있었던 내용들이 들어있다
Metric도 한눈에 확인할 수 있어서 편리했다
또한 모델을 한번 더 학습시켜 성능을 비교했다
아무튼 대충 mlflow가 어떤건지, 어떤식으로 동작하는지, 어떤 장점이 있는지 맛봤으니 기능을 하나씩 익혀가면서 내가 필요한 내용들로 꾸며나가도록 해야겠다
'AI' 카테고리의 다른 글
[MLFlow] #2. 초기 환경 설정 (0) | 2023.07.23 |
---|---|
[MLFlow] #1. 필요성 검토 (0) | 2023.07.23 |
NLinear 모델 구조 (Are Transformers Effective for Time Series Forecasting?) (0) | 2023.07.23 |
DLinear 모델 구조 (Are Transformers Effective for Time Series Forecasting?) (0) | 2023.07.22 |