MLFlow를 활용한 MLOps

thddn19·2022년 3월 28일
0
post-thumbnail

인터넷에 조금만 검색해도 좋은 자료가 많지만, 도저히 와닿지 않았고, 방향성 잡고 싶어 일단은 해보자는 마음으로 구매했다.

  • MLOps가 무엇이고, 필요한 이유와 전체적인 workflow에 대해서는 잘 이해할 수 있게 설명했다.
  • 간단하게 왜 MLOps가 왜 필요하고 어떤 일을 하는지 훑어볼 수 있다.(내용 자체는 깊지 않다. 그래서 이해가 더 수월했었다.)
  • 같은 단어에 대해 다르게 표기되는 등.. 번역 상태는 그닥 좋지 않았는데, 차라리 영어로 표기했으면 좋았을 거라고 생각하게 될 정도..
  • 다양한 클라우드를 사용해보며 간단하게 실습할 수 있으나, 왜 이 클라우드를 사용해야하는지에 대한 차이점 및 특징이 명확히 적혀있지는 않다.

책 내용과 추가로 살펴본 것들을 정리한 내용이다.
정리하기 앞서, ML/클라우드/가상 컨테이너 환경에 대한 공부를 이제 시작한 상황임을 밝힌다.

MLOps가 왜 필요할까?

MLOps는 DevOps에서 채택되고 머신러닝에 적용되는 원칙 및 관행이다.

DevOps 또는 개발운영이란

요구사항을 효율적으로 만족시키기 위해, 일을 자동화하며, 변경사항 지표들을 측정 및 공유하고, 결과물들을 지속적으로 축적해 나아가는 문화를 만들어가는 철학/방법론 (출처 - Youtube. DevOpsArt)

  • 버그와 사용자 피드백의 형태로 배포/유지보수/수집하여 개발팀에게 전달
  • 테스트 및 배포 과정을 자동화하면 SW제품을 지속적으로 통합하고 제공할 수 있게 된다. (코드 병합과정이 지속적이지 않게 되면, 오랫동안 버그가 축적되어 업데이트가 신속하게 제공되기 힘들어 진다.)

MLOps가 없다면 ?

  • 데이터를 갖고와서 처리하고 분석해서 빌드/학습/검증 과정이 수동으로 진행되어 최신 트랜드에 맞는 데이터로 모델을 학습할 때 리소스가 많이 필요하게 된다.
  • 최신 ML 아키텍처 도입 시에 리소스 문제
  • 모델 성능 tracking 문제
  • 물론 ML과 Ops측에서 상당한 작업을 수행해야하기 때문에 단기적으로는 비용적인 측면에서 없는 것이 유리할 수 있다.

추가 참고1 - MLOps를 왜 사용해야할까? (medium)
추가 참고2 - MLOps등장배경 (알라딘 - 쿠브플로 운영 가이드 리뷰)

MLOps workflow

MLOps가 없다면 개발 및 운영 workflow는 어떻게 될까?
책에서는 자동화 수준에 따라 '수동구현-지속적인 모델 학습-파이프라인이 포함되어 저장 및 테스팅'으로 나뉘어 설명한다.
다 살펴보는 것이 중요하지만 2,3번째만 간략히 기록한다.

지속적인 모델 학습 workflow

기존의 workflow에서 주로 자동화된 학습 파이프라인 with 트리거, 모델 레지스트리, 피처 저장소가 추가되었다.

  • 특정 싱황에서 자동화된 학습 파이트라인을 통해 모델을 지속적으로 업데이트 하도록 하여, 모델 레지스트리에 학습 받은 모델을 보관한다.
  • 모델 레지스트리; 모델에 중앙 집중식 스토리지 영역을 제공해 프로세스를 간소화한다. 이는 모델의 지속적인 제공을 보장한다.
  • 모델 서비스; 모델 레지스트리에서 가장 성능이 뛰어난 모델을 가져와 예측 서비스를 제공한다. (이걸 serving 이라고 하는 것 같다)

장점
1. 파이프라인을 통해 동일한 학습/평가/검증을 진행하는 한 다양한 모델을 허용하여 모델 교환 시에 신속하게 진행할 수 있다.
2. SW팀과 운영팀이 파이프라인+모델 배포가 수월해진다.

단점
1. 파이프라인 테스트 및 디버깅 과정이 없어 소스저장소로 push전에 ML엔지니어팀이 수동으로 수행해야 한다.
2. 파이프라인이 수동 구축되므로, 변경될 경우 애플리케이션의 일부를 재구축해야한다

테스트 및 테스팅 저장소가 추가된 workflow

  • 테스팅을 추가하여 지속적인 통합 및 새로운 환경에 지속적으로 설계, 구축 및 배포되는 자동화의 결과로 애플리이케션과 호환성을 체크한다.
  • 패키지 저장소; 저장된 파이프라인을 가져와 지속적인 배포를 할 수 있도록 한다.

MLFlow

데이터브릭스에서 만듦

