
MLOps 플랫폼으로 MLflow를 선정하였다.
이유는 여러가지가 있는데 가장 큰 이유는 무료이면서 강력한 툴을 제공해주기 때문이다.
MLflow는 특정 기술 스택에 얽매이지 않는 개방형(Open Source) 도구라는 점이 가장 큰 강점.
다양한 프레임워크 지원: TensorFlow, PyTorch, Scikit-learn, XGBoost 등 거의 모든 주요 머신러닝 라이브러리와 원활하게 통합된.따라서 사용하는 프레임워크를 바꿀 필요가 없다.
플랫폼 독립성: AWS, Azure, Google Cloud 같은 특정 클라우드 환경이나 온프레미스(사내 서버) 환경에 구애받지 않고 어디든 설치하여 사용할 수 있습니다. 이는 특정 클라우드에 종속되는 위험(Vendor Lock-in)을 회피하게 해줍니다.
-> 일단 AWS Lightsail 위에 띄워보기로 했다.
API 및 REST 인터페이스: 모든 기능이 API와 REST 인터페이스로 제공되므로, 기존의 CI/CD 파이프라인(Jenkins, GitHub Actions 등)이나 자체 MLOps 도구에 쉽게 통합될 수 있습니다.
MLflow는 복잡한 MLOps 파이프라인을 4개의 독립적이고 상호 운용 가능한 구성 요소로 분해하여 제공하며, 사용자는 필요한 기능만 선택적으로 사용할 수 있습니다.
주요 기능: 실험 결과(매개변수, 메트릭, 코드 버전) 기록 및 시각화 재현성 및 실험 관리
주요 기능: ML 코드를 재현 가능한 형식으로 패키징 환경 표준화 및 자동화
주요 기능: 다양한 환경(Docker, PyFunc 등)에 배포 가능한 범용 모델 형식 제공 배포 표준화 및 효율화
주요 기능: 중앙 집중식 모델 저장소, 버전 관리, 단계(Staging/Production) 전환 거버넌스 및 모델 수명 주기 관리
-> 이 모듈성 덕분에, 기업은 필요한 기능만 빠르게 도입하거나, 기존에 사용하던 다른 MLOps 도구와 MLflow의 특정 기능을 결합하여 사용할 수 있다.
MLOps의 핵심 목표 중 하나는 재현성(Reproducibility)과 거버넌스(Governance) 확보다.
강력한 재현성: MLflow Tracking은 모델 학습에 사용된 코드 버전, 하이퍼파라미터, 데이터 경로, 결과 메트릭을 자동으로 기록하여, 어떤 팀원이든 언제든지 특정 모델을 생성한 실험 환경을 정확하게 재현할 수 있게 한다.
중앙 집중식 관리: Model Registry는 조직 내 모든 모델을 한 곳에서 관리하며, 모델의 승인, 버전 지정, 배포 환경(테스트 → 프로덕션)으로의 전환을 표준화된 워크플로우에 따라 진행하게 해줍니다. 이는 규제 준수 및 팀 간 협업을 용이하게 해준다.
MLflow는 Tracking Server라는 것을 지원한다.
머신러닝 프로젝트에서 일종의 기록역할을 하는 서버
실험의 각 실행(RUN)에서 생성되는 다음 내용들을 기록한다.
코드 버전- MLflow 프로젝트에서 실행 된 경우, 실행에 사용 된 Git 커밋 해시
시간- 시작 및 종료 시간, 실행 시작 및 종료 시간
소스 - 매개 변수, 메트릭, 값이 숫자 인 키-값 측정 항목
각 측정 항목은 실행(run) 과정에서 업데이트 될 수 있으며 (예 : 모델의 손실 함수가 수렴되는 방식을 추적하기 위해) MLflow가 측정 항목의 전체 기록을 기록하고 시각화 할 수 있다.
아티팩트 - 모든 형식의 출력 파일. 예를 들면 시각화 이미지 (예 : PNG),
- 모델 (예. picklize한 scikit-learn 모델)
- 데이터 파일 (예 : Parquet 파일) 등
Tracking Server 가 사용하는 별도의 저장소는 두 가지 파라미터로 지정할 수 있다.
--backend-store-uri
MLflow 엔티티가 기록되는 저장소다.
파일 저장소 혹은 DB를 사용할 수 있으며 SQLAlchemy DB URI 형태로 넘겨주면 된다.
<dialect>+<driver>://<username>:<password>@<host>:<port>/<database>
우리는 위에서 mysql 를 사용하였다.
--default-artifact-root
Artifacts가 기록되는 저장소다.
파일 시스템, 스토리지 등을 사용할 수 있다.