데이터 시대에 MLOps가 필요한 이유

MakinaRocks
We’re Team MakinaRocks!
12 min readJun 24, 2021

--

인공지능(Artificial Intelligence)과 머신러닝(Machine Learning)의 등장이 기존의 산업 구조를 변화시키고 신사업 모델을 만들어내고 있습니다. 이에 따라 폭발적으로 생겨나는 데이터를 가공, 관리하는 작업의 비중과 중요도도 함께 높아졌는데요, 이는 현대 사회가 “소프트웨어의 시대”를 넘어 “데이터의 시대”를 맞이했음을 의미합니다.

이러한 시대의 변화와 함께 핵심 자원도 변화했습니다. 이전까지 소프트웨어의 개발에서 코드가 핵심 자원이 되었다면, 오늘날, 데이터의 시대의 핵심 자원은 코드 데이터입니다.

옛날옛적…’소프트웨어’ 시대에 ‘데브옵스(DevOps)’가 살았는데…

데이터 시대의 머신러닝 모델 개발을 이해하기 위해서는 기존의 프로세스를 먼저 이해할 필요가 있습니다.

기존 소프트웨어 개발 프로세스는 담당자가 직접 1) 코드를 제작하고 2) 제작된 코드를 코드 저장소에 저장하여 3) 코드를 배포하는 구조로 진행됐습니다. 그런데 코드를 배포하는 환경이 상이해, 추가 개발이 필요한 상황들이 발생했고, 이를 배포하는 과정에서도 사람에 의한 에러 즉, 휴먼 에러 (Human Error)가 발생했습니다.

기존 데브옵스의 프로세스

이러한 불편을 해결하기 위해 반복적으로 코드를 통합하는 지속적 통합(Continuous Integration, CI)과 이를 반복적으로 배포하는 지속적 배포(Continuous Delivery, CD)에 대한 관심이 켜졌으며, 나아가 인프라, 개발 문화까지도 아우르는 데브옵스(DevOps)라는 새로운 패러다임이 생겨났습니다.

데이터의 시대, 무엇이 다를까

그렇다면 데이터의 시대에서의 머신러닝 개발은 어떻게 진행 될까요?

머신러닝 모델 개발 사이클

머신러닝 모델 개발은 가장 최신의 코드와 데이터로 함수 형태의 모델을 만드는 과정을 반복해 최고의 모델을 배포하는 과정으로 진행됩니다. 따라서 머신러닝 개발 프로세스는 기존 데브옵스(DevOPs)의 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Delivery, CD) 단계를 일부 동일하게 이행합니다.

다만, 머신러닝 개발은 데이터 기반의 프로세스이기 때문에 데이터가 바뀔 때마다 모델을 반복 학습시키는 지속적 학습(Continuous Training, CT)과정이 추가됩니다.

MLOps 프로세스

머신러닝 개발, 말처럼 쉽지 않다

기업은 수시로 변화하는 환경에 즉시 적용 가능한 학습 모델을 탐색하는 과정에서 어려움을 겪습니다. 우수한 성능의 머신러닝 모델을 개발해서 배포 환경에 모델을 완벽하게 적용하는 과정을 비롯해, 리소스 관리 및 ML Research (Machine Learning Research)팀과 개발 팀이 협업하는 과정에서도 종종 난관에 봉착합니다.

이러한 현실적인 어려움을 극복하기 위해 머신러닝 모델의 효율적인 개발과 배포를 가능케 하는 인프라를 구축하고, 프로세스를 자동화하는 플랫폼이 바로 ML 옵스 (MLOps)입니다. ML 옵스는 데이터, 개발, 운영 환경을 유기적으로 통합해 안정적인 개발 환경을 갖추고 모델 변화에 신속하게 대응할 수 있는 워크플로우를 제공합니다.

이번 포스팅에서는 ML 옵스의 정의 및 주요 기능 및 기술을 소개하고, ML 옵스 사용 시 얻는 이점과 도입 시의 어려움에 대해 이야기해보도록 하겠습니다.

ML 옵스란 무엇인가?

