๋ชฉํ
MLflow Tracking Server ๊ตฌ์ฑ ์คํ(Experiment), ํ๋ผ๋ฏธํฐ, ๋ฉํธ๋ฆญ, ์ํฐํฉํธ ๊ธฐ๋ก ๋ชจ๋ธ ๋ฑ๋ก โ Stage ์ด๋ โ API ์ฐ๋๊น์ง ๐ ์ค์ต ์ฝ๋๋ ๐ GitHub (Mlflow - Tracking + FastAPI)
๐งญ ์ค์ต ์ ์ฒด ํ๋ฆ ์์ฝ [1๋จ๊ณ] MLflow Tracking Server ๊ตฌ์ฑ (๋ก์ปฌ ํ๊ฒฝ์์ ์คํ) [2๋จ๊ณ] ์คํ ์คํ (train.py) โ ๋ชจ๋ธ ํ์ต, ๊ธฐ๋ก [3๋จ๊ณ] ๋ชจ๋ธ ๋ฑ๋ก ๋ฐ Stage ์ค์ (Production ์ด๋) [4๋จ๊ณ] FastAPI ์ฐ๋ โ ์์ธก API ์๋น์ค ๐งฉ ์ค์ต ๋๋ ํ ๋ฆฌ ์์ mlops-mlflow/ โโโ app/ โ โโโ train.py # ๋ชจ๋ธ ํ๋ จ ๋ฐ ์คํ ๊ธฐ๋ก โ โโโ model.pkl # ์ ์ฅ๋ ๋ชจ๋ธ โโโ mlruns/ # ์คํ ๋ฐ์ดํฐ ์๋ ์์ฑ โโโ fastapi_app/ โ โโโ app.py # FastAPI ์์ธก API โโโ Dockerfile (์ ํ) โโโ README.md โ
[1๋จ๊ณ] MLflow ์ค์น & ์คํ ๐ ๏ธ ๊ฐ์ ํ๊ฒฝ ์ค์ # 1. venv ์ค์น sudo apt install python3-venv -y # 2. ๊ฐ์ํ๊ฒฝ ์์ฑ python3 -m venv .venv # 3. ๊ฐ์ํ๊ฒฝ ํ์ฑํ source .venv/bin/activate # 4. ํจํค์ง ์ค์น pip install mlflow scikit-learn pandas fastapi uvicorn # 5. ๋๊ฐ ๋ deactivate ๐ง MLflow ์๋ฒ ์คํ mlflow ui --port 5000 # http://localhost:5000 ์์ UI ํ์ธ ๐งช [2๋จ๊ณ] ์คํ ์คํ (train.py) # app/train.py import mlflow import mlflow.sklearn from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # MLflow ์ค์ mlflow.set_tracking_uri("http://localhost:5000") mlflow.set_experiment("iris-rf-exp") with mlflow.start_run(): iris = load_iris() X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2) clf = RandomForestClassifier(n_estimators=100, max_depth=3) clf.fit(X_train, y_train) acc = clf.score(X_test, y_test) mlflow.log_param("n_estimators", 100) mlflow.log_param("max_depth", 3) mlflow.log_metric("accuracy", acc) mlflow.sklearn.log_model(clf, "model") # ์คํ ์คํ python app/train.py ์คํ์ด ๋๋๋ฉด mlruns/ ํด๋์ ์คํ ๊ธฐ๋ก ๋ฐ ๋ชจ๋ธ์ด ์ ์ฅ
...