Lifecycle Platform으로 experiemtn tracking, model sharing/deploying, code packing을 streamline화 한다. 라이브러리나 어떤 ML어플리케이션이든 사용 가능한 API를 지원한다.
출처 - MLflow (github)

  • 기존 코드를 최소로 변경해 프로젝트에 MLOps 원칙을 통합할 수 있는 API이다.
  • experiment 생성; 모델 학습 세션을 실험별로 그룹화하면 모델의 맥락을 명확히 파악할 수 있기 때문에 workspace을 구성하는 데 도움 된다.
  • 모델을 모듈화된 형태로 저장하고 모델 실행과 관련된 모든 지표를 기록할 수 있다.
  • 로컬이나 클라우드 서비스에 배포해 모델 inference를 테스트할 수도 있다.
  • 모델 지표 비교, 모델 레지스트리(중앙 저장소)를 제공 !
  • 배포 및 패키징 쉽게 할 수 있도록 함

추가 참고 - MLflow 소개 및 Turorial

Databricks

cloud기반 data엔지니어링 툴이며, 최근 Azure에 추가된, MS 클라우드 를 위한 big data tool이다.
출처 - databricks를 이용하는 6가지 이유

  • databricks는 AWS, MS Azure과 같은 인기 AI 및 데이터 서비스의 항호 운용성을 제공하는 개방형 플랫폼 및 클라우드 서비스이며, Apache Spark, MLFlow도 만들었다.
  • 커뮤니티 에디션을 이용하면 간단한 실습이 가능하지만, 모델 레지스트리/배포 기능은 구독해야한다.

실습

  • MLflow로 로컬+Databricks, AWS Sagemaker, GCP, Azure를 사용해 진행하였고, API들 버전 잘 체크해야한다.
  • 거의 '클라우드 세팅-모델학습-모델등록-배포및 쿼리전송' 으로 간단히 실습하는 걸로 구성되어 있고, 어떤지 살펴보는 정도이다.

각 클라우드의 장단점?

AWS의 경우 하이브리드 클라우드에 빈약하고, Azure는 대규모 구현의 빈약한 규모, GCP는 제한적인 클라우드 운영 관리 사업자인 MSP 네트워크를 갖고 있다.
출처 - AWS vs MS Azure vs GCP 장단점 비교!

GCP

  • MLflow를 공식적으로 지원하지는 않지만, kubeflow가 포함돼 있다.
  • 엔드포인트 생성까지 기다리지 않아도 되어 배포가 훨씬 빠르다.

Azure

  • ACI(Azure Contatiner Instances)웹 서비스를 지원해, 개발 중인 일부 모델을 디버깅 및 테스트하는 목적으로 사용할 수 있다.

AWS

  • S3 버킷을 model registry로 사용

추가로

Azure와 Azure notebook 환경에서 공식문서나 검색해가며 개인적으로 실습을 진행했으나, inferenceConfig 클래스 관련 설정에서 막혀 좀 다른 부분부터 더 공부하고 진행하기로 했다.
실습하면서 삽질한 github colab 링크

정리

후기

학생플랜으로 Azure 회원가입해 4일동안 삽질한 결과 많다면 많고, 적다면 적은 정도의 요금이 나왔다.
(실제 예제는 이정도로 과금되진 않는다.)

  • 처음엔 colab+Databricks Community를 사용했으나, databrocks 내에서 모델 자체를 저장하고 배포하는 건 구독해야하는 것 같아 Azure+Azure Notebook으로 진행하였다. (책에서는 로컬환경에서 AWS, GCP, Azure를 사용하고 리소스 삭제방법까지 소개한다.)
  • Azure에서 Databricks를 이용한 방법도 있는 것 같긴한데.. 좀 더 살펴봐야할 것 같다.
  • 도저히 내가 알고 있는 지식 내에서는 Azure에 대한 아키텍처와 작동방식을 이해하며 Azure 튜토리얼을 내 코드에 접목시켜 하는 것은 안 된다고 판단했다.
    • InferenceConfig 만들 때 컨테이너 및 파일을 설명해야하던지 등.. 여러 설정이 자꾸 오류떠서 결국은 포기했고.. 도커 공부하고 나중에 다시 도전해야겠다고 생각했다.
  • ML에 대해 간단한 예제를 만드는 데에 생각이 바로바로 나오지 않았고, 아직 이해가 부족한 것 같다고 느꼈다.
    • 클라우드 공부보다는 ML코드 구현 및 완벽한 이해가 우선이라고 판단되었고 이 부분부터 우선적으로 좀 더 다지기로 생각했다.

느낀점

ML공부를 진행하며 느낀점은 대체 이런 것들이 어디에, 어떻게 서비스에 적용되는지 궁금했다.
이번 책을 보며 알게 된 지식과 실습하며 고민한 경험은 이에 대한 조그마한 답이 되었고, 앞으로의 공부방 향성을 약간은 잡을 수 있게 되었다.

profile
경험이 중요

0개의 댓글