[๋ถ์์ง๋ฅ๊ฐ๋ฐํ ๋ฐํจ์ฃผ]
ML ๋ชจ๋ธ์ Lifecycle์ ์ฐ๊ตฌ ๋ฐ ํ ์คํธ๋ฅผ ์งํํ๋ Research ๋จ๊ณ์ ์ค์ ์๋น์คํํ๋ Production ๋จ๊ณ๋ก ๋๋ ์ ์์ต๋๋ค. Research ๋จ๊ณ์์๋ ๋ฌธ์ ์ ์๋ถํฐ ๋ชจ๋ธ ์ ์ , ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ๋ค์ํ ์คํ ๋ฑ์ ์งํํ๊ฒ ๋ฉ๋๋ค. ์ด๋๋ ๋น์ฅ์ ์๋น์คํ๋ ๊ณ ๋ คํ์ง ์๊ณ ๋ชจ๋ธ ์ฑ๋ฅ์ ์ต๋ํ ๋์ผ ์ ์๋ ๋ฐฉ๋ฒ๋ง์ ๊ณ ๋ฏผํฉ๋๋ค. Production ๋จ๊ณ์์๋ ๊ฐ์ฅ ๋์ ์ฑ๋ฅ์ ๋ชจ๋ธ์ด ํ์ต๋ ํ๊ฒฝ์ ๊ด๋ฆฌํ๊ณ Versioningํด์ ๋ฐฐํฌ ํ๊ฒฝ์ ๊ทธ๋๋ก ์ ์ฉ๋ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋๋ ๋ชจ๋ธ์ ์ต๋ํ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ๋ง์ ๊ณ ๋ฏผํฉ๋๋ค.
๋ ๋จ๊ณ๋ ์๋ก ๋ชฉํ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ์์ ์ญํ ๋ ๋ค๋ฆ ๋๋ค. Research ๋จ๊ณ๋ ML Researcher(ํน์ Data Scientist)๊ฐ, Production ๋จ๊ณ๋ ML Engineer๊ฐ ์งํํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ML Researcher๊ฐ ML Engineer์๊ฒ ๋ชจ๋ธ์ ์ ๋ฌํ๋ ๊ณผ์ ์ด ์์ฐ์ค๋ฝ๊ฒ ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ๋ฌผ ํ๋ฅด๋ฏ ์์ฐ์ค๋ฌ์ด ๋ชจ๋ธ Lifecycle ๊ด๋ฆฌ์ ํต์ฌ์ ๋๋ค. ์ง๊ธ๊น์ง ์ค๋ช ํ ์ด Lifecycle์ MLflow๋ฅผ ์ด์ฉํด ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
MLflow๋ ML ๋ชจ๋ธ์ Lifecycle์ ๊ด๋ฆฌํ๋ ํ๋ซํผ์ ๋๋ค. ๋ด๋ถ์๋ Tracking, Projects, Models, Model Registry 4๊ฐ์ง ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
Tracking
Tracking์ ML Researcher๊ฐ ์งํํ ๋ค์ํ ์คํ์ parameters, metrics, artifacts ๋ฑ์ ๋ก๊น ํ๊ธฐ ์ํ API ๋ฐ UI์ ๋๋ค. ML Researcher๋ ๊ธฐ์กด ์คํ ์ฝ๋์ ๋จ 2์ค(run, log_model)๋ง ์ถ๊ฐํด๋ ์์์ ์ธ๊ธํ ์ ๋ณด๋ค์ ์ ๋ถ ๋ก๊น ํ ์ ์์ผ๋ฉฐ, ์ฝ๋๋ฅผ ์ถ๊ฐํด์ ์ปค์คํ ํ ๋ก๊น ๋ ๊ฐ๋ฅํฉ๋๋ค.
Tracking์ ๋ก์ปฌ ํ๊ฒฝ์์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ๋ถํฐ ์๋ฒ์ DB๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ๊น์ง 6๊ฐ์ง ์๋๋ฆฌ์ค๋ก ๋๋ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์์ โHow Runs and Artifacts are Recordedโ ๋ถ๋ถ(https://www.mlflow.org/docs/latest/tracking.html#how-runs-and-artifacts-are-recorded)์ ์ฐธ๊ณ ๋ฐ๋ผ๋ฉฐ, ML Researcher์ ML Engineer ๊ฐ์ ์ํํ ํ์ ์ ์ํด์๋ ์ต์ ๊ณต์ ๋ฌธ์์ ์๋ ์๋๋ฆฌ์ค4 ์ด์์ ์ํคํ ์ฒ ๊ตฌ์ฑ์ ์ถ์ฒํฉ๋๋ค.
Projects
Projects๋ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉ ๋ฐ ์ฌํ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ํจํค์งํ๊ธฐ ์ํ ํฌ๋งท์ ๋๋ค. Dockerfile๊ณผ ์ ์ฌํ ํํ์ MLproject ํ์ผ์ python ๋ฒ์ , ํจํค์ง, ๋์ปค ์ปจํ ์ด๋ ๋ฑ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ์คํํ ์ปค๋งจ๋๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ parameters ์ ๋ณด๋ฅผ ์ธ๋ถ์์ ์ ๋ ฅ ๊ฐ๋ฅํ๋๋ก ์ค์ ๋ ๊ฐ๋ฅํฉ๋๋ค. Python ํจํค์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก conda๊ฐ ์ ์ฉ๋์ง๋ง pip๋ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์ด MLproject๋ฅผ ์ด์ฉํด์ ํ๋์ project ๋จ์๋ก ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.
Models
Models๋ ๋ค์ํ ํ๋ ์์ํฌ๋ก ํ์ตํ ๋ชจ๋ธ์ ํจํค์งํ๊ธฐ ์ํ ํ์ค ํฌ๋งท์ ๋๋ค. ML Researcher ๋ง๋ค ์ ํธํ๋ํ๋ ์์ํฌ๊ฐ ๋ค๋ฅผ ์ ์๋๋ฐ, ํ์ค ํฌ๋งท์ผ๋ก ํจํค์งํจ์ผ๋ก์จ ๋ค์ํ ํ๋ ์์ํฌ๋ก ํ์ต๋ ๋ชจ๋ธ์ ๋์ผํ MLflow ์ฝ๋๋ฅผ ์ฌ์ฉํด์ ๋ฐฐํฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
Model Registry
Model Registry๋ ๋ชจ๋ธ์ Lifecycle ๊ด๋ฆฌ๋ฅผ ์ํ ์ค์ ์ง์ค์ ๋ชจ๋ธ ์ ์ฅ์์ ๋๋ค. ์์ ์คํ์ ํตํด ํ์ต๋ ๋ชจ๋ธ์ ๋ฑ๋กํ๊ณ ๊ฐ ๋ชจ๋ธ์ ๋ฒ์ ๊ณผ Stage(Production, Staging, Archived) ์ ๋ณด ๋ฑ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ ์๋น ํ๋ ์์ํฌ์์๋ Production ๋ชจ๋ธ๋ง ๋ฐ๋ผ๋ณผ ์ ์๊ฒ ๋๊ณ , Staging์ ํตํด ๋ชจ๋ธ์ ๋ฐฐํฌํ๊ธฐ ์ ์ A/B ํ ์คํธ๋ฅผ ๊ฑฐ์ณ Production ๋ชจ๋ธ๋ก ๋ณ๊ฒฝํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ด ML Researcher๊ฐ ์คํ ๊ฒฐ๊ณผ ๋ชจ๋ธ์ Staging์ผ๋ก ์ฌ๋ฆฌ๋ฉด ML Engineer๊ฐ A/B ํ ์คํธ๋ฅผ ๊ฑฐ์ณ Production์ผ๋ก ๋ฐฐํฌํ๋ ๊ณผ์ ์ด ๋ฉ๋๋ค.
ML ๋ชจ๋ธ์ Lifecycle์ ์ํํ๊ฒ ์ด์ํ๊ธฐ ์ํด์๋ ML Researcher์ ML Engineer์ ์ํํ ํ์ ์ด ํ์์ ๋๋ค. ์ด๋ฅผ ์ํด MLflow์ ๊ฐ์ ML Lifecycle ๊ด๋ฆฌ ํ๋ซํผ์ ์ ๊ทน ํ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
Reference
- https://github.com/mlflow/mlflow/
- https://www.mlflow.org/docs/latest/concepts.html
- https://www.mlflow.org/docs/latest/tracking.html#how-runs-and-artifacts-are-recorded
- https://www.databricks.com/blog/2019/10/17/introducing-the-mlflow-model-registry.html
- https://blog.dataiku.com/introducing-mlflow-saved-models