클라우드 전문정보

제목 [1부] 클라우드를 타깃으로 한 MLOps 서비스 구축
등록일 2022-11-01 조회수 1128

마크베이스 / 박상은 본부장

 

1. CI/CD의 개념

 

“소프트웨어 공학에서 CI/CD는 지속적 통합(Continuous Integration)과 지속적 인도(Continuous Delivery) 또는 지속적 배포(Continuous Deployment)의 결합된 방식이다.”

백과사전에서 위와 같이 소개하고 있는 CI/CD의 개념은 애자일 개발 방법론에 있어서 매우 중요하다. 애자일 개발 방법론은 신속한 반복 작업을 통해 가치있는 소프트웨어를 개발하고 지속적으로 전달하기 위한 방법론이다. 고객이 원하는 가치를 지속적으로 전달하고, 피드백을 받고, 이를 소프트웨어에 다시 반영하는 사이클을 신속하게 반복하여 고객의 만족도를 개선한다. 이 사이클을 자동화하고, 속도를 향상시키는 방법 중 하나가 CI/CD의 개념을 도입하고 이를 고도화하는 것이다.

 

CI/CD 중 CI는 오래된 개념이다. CI라는 용어는 1991년에 처음 사용되었으며, CI에 필수적인 버전 관리 시스템은 1970년대까지 거슬러 올라간다. 빌드 및 테스트를 자동화하는 대표적인 오픈소스 CI 도구인 젠킨스(jenkins, https://www.jenkins.io/)도 출시된지 벌써 10년이 넘어간다. 이에 비해 CD는 상대적으로 젊은 개념이다. 예전의 소프트웨어 배포는 복잡한 프로세스와 설치 과정 등이 필요했고, 이를 자동화하는 방법에 대한 표준 절차가 마련되어 있지 않았다. 이로 인해서 지속적 배포 과정의 자동화는 쉬운 일이 아니었다.

시간이 지나면서 CD 과정의 자동화를 위한 기술들이 점차 개발되어 도입되었다. 그리고, 도커와 쿠버네티스가 등장하면서 CD 환경이 극적으로 개선되었다. 최신의 CI/CD는 빌드 및 테스트가 완료된 개발팀의 결과물을 도커 이미지의 형태로 패키징하고 이를 스테이징 또는 제품 환경의 쿠버네티스 클러스터로 자동으로 배포하는 형태로 진행된다. 이 과정의 근간에 도커 및 쿠버네티스 환경이 있다.

CD의 도입은 마이크로서비스 아키텍쳐와도 관련이 있다. 전체 소프트웨어 형상을 배포하는 대신 수정한 소규모의 서비스만 배포하는 경우가 잦아졌으며, CD 도구를 사용해 수정이 발생하여 재배포가 필요한 부분만 자동으로 테스트하고 배포함으로서 이 과정의 시간과 비용을 절감할 수 있게 되었다. 클라우드 서비스 공급자들도 관리형 쿠버네티스 제품을 출시하여 CD의 엔드포인트로 활용할 수 있게끔 기능을 제공하고 있다.

 



 

2. MLOps와 쿠브플로우

 

머신러닝에서도 CI/CD의 개념이 도입되었다. 머신러닝의 경우 제품 관련자들로부터 피드백을 받아 개발을 반복하는 개발 사이클 뿐 아니라, 모형을 평가하고 평가 결과에 따라 모형을 새롭게 제작하는 자체 반복 작업이 매우 빈번하게 발생한다. 그리고 최적의 모형을 만들어 제품 환경에 배포를 한 이후에도 제품 환경의 변화에 따른 데이터 특성 변화를 반영하기 위해서 주기적, 혹은 수시로 모형을 새롭게 학습해 배포하는 과정도 필요하다. 위와 같은 과정을 자동화 함으로서 절차와 과정의 비용을 절감할 수 있다. 개발에서 이러한 과정을 DevOps라고 부르듯, 머신러닝에서는 이를 MLOps(Machnile Learing Operaions)라고 부른다.

DevOps와 마찬가지로 MLOps는 머신러닝의 전 수명주기를 관리할 수 있어야 한다. 이를 위해 좋은 MLOps 도구는 학습과 추론 서비스를 위한 머신러닝 모형 뿐 아니라, 학습과 추론에 사용되는 데이터, 그리고 모형이 배포 될 배포 환경 전체를 관리할 수 있어야 한다. 물론 배포 환경은 온프레미스 뿐 아니라 클라우드를 포함할 수 있어야 한다.

MLOps를 위한 여러 도구가 출시되어 있으며, 그중 쿠브플로우(kubeflow, https://www.kubeflow.org/)는 대표적인 오픈소스 머신러닝 MLOps 도구이다. 이름에서 유추할 수 있듯 쿠브플로우는 쿠버네티스 환경에서 동작하므로, 쿠버네티스 환경에서 구동하는 다른 소프트웨어와 쉽게 통합할 수 있다.

 

쿠브플로우의 구성 요소는 다음과 같다.
  • 쿠브플로우 노트북(Kubeflow Notebooks): 일반적인 파이썬 기반의 데이터 분석 과정에서 주로 사용되는 웹 브라우저 기반의 대화형 데이터 분석 도구인 주피터 노트북을 제공해서 익숙한 데이터 분석 및 머신러닝 환경을 제공해준다. 쿠브플로우 노트북은 쿠버네티스 파드 형태로 동작된다. 사용하는 IDE의 종류, 분석 패키지, 분석 하드웨어 환경에 따른 다양한 이미지를 제공하며 사용자는 이 중 하나를 선택해 별도의 패키지 설치 없이 빠른 분석 작업 환경 구성이 가능하다.
  • 학습 오퍼레이터 (Training Operators): 쿠버네티스는 클러스터 상의 리소스를 적절히 배분, 관리하여 어플리케이션의 성능을 관리할 수 있다. 학습 오퍼레이터는 쿠버네티스 클러스터의 리소스를 사용해 텐서플로우(Tensorflow)를 비롯한 쿠브플로우가 지원하는 머신러닝 라이브러리를 통한 학습 과정이 분산 처리될 수 있도록 지원하여 학습 성능을 향상시킬 수 있다.
  • Katib: 머신러닝 모형 학습 과정에서 발생하는 반복 작업의 대부분은 모형의 하이퍼파라미터를 최적화 하기 위한 반복 작업이다. 모형은 학습률(learning rate), 네트워크의 레이어의 개수, 그리고 각 레이어의 노드의 수 등의 하이퍼파라미터 설정이 필요하며, 같은 데이터, 같은 모형이라 할 지라도 이 설정에 따라 모형의 성능이 달라진다. 이 값을 바꾸는 실험의 반복 과정을 통해 최적 하이퍼파라미터를 찾아야 한다. Katib은 이 실험 과정을 자동화하는 데 사용할 수 있는 도구이다. 이런 실험을 자동화해 작업의 효율과 속도를 향상시킬 수 있다.
  • 쿠브플로우 파이프라인(Kubeflow Pipeline): 쿠브플로우 파이프라인은 학습에서 모형 배포까지의 전체 과정을 관리해 주는 플랫폼이다. 모형을 만들고 배포하는 과정의 각 구성요소를 UI를 사용해 전 과정을 오케스트레이션한다.
이러한 구성요소들을 사용해 모형을 만드는 첫 단계부터 제품 환경에 배포하는 마지막 단계까지 쉽고 효율적으로 처리할 수 있도록 도와준다.

 



 

3. 클라우드 서비스 상에서의 MLOps

 

앞에서 소개한 쿠버네티스를 활용한 MLOps 도구는 온프레미스 환경 뿐 아니라 클라우드 환경에서도 쿠버네티스 클러스터를 구성하여 활용할 수 있다. 하지만 클라우드 서비스를 사용해 개발 및 제품 환경을 구성한다면, 클라우드 공급자가 제공하는 DevOps 기능을 활용해 서비스의 안정성과 환경 구축의 난이도를 낮추고 전체 비용을 절감할 수 있다.

클라우드 환경에서 MLOps 서비스는 특성 상 온프레미스와 차별화된 다음의 요구사항을 만족시켜야 한다.
  • 스팟 인스턴스 또는 서버리스 학습 기능: 머신러닝 환경의 큰 진입 장벽 중에 하나가 머신러닝을 위한 환경 구축이다. 특히 대규모의 모형을 단속적으로 학습하는 경우 별도의 GPU 기반 학습용 서버를 구축하는 것 보다 필요할 때 학습을 위한 환경만 임대해 사용할 수 있는 스팟 인스턴스 또는 서버리스 학습 기능이 비용 측면에서 유리하다.
  • 학습자동화: 머신러닝 모형을 만드는 과정에서 모형 하이퍼파라미터를 최적화하기 위한 실험을 반복해야 한다. AutoML 등 이 실험을 자동화하는 도구들이 있다. 자동화된 학습은 수작업의 빈도를 줄여주는 것 뿐 아니라 클라우드 환경을 사용하는 시간도 줄여주며, 체계적인 학습 실험을 통한 정확한 하이퍼파라미터를 추천하는 등 성능상의 장점도 존재한다.
  • 워크플로우 파이프라인과 엔드포인트 배포: 제품을 위한 머신러닝 워크플로우에는 데이터 소스, 데이터 전처리, 모형 학습, 모형 평가와 같은 머신러닝의 일반적인 머신러닝 절차 뿐 아니라 완성된 모형을 엔드포인트에 배포하는 과정까지 전주기 프로세스를 정의하고, 이를 최대한 자동화하여 실행할 수 있어야 한다. 또한 이 과정에서 포함되는 여러 환경과 각 환경에 따른 설정을 간편하게 만들어주는 UI 기반 도구가 함께 제공되어 편의성을 극대화할 수 있어야 한다.
    엔드포인트 배포는 클라우드 서비스에서 제공하는 서버리스 배포 뿐 아니라 클라우드 혹은 온프레미스 환경을 타겟으로 한 배포가 필요하다. 베어메탈 서버, 클라우드 인스턴스 뿐 아니라 관리형 쿠버네티스 환경을 타겟으로도 배포가 가능하도록 하여, 유연한 엔드포인트 지정도 필요하다.
  • 사전 학습된 모형: 대규모의 모형을 만들기 위해서는 목적에 맞는 대량의 데이터가 필요하다. 이런 작업을 맨땅에서 시작하는 대신 대규모 데이터를 사용해 미리 만들어진 모형을 가져다가 목적에 맞게 미세조정(Fine Tuning)하는 접근 방법이 널리 사용되고 있다. 이를 통해 데이터의 준비가 간편해지고, 목적에 맞는 모형의 학습에 들어가는 비용을 절감할 수 있다. 언어 처리 분야의 버트(Bert), 이미지 처리 분야의 ResNet 등이 대표적이다. 클라우드 MLOps에서는 이러한 모형을 사용하기 위한 쉬운 접근 방법을 제공해서 작업자의 효율을 향상시킬 수 있는 방법을 제공해야 한다.
  • No Code 또는 Low Code 학습: 한때 머신러닝은 복잡한 머신러닝 코드를 작성할 수 있는 엔지니어의 전유물이었다. 그러나 현업에서 머신러닝이 널리 사용되면서 다양한 계층의 작업자들이 머신러닝을 통해 인사이트를 확보해야 하는 시대가 되었으며, 이에 따라 코드를 작성하지 않거나, 필수적인 최소한의 코드만으로 머신러닝이 가능한 도구들이 시장에 출시되고 있다. 클라우드 MLOps에서도 머신러닝 코드를 작성하는 대신 대체 인터페이스를 제공, 쉽고 간편하게 머신러닝을 구동시키고 결과를 볼 수 있는 기능을 제공하여 머신러닝의 접근성을 향상시킬 수 있다.
 



저작권 정책

K-ICT 클라우드혁신센터의 저작물인 『클라우드를 타깃으로 한 MLOps 서비스 구축』은 K-ICT 클라우드혁신센터에서 마크베이스 박상은 본부장에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의 저작권정책에 따라 이용할 수 있습니다.
다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.