MLOps 개념 잡기

요즘 MLOps 플랫폼과 도구 분야는 ‘풍년’입니다. 오픈 소스 커뮤니티에서 매우 활발하게 관련 기술을 발전시키고 있고요, 이를 다양한 목적과 용도로 묶어 상용 솔루션 또는 서비스 형태로 제공하는 기업도 늘고 있습니다. 이들 기업은 각자 전문성에 맞는 제안을 하고 있죠. 그러다 보니 간혹 MLOps가 해석에 따라 범위과 기능이 좀 다르게 느껴지기도 합니다. 관련해 MLOps 개념 잡기 좋은 글 하나를 발견해 주요 내용을 요약해 보았습니다. 참고로 본 포스팅은 NetApp에서 AI 솔루션 설계자로 근무 중인 무니르 아마드 데드마리의 글을 참조한 것입니다. 전체 내용은 원문을 참고 바랍니다.


MLOps가 필요한 이유


MLOps의 필요성은 개발에 착수한 모델이 순조롭게 프로덕션 환경에 배포될 수 있도록 하기 위해서입니다. 네, 프로젝트 실패와 시행착오를 최소화하기 위해 MLOps라는 새로운 접근법이 필요한 것이죠. 관련 통계는 여러 곳에서 발표하고 있죠. 하나 인용해 보자면 deeplearning.ai 2019 보고서에 따르면 22%의 기업만이 머신 러닝 모델을 프로덕션에 성공적으로 배포했다고 합니다. 그렇다면 78%의 기업은? 추측해 보자면 프리 프로덕션 단계를 벗어나지 못하고 있다고 볼 수 있습니다.


의사결정자들의 눈에는 프로젝트 지연이나 실패의 원인가 잘 드러나지 않죠. 온프레미스, 클라우드 등 컴퓨팅 자원에 접근하기도 좋은 세상이 되었고, 품질 좋은 데이터 구하기도 한결 수월해졌고, 모델 개발 관련 아이디어를 얻을 수 있는 각종 논문이나 연구 프로젝트 관련 정보 구하기도 쉽고, 오픈 소스 기반 도구도 풍성한 시대가 되었는데, 무엇이 문제인지 이해를 못 할 수 있죠.


답답한 마음은 데이터 과학자와 개발자도 마찬가지입니다. 예를 하나 들어 보겠습니다. 최적의 시점에 고객이 원하는 가격으로 항공권을 예약할 수 있는 AI 서비스를 개발 중인 팀이 있다고 가정해 보겠습니다. 단순히 최저가 추천이 아니라 비행기 티켓 가격을 예측하는 모델을 개발하여 운영 중인 항공권 예약 시스템에 통합하는 것이 팀에게 주어진 임무입니다.


팀원들은 Jupyter Notebook을 이용해 작업합니다. 이메일이나 슬랙 등으로 노트북을 공유하고, 코드의 버전은 GitHub을 이용해 관리합니다. 모델 개발, 학습, 검증 작업이 일정에 맞춰 잘 진행되고 있는지 확인하기 위해 정기적인 회의도 잊지 않고 챙깁니다. Jupyter Notebook을 이용해 모델 성능 관련 시각화 정보를 보니, 가격 예측 모델이 잘 동작하는 것 같습니다. 하지만 막상 항공권 예약 시스템에 통합하려고 최종 점검을 해보니 몇 가지 질문에 명확하게 답하기 어렵다는 것을 알아챕니다.


  • Jupyter Notebook의 셀을 프로덕션 환경에 있는 항공권 예약 시스템에서 어떻게 실행할 것인가? 훈련 중 발생하는 데이터 변환을 어떻게 보존할 것인가?

  • 프로덕션 환경에서 모델 성능을 어떻게 지속해서 모니터링할 것인가? 시간 경과와 데이터 분포 변화에 따른 예측 편차를 어떻게 보정할 것인가? 이로 인해 발행하는 성능 저하(Model drift) 문제가 발생하면 어떻게 할 것인가?

  • 더 나은 성능을 위해 훈련을 마친 모델을 어떻게 미세 조정할 것인가?

  • 더 큰 데이터 세트에서 재학습을 하기 위해 모델을 어떻게 확장할 것인가?


위 질문에 대한 답을 고려하지 않고 프로덕션 환경에 모델을 배포하면? 서비스 제공 중에 더 큰 문제를 직면할 수 있고, 그렇게 되면 처음부터 다시 시작해야 할 수도 있습니다.

예와 같이 MLOps는 단순히 생산성을 높이는 데 필요한 것이 아니다. AI 프로젝트가 중간에 문제를 일으키지 않고 프로덕션 환경까지 순항할 수 있게 하려고 MLOps라는 새로운 접근 방식이 필요한 것이다.



MLOps란 무엇인가?


MLOps는 개념은 DevOps와 크게 다르지 않습니다. 다루는 핵심 주제가 모델이란 점이 다를 뿐입니다. MLOps는 모델 개발, 훈련, 추적, 배포 같은 일련의 워크플로우에 자동화와 협업의 개념을 더한 것이라 볼 수 있습니다. 예를 들어 보겠습니다. 일반적인 AI 프로젝트에 MLOps를 적용하면 다음과 같은 변화가 일어납니다.


  • 수동 스크립트 기반 프로세서에서 자동화된 파이프라인으로 전환

  • 반복적인 학습을 통한 모델 최적화 작업 편의 개선

  • 모델 추적성 확보

  • 협업을 지향하는 방식으로 모델 버전 및 소스 관리

  • 모델 개발, 훈련, 배포에 지속적 통합과 배포(CI/CD) 적용

  • 설명 가능한 AI를 위한 거버넌스 확보

  • 모델 모니터링


이상으로 MLOps를 왜 적용해야 하는지, 이를 통해 목표로 삼는 것은 무엇인지 간단히 알아보았습니다.

#MLOps #NetApp #CI_CD #Jupyter_Notebook


조회 29회