MLOps 실습: MLflow, Azure ML과 ML 플랫폼 통합
Wine 분류의 MLflow와 Azure ML 실습 01~06편, 영화 추천, 합성 카드 탐지, RAG를 잇는 ML 플랫폼 실습 00~10편
✎ 이 문서 수정하기 + 이 카테고리에 새 문서 만들기 GitHub에서 수정
요리 실습처럼 1부에서 MLflow 실험 기록과 모델 등록을 익히고, 2부에서 여러 도구를 연결해 서비스를 완성한다.
「MLflow와 Azure Machine Learning」과 「ML 플랫폼 엔지니어링 통합 실습」을 합쳤다. 기존 주소는 이 아래의 새 주소로 연결되며, 도구 설치부터 익히려면 도구 기초 가이드를 먼저 본다.
flowchart LR
accTitle: MLOps 실습의 두 부분
accDescr: 도구 기초 가이드에서 사용법을 익히고, 1부에서 MLflow와 Azure ML의 실험 기록과 모델 등록을 실습한 뒤 2부에서 Feast, Kubeflow Pipelines, BentoML과 RAG를 연결한다.
B["도구 기초 가이드<br/>MLflow, Feast, KFP, BentoML"] --> P1["1부. MLflow와 Azure ML<br/>Wine 분류 01~06"]
P1 --> P2["2부. ML 플랫폼 통합<br/>영화 추천, 카드 탐지, RAG 00~10"]
P2 --> D["설계 가이드<br/>Bookway MLOps, LLMOps"]
1부. MLflow와 Azure ML
같은 Wine 분류 모델로 로컬 기록, 실행 비교, 모델 형식, AML 연결과 원격 Job, 등록, 온라인 및 배치 추론을 익힌다. 파일과 실행 기록은 mlflow-aml-lab에 이어서 추가하고, 도구 역할과 호출 순서는 1부 안내에서 확인한다.
| 순서 | 글 | 남길 결과 |
|---|---|---|
| 안내 | MLflow와 Azure ML 실습 안내 | 1부의 구성, 도구 역할, 참고 문서 |
| 참고 | MLflow 기능과 구성 | Tracking, 모델, Registry, 평가, 서빙의 범위 |
| 참고 | BentoML 기능과 구성 | Service, Bento, 컨테이너와 배포 범위 |
| 01 | MLflow 기본과 로컬 실험 기록 | 세 번의 학습 run과 보고서, 모델 |
| 02 | 실행 비교와 메트릭 및 아티팩트 조회 | 비교 결과와 selected-run.json |
| 03 | 모델 형식과 재사용 | 모델 계약과 재로딩, 입력 검사 결과 |
| 04 | AML 연결과 원격 학습 Job | AML에 남은 학습 기록과 원격 Job |
| 05 | 모델 등록과 버전 관리 | 모델 이름과 구체 버전 |
| 06 | 온라인 및 배치 추론과 모델 교체 | 추론 요청 파일과 배포, 전환의 확인 기준 |
04편부터는 Azure 리소스와 비용이 발생할 수 있다. 01~03편은 로컬 SQLite와 파일 저장소만 사용하므로 구독 없이도 따라 할 수 있다.
책 4~5장 그대로 따라 하기
『Machine Learning Platform Engineering』 4장의 MLflow, Feast 노트북과 5장의 Kubeflow Pipelines 배치 추론을 원본 코드를 실행하는 절차다. 책의 Kubeflow, MinIO, PostgreSQL, Redis, MLflow 서버를 kind에 설치하는 공개 저장소를 사용해 버킷부터 결과 확인까지 안내한다.
| 글 | 남길 결과 |
|---|---|
| 책 4~5장 로컬 실습 SOP | MLflow에 등록된 random-forest-classifier Production 버전, Feast 레지스트리, KFP 실행 결과 income_predictions.parquet |
2부. ML 플랫폼 통합
『Machine Learning Platform Engineering』의 도구 역할을 넘어 조건 변경과 오류 복구를 연습하도록 실습 저장소를 만들었다.
책의 MLflow, Feast, Kubeflow Pipelines, BentoML을 객체 탐지, 추천, RAG로 확장한다. 2부는 요구사항 변경과 오류 복구를 연습하도록 실행 가능한 패키지에서 데이터 계약과 지문, 후보 명세, 평가 보고서, 등록 버전을 연결한다.
세 프로젝트로 나눈 이유
| 프로젝트 | 배우는 흐름 | 구분할 점 |
|---|---|---|
| 영화 추천 | 시간 분할, SVD, MLflow, 등록과 추천 API | 평점 오차와 추천 순위 품질은 다르다 |
| 합성 카드 탐지 | 이미지와 라벨, 기준선, YOLO, 검증과 추론 | 카드 위치 탐지는 OCR이 아니다 |
| 문서 검색과 RAG | 검색 인덱스, 근거 인용, 생성 연결과 평가 | 검색 성공과 답변의 사실성은 다르다 |
처음에는 작은 합성 데이터로 전체 연결을 확인한다. 영화 추천은 직접 내려받은 MovieLens를 가져오는 과정도 제공한다. 합성 카드의 높은 점수를 실제 신분증 사진의 성능으로 해석하거나, 짧은 합성 문서의 검색 결과를 업무용 RAG 품질로 해석하지 않는다.
flowchart LR
accTitle: 2부 실습의 공통 흐름
accDescr: 데이터를 준비하고 학습 또는 인덱싱 결과를 MLflow에 기록해 후보를 검증한다. 통과하면 모델 등록, 추론, 관측으로 이어지고 실패하면 원인을 찾아 새 후보를 만든다.
A["데이터 준비<br/>계약과 지문"] --> B["학습 또는 인덱싱<br/>MLflow 기록"]
B --> C["후보 명세"]
C --> D["검증과 최종 평가"]
D --> E{"통과했나요?"}
E -->|"아니요"| F["원인 확인과 새 후보"]
F --> B
E -->|"예"| G["모델 등록과 버전 고정"]
G --> H["추론과 관측"]
H --> I["변화 조사와 재검증"]
I --> A
먼저 실행해 보기
Python 3.11 또는 3.12, Git, uv를 준비하고 PowerShell에서 실행한다.
git clone https://github.com/johklo/ml-platform-engineering-labs.git
Set-Location ml-platform-engineering-labs
uv sync --locked --extra dev
uv run ml-labs smoke --work .ml-labs/first-runGPU나 클라우드 계정 없이 세 프로젝트의 준비, 저장, 평가, 등록을 연결한다. .ml-labs/first-run에 후보 명세와 보고서가 남고 모델 URI가 출력된다. 재실행에는 새 작업 경로를 쓴다.
기본 카드 모델은 색상 규칙 기준선이며, 로컬 문서는 LLM 생성 없이 검색 문장을 인용한다. 빠른 연결 확인과 도구 학습은 별도 과정이다.
도구별로 이어서 실습하기
필요한 단계에서 선택 의존성을 추가하고 도구별 입력, 출력, 실패 기준을 확인한다. 09편은 MLflow 후보 비교부터 Feast 요청 분기, 배치 재시도와 출시 복구까지 연결한다.
Azure에서 달라지는 부분
Azure ML 작업은 독립된 환경에서 실행되므로 PC 파일 경로나 SQLite 주소를 그대로 사용할 수 없다. 작업의 입력과 출력, workspace tracking URI, 코드 커밋을 명시한다.
파이프라인 YAML과 Bicep의 로컬 생성, 검토와 리소스 배포, 작업 제출은 별도 단계다. Azure ML managed endpoint용 모델 내보내기와 배포 스크립트도 제공한다. 2부에서 Azure 리소스는 만들지 않았으므로 실행 전 지역별 모델 지원, quota, 권한, 비용을 확인한다.
학습 범위의 경계
이 자료는 책의 모든 기능을 구현한 운영 플랫폼이 아니다. 무중단 트래픽 전환, 문서별 접근 통제, 의미 기반 답변 캐시, 운영 대시보드 등 추가 구현 항목은 대응표에 구분했다.
로컬 출시에서는 평가 통과 후보만 활성화하고 포인터 전환 실패 시 기존 버전이 유지되는지 확인한다. RAG는 프롬프트, 문서, 검색 설정을 고정해 평가하고 품질 저하 변경을 거절한다. 이 게이트는 조직 승인이나 클라우드 무중단 운영을 대신하지 않는다.
함께 보면 좋은 글
가상 서점 Bookway를 기준으로 도구별 운영 설계를 정리한 MLOps와 LLMOps 가이드, 책의 흐름을 따라간 책 읽기 지도가 있다. 실습의 데이터와 결과는 Bookway의 가상 시나리오와 구분한다.
- MLflow와 Azure ML 실습 안내 : Wine 분류 예제로 로컬 MLflow 기록부터 AML 모델 등록과 추론까지 이어지는 01~06편의 구성과 도구 역할
- MLflow 기능과 구성 : 실험과 데이터 추적, 모델 패키징과 Registry, 평가와 배포, LLM 관측까지 MLflow의 기능 범위 정리
- BentoML 기능과 구성 : Service와 모델 관리, API와 서비스 조합, 배칭과 비동기 작업, Bento 패키징과 배포 및 운영 관측 정리
- 01. MLflow 기본과 로컬 실험 기록 : Experiment와 run을 구분하고 학습 설정과 결과를 로컬에 기록한다.
- 02. 실행 비교와 메트릭 및 아티팩트 조회 : 실행 비교 기준을 고정하고 메트릭 이력과 모델 파일을 조회한다.
- 03. 모델 형식과 재사용 : MLmodel, flavor, signature와 환경을 구분하고 저장 모델의 예측과 입력 계약을 확인한다.
- 04. AML 연결과 원격 학습 Job : 로컬 코드를 AML에 연결해 기록하고 같은 학습을 원격 command Job으로 실행한다.
- 05. 모델 등록과 버전 관리 : AML에 기록한 모델의 출처를 유지하며 이름과 버전으로 등록하고 다시 읽는다.
- 06. 온라인 및 배치 추론과 모델 교체 : 등록 모델의 온라인 및 배치 추론 계약과 요청 형식, 점진적 전환을 구분한다.
- ML 플랫폼 실습 00. 모델 파일보다 먼저 실행의 출처 만들기 : 00. 모델 파일보다 먼저 실행의 출처 만들기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 01. 영화 추천을 시간 순서대로 학습하고 평가하기 : 01. 영화 추천을 시간 순서대로 학습하고 평가하기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 02. 합성 카드 탐지에서 기준선과 학습 모델 비교하기 : 02. 합성 카드 탐지에서 기준선과 학습 모델 비교하기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 03. 같은 사용자 피처를 과거와 현재에서 조회하기 : 03. 같은 사용자 피처를 과거와 현재에서 조회하기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 04. 영화 추천을 독립된 컨테이너 단계로 나누기 : 04. 영화 추천을 독립된 컨테이너 단계로 나누기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 05. 선택한 모델을 서비스하고 변화 관찰하기 : 05. 선택한 모델을 서비스하고 변화 관찰하기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 06. 검색부터 평가와 배포까지 같은 RAG를 사용하기 : 06. 검색부터 평가와 배포까지 같은 RAG를 사용하기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 07. 로컬 실행 계약을 Azure ML로 옮기기 : 07. 로컬 실행 계약을 Azure ML로 옮기기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 08. 책과 실습의 대응 및 검증 범위 : 08. 책과 실습의 대응 및 검증 범위 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 09. 피처 조회부터 출시와 복구까지 한 흐름으로 실행하기 : 09. 피처 조회부터 출시와 복구까지 한 흐름으로 실행하기 실행 절차, 결과 확인과 실패 실험
- ML 플랫폼 실습 10. RAG 후보 비교, 릴리스 활성화와 rollback 실습 : 10. RAG 후보 비교, 릴리스 활성화와 rollback 실습 실행 절차, 결과 확인과 실패 실험