<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>MLflow - 태그 - lee's blog</title><link>http://ken-0913.github.io/myblog/tags/mlflow/</link><description>MLflow - 태그 - lee's blog</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><managingEditor>hyeonjae0913@gmail.com (ken-0913)</managingEditor><webMaster>hyeonjae0913@gmail.com (ken-0913)</webMaster><lastBuildDate>Fri, 06 Nov 2026 21:00:00 +0900</lastBuildDate><atom:link href="http://ken-0913.github.io/myblog/tags/mlflow/" rel="self" type="application/rss+xml"/><item><title>MLPE 스터디 3주차 - Ch6.1 BentoML과 Yatai로 소득 분류기를 API로 배포하기</title><link>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-06-1-bentoml-yatai/</link><pubDate>Fri, 06 Nov 2026 21:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-06-1-bentoml-yatai/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/mlpe-06-1-bentoml-yatai-ab5074cf.png" referrerpolicy="no-referrer">
            </div><p><code>Machine Learning Platform Engineering</code> 6장은 <strong>배포</strong>와 <strong>모니터링</strong>을 다룬다. 5장에서 소득 분류기를 배치 파이프라인으로 돌렸다면 6장은 같은 모델을 <strong>BentoML</strong>로 API 서비스로 만들고 <strong>Evidently</strong>로 데이터 드리프트를 추적한다.</p>
<h2 id="1-한눈에-보기" class="headerLink">
    <a href="#1-%ed%95%9c%eb%88%88%ec%97%90-%eb%b3%b4%ea%b8%b0" class="header-mark"></a>1. 한눈에 보기</h2><p>MLOps 파이프라인 그림에서 6.1절은 <strong>모델 배포</strong>와 <strong>모델 API부분</strong>이다. 모델은 4.1절 MLflow 레지스트리에서 피처는 4.2절 Feast 온라인 스토어(Redis)에서 가져오고 모델 모니터링은 6.2절에서 다룬다.</p>
<p><a class="lightgallery" href="/myblog/posts/mlpe/mlpe-06-1-bentoml-yatai/bento-pipeline-overview.svg" title="MLOps 파이프라인 그림에서 6.1절이 채우는 자리. 모델 배포(Bento 빌드 · Yatai 배포)와 모델 API(BentoML /predict)가 분홍으로 강조돼 있다. 4.1절 MLflow 모델 레지스트리에서 Production 모델을 import_model 로 가져와 모델 배포로, yatai-deployment 가 모델 API 로 이어지고, 4.2절 Feast 피처 스토어에서 Redis 의 online 피처가 모델 API 로 들어간다. 사용자는 /predict 로 요청하고 응답을 받는다. 모델 모니터링은 6.2절 Evidently 로 점선 표시돼 있다. 오른쪽 카드는 MLflow 모델을 BentoML 로컬 스토어로, Feast 온라인 피처와 러너 예측, bentofile_homelab 으로 만든 Bento 와 모델 38.9MB, Yatai 가 kaniko 로 빌드해 Docker Hub 를 거쳐 띄우는 API·러너 Pod 를 정리하고, 5장 배치 추론과 같은 모델을 실시간으로 쓴다고 적는다" data-thumbnail="/myblog/posts/mlpe/mlpe-06-1-bentoml-yatai/bento-pipeline-overview.svg"><img class="tw:inline" loading="lazy" src='/myblog/posts/mlpe/mlpe-06-1-bentoml-yatai/bento-pipeline-overview.svg'   alt="MLOps 파이프라인 그림에서 6.1절이 채우는 자리. 모델 배포(Bento 빌드 · Yatai 배포)와 모델 API(BentoML /predict)가 분홍으로 강조돼 있다. 4.1절 MLflow 모델 레지스트리에서 Production 모델을 import_model 로 가져와 모델 배포로, yatai-deployment 가 모델 API 로 이어지고, 4.2절 Feast 피처 스토어에서 Redis 의 online 피처가 모델 API 로 들어간다. 사용자는 /predict 로 요청하고 응답을 받는다. 모델 모니터링은 6.2절 Evidently 로 점선 표시돼 있다. 오른쪽 카드는 MLflow 모델을 BentoML 로컬 스토어로, Feast 온라인 피처와 러너 예측, bentofile_homelab 으로 만든 Bento 와 모델 38.9MB, Yatai 가 kaniko 로 빌드해 Docker Hub 를 거쳐 띄우는 API·러너 Pod 를 정리하고, 5장 배치 추론과 같은 모델을 실시간으로 쓴다고 적는다"  ></a></p>]]></description></item><item><title>MLPE 스터디 2주차 - Ch4.1 더 해 보기: EDA 막대그래프 position fill과 stack 비교</title><link>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-04-2-eda-fill-vs-stack/</link><pubDate>Thu, 29 Oct 2026 18:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-04-2-eda-fill-vs-stack/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/mlpe-04-2-eda-fill-vs-stack-97988625.png" referrerpolicy="no-referrer">
            </div><p>EDA run의 막대그래프 인자 <code>position=&quot;fill&quot;</code>을 <code>&quot;stack&quot;</code>으로 바꿔 run을 하나 더 만들고, 두 그래프가 무엇을 보여 주는지 비교한다.</p>