ML 옵스 (Machine Learning Operations)는 머신러닝 (Machine Learning)의 약자인 ML과 Operations의 약자인 Ops가 합쳐져 탄생한 단어로, 모델 개발 시스템과 운영 시스템을 통합하여 더욱 유연하고 효율적인 개발을 가능케 하는 도구이자 개발 환경을 뜻합니다. 소프트웨어 개발과 다르게 머신러닝 개발에는 데이터 과학 (Data Science)적 접근이 추가되기 때문에, ML 옵스에서는 코드 저장 및 배포 단계에 앞서 데이터 셋 분석 및 모델 개발을 담당하는 ML Research 팀의 역할이 추가됩니다.

ML 옵스의 구성 요소

머신러닝 모델 개발은 데이터를 가지고 모델을 개발하는 연구 환경과 개발된 모델 중 최상의 것을 운영 환경에 배포하는 배포 환경에서 진행됩니다. 연구 환경에서는 ML Research 팀이 최상의 모델을 만들기 위해 데이터를 학습하여 모델을 만드는 과정을 반복하는데요. 이렇게 개발된 최상의 모델을 배포 환경에서 동일하게 구현하여 유의미한 비즈니스 창출하는 것이 ML 옵스의 최종 목표입니다.

ML옵스의 과정을 이해하기 쉽게 가방 제작에 비유해서 설명해 보겠습니다.

한 개의 가방을 제작하기 위해서는 결정된 원재료(가죽, 버클, 원단 등)를 가지고 제작되어진 작업지시서에 따라 샘플 가방들을 제작합니다. 제작된 여러 샘플 가방 중 완성도가 가장 높은 가방이 나오면, 판매를 위해 해당 작업지시서를 공장에 전달하고 필요한 재료들의 수량을 늘려 대량 제작을 시작합니다.

머신러닝 모델 개발의 원리도 이와 동일한데요. ML Research 팀은 연구 환경에서 원재료인 데이터를 기반으로 코드를 따라 모델을 개발합니다. 몇 차례의 모델 개발 과정을 거쳐 실제 배포 환경에 최적인 모델이 나오면, 그 모델이 배포 환경에서도 동일하게 제작될 수 있도록 모델을 학습합니다.

ML 옵스의 주요 기능 및 기술

위와 같은 과정을 위해 ML 옵스는 네 가지 주요 기능 및 기술을 사용합니다.

  1. 모델 관리 (Model Management) 모델 관리는 연구 과정 중 수행한 모델들과 그 성능을 기록하는 행위입니다. 대표적으로는 오픈소스인 MLflow와 상용 소프트웨어인 Weight & Bias를 예로 들 수 있습니다. 이러한 컴포넌트로 모델을 관리할 때, 이후 다양한 배포 환경에 적절한 모델을 용이하게 선택할 수 있습니다.
  2. 모델 서빙 (Model Serving) 모델이 성공적으로 저장되면, 모델을 배포 환경에 서빙해야 합니다. 저장된 모델을 배포 환경에서 성공적으로 사용할 수 있도록 모델을 배포하는 과정을 모델 서빙이라고 합니다. 대표적인 서빙 방식에는 두가지가 있습니다.
    1) 백엔드 엔지니어 (Back-end Engineer)가 구축한 비즈니스 로직 서버에서 모델이 필요한 부분에 대해 API (Application Programming Interface) 형태로 호출하는 API 서빙
    2) 여러 데이터를 한 번에 처리하는 Batch 서빙
  3. 모델 모니터링 (Model Monitoring) 모델 서빙 단계에서는 외부 소프트웨어 컴포넌트가 API를 통해 모델로 추론 요청을 보내고, 모델은 추론 결과를 응답으로 보내는 사이클이 진행되는데요. 모델 모니터링 단계에서는 사이클이 잘 작동하고 있는지, 서빙 중인 소프트웨어가 정상적으로 동작하고 있는지, 마지막으로 적용된 모델 성능이 떨어지고 있진 않은지를 체크합니다.
  4. 지속적 학습 (Continuous Training) 머신러닝 기술을 적용한 실제 프로덕션 환경에서는 데이터가 계속 변화하기 때문에 처음과 같은 모델의 성능을 기대할 수 없게 됩니다. ML 옵스는 Continuous Training (CT)과정을 통해 변화하는 데이터에 맞추어 모델을 지속적으로 학습하고 배포해, 모델의 성능을 유지할 수 있습니다.

머신러닝 모델 개발에서 마주하는 난관

이렇게 ML 옵스는 머신러닝 기반의 솔루션을 활용하고자 하는 기업들의 문제점을 해결해주는 솔루션으로 각광받고 있습니다. 하지만 아직 ML 옵스를 도입하지 않은 많은 기업이 머신러닝 모델 개발 과정에서 다음과 같은 어려움을 겪고 있습니다.

  • 정제되지 않은 파이프라인으로 인한 부진한 진척도
    머신러닝 모델 개발 작업은 반복적이고 비선형적인 프로세스를 따릅니다. 데이터를 기반으로 하고 있기 때문에 모니터링 결과를 바탕으로 주기적인 업데이트가 필요한데요. 이를 위해서는 개발 초기 단계로 돌아가 데이터를 학습하고 배포하는 프로세스를 반복해야 합니다. 실제로 많은 기업이 이 단계를 원활하게 수행할 수 있는 정제된 파이프라인 (Pipeline)을 마련하지 못해, 모델 개발 단계에서 배포 단계까지의 진척에 어려움을 겪게 되고 이로 인해 진척이 늦어지게 됩니다.
  • 불필요한 리소스 활용 증가
    데이터의 가변성으로 인해 특정 모델을 배포하더라도 새 데이터를 기반으로 지속적인 예측, 학습 및 업데이트 작업을 거쳐야 합니다. 만약 체계화된 파이프라인이 없는 상태에서는 내부 데이터에 기반한 예측을 하려면 운영팀에서 실제 데이터를 머신러닝 팀으로 전송해야 합니다. 하지만 이 전달 프로세스에 적지 않은 시간이 소요되고, 컴퓨터 리소스 사용량도 증가하여 기존의 업무에 지장을 주게 됩니다.
  • 데이터 사이언티스트와 소프트웨어 개발자 간의 데이터 사일로
    머신러닝 기반의 솔루션 개발에는 두 축의 중요한 액터 (Actor)가 있습니다. 모델의 학습과 배포 및 최적화를 담당하는 데이터 사이언티스트 및 머신러닝 엔지니어와 모델 배포 과정을 통해 최종 모델을 서비스 형태로 구현하는 소프트웨어 개발자입니다. 머신러닝 모델 개발의 특성상 두 액터 간의 업무가 유기적으로 연결되어 있기 때문에 협업이 필요하지만, 기업에서는 두 액터가 담당하는 업무가 다르고 업무 공유가 되지 않아 협업이 어려워지는 *데이터 사일로 (Data Silo)문제가 발생합니다.
    *데이터 사일로 (Data Silo)는 조직 내에 존재하는 일련의 정보가 조직 내 다른 부서와 공유되지 않아 ‘특정 부서만의 데이터’로 남게되는 현상을 뜻합니다.
데이터 사이언티스트와 소프트웨어 엔지니어의 업무 차이

ML 옵스는 이 문제를 어떻게 해결할까

ML옵스는 변화하는 환경에 맞춰 에자일(Agile)하게 모델의 전체 수명 주기를 관리하고, 동시에 시간과 비용을 단축한다는 점에서 매력적인 머신러닝 개발 솔루션입니다. 특히 머신러닝 (Machine Learning) 사업 도입 과정에서 유지보수에 필요한 프로세스를 개선할 수 있다는 장점이 있습니다.

ML 옵스는 하나의 파이프라인에서 데이터 사이언티스트, 소프트웨어 개발자 및 운영단의 작업을 이행할 수 있도록 통합하기 때문에, 각 직군 사이에 존재했던 장벽을 허물어 서로의 업무 플로우에 대한 접근성을 높입니다.

실제 머신러닝 팀과 소프트웨어 개발자 사이의 원활한 커뮤니케이션에 머신러닝 개발 프로젝트의 완수 여부가 달려 있다고 할 만큼, 개발 과정의 큰 축을 맡은 각 직군 사이의 소통이 용이해진다면 머신러닝 모델 개발이 더욱 성공적으로 마무리 될 수 있음을 의미하기도 합니다.

또한, 최신 데이터가 유입될 때마다 실무 데이터와 분리된 환경에서 실시간으로 검증할 수 있는 기능이 제공됩니다. 이 때, 데이터 검증에 필요한 시간을 단축해, 개발 전 과정에 소요되는 시간을 단축할 수 있고, 리소스를 효율적으로 사용할 수 있습니다.