<h2 id="1-무엇을-바꾸나" class="headerLink">
    <a href="#1-%eb%ac%b4%ec%97%87%ec%9d%84-%eb%b0%94%ea%be%b8%eb%82%98" class="header-mark"></a>1. 무엇을 바꾸나</h2><p>책의 EDA 셀은 범주형 컬럼 8개마다 막대그래프를 그린다. 막대 하나가 컬럼의 값 하나(예: Workclass의 Private)이고, 막대 안은 소득 구간 Target(<code>&lt;=50K</code>, <code>&gt;50K</code>)별 색으로 나뉜다. <code>geom_bar</code>의 <code>position</code> 인자가 두 색을 어떻게 쌓을지 정한다.</p>
<table>
	<thead>
			<tr>
					<th><code>position</code></th>
					<th>막대 길이</th>
					<th>읽을 수 있는 것</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>&quot;fill&quot;</code> (책 코드)</td>
					<td>모든 막대가 1.0으로 같다</td>
					<td>값마다 고소득(<code>&gt;50K</code>) <strong>비율</strong></td>
			</tr>
			<tr>
					<td><code>&quot;stack&quot;</code> (plotnine 기본값)</td>
					<td>그 값의 사람 수만큼</td>
					<td>값마다 <strong>건수</strong>와 그 안의 고소득 수</td>
			</tr>
	</tbody>
</table>
<h2 id="2-실행" class="headerLink">
    <a href="#2-%ec%8b%a4%ed%96%89" class="header-mark"></a>2. 실행</h2><p>JupyterLab에서 책 노트북 옆에 새 노트북 <code>eda_fill_vs_stack.ipynb</code>를 만들고, 4.1절과 같은 <code>chapter-4</code> 커널로 실행했다. 첫 셀은 데이터를 읽고 실험 <code>income-classifier</code>를 고르며, 둘째 셀이 run 두 개를 만든다. 책 셀과 다른 곳은 <code>position</code>을 바꿔 가며 두 번 돈다는 것과, 어느 쪽인지 알 수 있게 <code>position</code>을 파라미터로 기록한다는 것뿐이다.</p>]]></description></item><item><title>MLPE 스터디 2주차 - Ch5. KFP로 소득 분류기 배치 추론 파이프라인 만들기</title><link>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-05-1-kfp-income-pipeline/</link><pubDate>Mon, 26 Oct 2026 21:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-05-1-kfp-income-pipeline/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/mlpe-05-1-kfp-income-pipeline-cb1bc660.png" referrerpolicy="no-referrer">
            </div><p>4장에서 실험과 모델은 MLflow로, 피처는 Feast로 관리하게 됐다. 하지만 둘을 이어 붙이는 일은 여전히 사람 몫이다. 5장에서는 이 연결을 <strong>Kubeflow Pipelines</strong>(KFP)로 자동화해, 데이터를 읽는 단계부터 추론 결과를 저장하는 단계까지 한 번에 도는 배치 추론 파이프라인을 만든다.</p>
<p>예제 코드는 <a href="https://github.com/practical-mlops/chapter-5" target="_blank" rel="noopener noreferrer">practical-mlops/chapter-5</a>에 있다.</p>
<p><a class="lightgallery" href="/myblog/posts/mlpe/mlpe-05-1-kfp-income-pipeline/kfp-pipeline-overview.svg" title="4.1절 MLOps 파이프라인 그림에서 점선으로 비어 있던 파이프라인 오케스트레이션을 Kubeflow Pipelines 로 채운 그림. 5장의 배치 추론 파이프라인이 모델 배포 자리에서 돌며, 4.2절 Feast 피처 스토어에서 historical 피처 8개를, 4.1절 MLflow 모델 레지스트리에서 Production 모델과 column_list.pkl 을 가져온다. 오른쪽 카드에 컴포넌트 4개(read_data, retrieve_features, run_inference, write_data)를 정리했다" data-thumbnail="/myblog/posts/mlpe/mlpe-05-1-kfp-income-pipeline/kfp-pipeline-overview.svg"><img class="tw:inline" loading="lazy" src='/myblog/posts/mlpe/mlpe-05-1-kfp-income-pipeline/kfp-pipeline-overview.svg'   alt="4.1절 MLOps 파이프라인 그림에서 점선으로 비어 있던 파이프라인 오케스트레이션을 Kubeflow Pipelines 로 채운 그림. 5장의 배치 추론 파이프라인이 모델 배포 자리에서 돌며, 4.2절 Feast 피처 스토어에서 historical 피처 8개를, 4.1절 MLflow 모델 레지스트리에서 Production 모델과 column_list.pkl 을 가져온다. 오른쪽 카드에 컴포넌트 4개(read_data, retrieve_features, run_inference, write_data)를 정리했다"  ></a></p>]]></description></item><item><title>MLPE 스터디 2주차 - Ch4.1 홈랩 MLflow로 실험 추적과 모델 레지스트리 실습하기</title><link>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-04-1-mlflow-practice/</link><pubDate>Sun, 25 Oct 2026 20:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-04-1-mlflow-practice/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/mlpe-04-1-mlflow-practice-e05eb6c0.png" referrerpolicy="no-referrer">
            </div><p>책 4.1절(실험 추적과 모델 레지스트리) 노트북을 홈랩 MLflow에서 돌린 기록이다. 실습 환경(MLflow, Postgres, RustFS, JupyterLab)을 Kubernetes에 올린 과정은 <a href="../mlpe-04-mlflow-install/" rel="">앞 글</a>에 있다.</p>
<p>책은 로컬 <code>mlflow ui</code>와 Kubeflow에 딸린 MinIO를 쓰지만 여기서는 Kubernetes 위의 MLflow, Postgres, RustFS를 썼다. RustFS는 홈랩에서 이미 쓰고 있어서 골랐고 다른 이유는 없다.</p>
<h2 id="1-한눈에-보기" class="headerLink">
    <a href="#1-%ed%95%9c%eb%88%88%ec%97%90-%eb%b3%b4%ea%b8%b0" class="header-mark"></a>1. 한눈에 보기</h2><p>아래는 이번 절에서 실습할 파이프라인이다. 초록 칸은 Jupyter 노트북 셀로 직접 실행한 단계이고, 주황 칸은 노트북이 만든 결과를 MLflow에 기록하고 등록한 곳이다.</p>