마지막으로 각 개발 단계를 효율적으로 관리하여 산출물도 용이하게 확인할 수 있는 기능을 제공합니다. 해당 모델이 어떤 데이터 셋과 코드를 활용했는지, 어떤 성능을 보이는 모델이 도출되었으며, 어떤 서비스 형태로 배포되었는지에 대한 전체 과정을 한눈에 파악할 수 있습니다. 수정이 필요하거나 새로운 기능이 필요할 경우, 필요한 업무를 한 눈에 파악해 즉시 반영할 수 있으며, 데이터 추출, 모델 학습, 반복 실험 및 결과 비교 등의 작업을 하나의 플랫폼 내에서 처리할 수 있어 높은 편의성과 효율성을 보여줍니다.

ML옵스 도입을 고려 중이라면,

ML 옵스의 주요 이점 및 기능을 이해했다면 기업은 ML 옵스를 도입하기에 앞서 마지막으로 다음의 질문을 해야 합니다.

  • 회사가 새로 구축할 파이프라인은 기존의 것과 얼마나 차이가 날 것인가?
  • 회사와 구성원들은 이러한 변화를 받아들일 심리적, 물리적 준비가 되어 있는가?
  • 프로세스 변화를 감수할만큼 기업에 가치를 가져올 수 있는 시스템인가?

아무리 좋은 시스템이라 해도 기업의 업종 및 사업 영역에 따라 시스템의 도입이 오히려 비효율적인 프로세스를 만들어낼 수도 있기 때문에 그 시스템이 정말 기업에 필요한지에 대해서 충분히 고려한 후에 도입하는 것이 중요합니다. 기업은 사전에 이러한 질문에 대해 답을 해봄으로써 비즈니스 실정에 맞춘 도입 계획을 세울 수 있습니다. 현재의 비즈니스 상황을 진단하고 비즈니스를 진행할 때 존재하는 어려움에 대해 ML 옵스가 해결해줄 수 있다고 생각되는 적절한 타이밍에 도입했을 때, 도입 효과가 극대화될 것입니다.

어떻게 데이터를 통합시킬 것인가

제품을 도입하기 위해서는 ‘머신러닝 기술을 어떻게 사용할 것인가?’라는 원론적인 질문을 넘어, ‘해당 기술을 개발하는 프로세스를 어떻게 정형화시키고 통합할 것인가?’ 에 대한 질문을 던져보아야 합니다.

마키나락스는 머신러닝 모델 개발에 특화된 전문인력들이 기업의 머신러닝 기술 도입에 대한 문제 정의 단계부터 모델 배포 및 사후 관리까지의 전 개발 여정을 돕는 엔드 투 엔드 (End-to-End)솔루션 및 서비스를 제공하고 있습니다.

데이터 모델링 작업부터 배포까지의 전 단계를 하나의 파이프라인으로 통합적으로 제공하는 제품 MakinaRocks Runway는 쿠버네티스(Kubernetes)기반으로 설계되어 온프레미스(On-premise)와 클라우드(Cloud)환경을 모두 지원하므로 기업에 더욱 적합한 환경을 선택하여 이용이 가능합니다. 이로써 각 기업은 기업의 비즈니스 실정에 맞는 머신러닝 개발 환경을 구축할 수 있으며, 오픈소스를 활용하고 있어 손쉬운 확장이 가능하다는 이점이 있습니다.

기업은 새로운 기술을 통해 변화를 이루기 위해, 앞서 이야기한 기업의 현주소를 파악하고, 다양한 상황을 고려해 기업에게 적합한 솔루션 및 시스템을 적절히 도입해야 합니다.

마키나락스는 딥러닝과 강화학습 기반의 산업용 AI 솔루션의 활용을 통해 산업 현장에서 “머신 인텔리전스 (Machine Intelligence)를 통한 산업혁신”을 추구하는 스타트업입니다. 마키나락스는 빠르게 성장하고 있으며, 다양한 직군에서 채용을 적극적으로 진행하고 있습니다. 채용중인 포지션과 마키나락스에 대해 더 자세히 알고 싶으신 분들은 아래의 링크를 방문해 주세요!
https://bit.ly/2TwCSv5

마키나락스 채널 방문하기

🧭Homepage

🗣️LinkedIn

📍Facebook

🗨️Notion

🖥️TechBlog

🎬Youtube

--

--

MakinaRocks
We’re Team MakinaRocks!

안녕하세요. 마키나락스입니다. 마키나락스의 다양한 소식을 전합니다 :)