<p><a class="lightgallery" href="/myblog/posts/mlpe/mlpe-04-1-mlflow-practice/pipeline-6-1-overview.svg" title="MLOps 파이프라인에서 데이터 수집·준비, 모델 학습, 모델 평가·검증을 Jupyter 노트북 셀로 직접 실행하고, 결과를 MLflow 실험 추적에 기록하고 1등 모델을 모델 레지스트리에 등록한 이 글의 전체 범위. 점선 오케스트레이션 자리의 자동화는 5장 Kubeflow Pipelines 몫이다" data-thumbnail="/myblog/posts/mlpe/mlpe-04-1-mlflow-practice/pipeline-6-1-overview.svg"><img class="tw:inline" loading="lazy" src='/myblog/posts/mlpe/mlpe-04-1-mlflow-practice/pipeline-6-1-overview.svg'   alt="MLOps 파이프라인에서 데이터 수집·준비, 모델 학습, 모델 평가·검증을 Jupyter 노트북 셀로 직접 실행하고, 결과를 MLflow 실험 추적에 기록하고 1등 모델을 모델 레지스트리에 등록한 이 글의 전체 범위. 점선 오케스트레이션 자리의 자동화는 5장 Kubeflow Pipelines 몫이다"  ></a></p>]]></description></item><item><title>MLPE 스터디 2주차 - Ch4~5 홈랩 Kubernetes에 MLflow, Feast, Kubeflow Pipelines 설치하기</title><link>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-04-mlflow-install/</link><pubDate>Sat, 24 Oct 2026 20:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>http://ken-0913.github.io/myblog/posts/mlpe/mlpe-04-mlflow-install/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/mlpe-04-mlflow-install-01f7e9a6.png" referrerpolicy="no-referrer">
            </div><p><code>Machine Learning Platform Engineering</code> 4장은 MLflow로 실험과 모델을 추적하고 Feast로 피처를 관리하며, 5장은 둘을 Kubeflow Pipelines로 이어 배치 추론 파이프라인을 만든다. 2주차 실습은 1주차에 설치한 홈랩 Kubernetes 클러스터 위에서 그대로 진행한다. 이번에는 Kubernetes 클러스터에 MLflow, Feast, Kubeflow Pipelines를 올린다.</p>
<h2 id="1-전체-구성" class="headerLink">
    <a href="#1-%ec%a0%84%ec%b2%b4-%ea%b5%ac%ec%84%b1" class="header-mark"></a>1. 전체 구성</h2><p><a class="lightgallery" href="/myblog/posts/mlpe/mlpe-04-mlflow-install/homelab-platform.svg" title="홈 LAN 안의 홈랩 Kubernetes 클러스터(v1.36.5)에 올린 2주차 실습 플랫폼 전체 구성. mlflow 네임스페이스에 JupyterLab(192.168.0.239), MLflow 3.16.0(192.168.0.238), Postgres 18, Secret 4개, RustFS 1.0.3(192.168.0.237, 버킷 6개)이 있고, feast 네임스페이스에 Feast 서버·UI(192.168.0.240, 241), apply·materialize Job, Redis 8.10.2 가, kubeflow 네임스페이스에 ml-pipeline UI·API 2.17.3(192.168.0.242), 실행 Pod, MySQL 8.4 가 있다. 기존 argo 네임스페이스의 workflow-controller v4.1.4 가 KFP Workflow 를 받아 실행 Pod 를 만들고 cert-manager 가 cache-server 인증서를 준다. 노트북은 MLflow 에 run 과 지표를, RustFS 에 아티팩트를 직접 올리고, Feast Job 은 RustFS 에 parquet 와 레지스트리를, Redis 에 키 30,162개를 쓴다. KFP 실행 Pod 는 MLflow 에서 Production 모델을 받고 RustFS 에 Dataset 과 로그를 쓴다" data-thumbnail="/myblog/posts/mlpe/mlpe-04-mlflow-install/homelab-platform.svg"><img class="tw:inline" loading="lazy" src='/myblog/posts/mlpe/mlpe-04-mlflow-install/homelab-platform.svg'   alt="홈 LAN 안의 홈랩 Kubernetes 클러스터(v1.36.5)에 올린 2주차 실습 플랫폼 전체 구성. mlflow 네임스페이스에 JupyterLab(192.168.0.239), MLflow 3.16.0(192.168.0.238), Postgres 18, Secret 4개, RustFS 1.0.3(192.168.0.237, 버킷 6개)이 있고, feast 네임스페이스에 Feast 서버·UI(192.168.0.240, 241), apply·materialize Job, Redis 8.10.2 가, kubeflow 네임스페이스에 ml-pipeline UI·API 2.17.3(192.168.0.242), 실행 Pod, MySQL 8.4 가 있다. 기존 argo 네임스페이스의 workflow-controller v4.1.4 가 KFP Workflow 를 받아 실행 Pod 를 만들고 cert-manager 가 cache-server 인증서를 준다. 노트북은 MLflow 에 run 과 지표를, RustFS 에 아티팩트를 직접 올리고, Feast Job 은 RustFS 에 parquet 와 레지스트리를, Redis 에 키 30,162개를 쓴다. KFP 실행 Pod 는 MLflow 에서 Production 모델을 받고 RustFS 에 Dataset 과 로그를 쓴다"  ></a></p>]]></description></item></channel></rss>