대부분의 전문 소프트웨어 개발자에게 애플리케이션 라이프사이클 관리(Application Lifecycle Management, ALM)는 당연히 사용하는 툴이다. 그러나 소프트웨어 개발 배경이 없는 경우가 많은 데이터 과학자는 대체로 머신러닝 모델에 라이프사이클 관리를 사용해본 적이 없을 것이다. 머신러닝 라이프사이클 관리를 지원하는 ML옵스(MLops) 환경과 프레임워크가 등장한 후에는 몇 년 전보다 훨씬 쉽게 이 문제를 해결할 수 있다.
머신러닝 라이프사이클 관리란?
쉽게 답하자면 애플리케이션 라이프사이클 관리와 같다고 할 수 있지만 이 답은 틀리기도 하다. 머신러닝 모델의 라이프사이클은 여러 측면에서 소프트웨어 개발 라이프사이클(SDLC)과는 다르기 때문이다.
우선 소프트웨어 개발자는 코드를 쓰기 전에 무엇을 만들고자 하는지를 어느정도 알고 시작한다. 고정된 전체적인 사양이 있거나(폭포수 모델) 없을 수 있지만(애자일 개발), 어느 시점에서든 소프트웨어 개발자는 설명 가능한 기능을 빌드, 테스트, 디버그하기 위해 노력한다. 또한 소프트웨어 개발자는 이 기능이 설계대로 작동하는지 확인하기 위한 테스트도 할 수 있다.
반면, 데이터 과학자는 최적화 알고리즘이 데이터 집합을 설명하기 위한 최적의 가중치 집합을 찾는 실험을 통해 모델을 구축한다. 모델의 종류는 많고 현재 최적을 판단하는 유일한 방법은 모두 시도하는 것이다. 또한 소프트웨어 테스트에는 사실상 없는 개념인 모델의 ‘올바름’에 관한 여러 기준이 존재할 수도 있다.
그러나 일부 최선의 모델(예를 들어 심층 신경망)을 학습시키는 데는 오랜 시간이 걸린다. 그래서 데이터 과학에는 GPU, TPU, FPGA와 같은 가속기가 중요해졌다. 또한 모델이 가능한 한 잘 작동하도록 하기 위해 최초 관찰로부터 데이터를 정제하고 최적의 특성 집합을 엔지니어링하는 데에도 상당한 노력이 필요하다.
고정된 데이터 집합을 사용하는 경우에도 수백 회의 실험과 수십 가지 특성 집합을 추적하는 것은 쉬운 일이 아니다. 실제 환경에서는 시간이 지나면서 데이터가 표류하므로 주기적으로 모델을 튜닝해야 하므로 더욱 어렵다.
머신러닝 라이프사이클을 위한 패러다임은 여러 가지다. 많은 경우 구상부터 시작해서 데이터 수집과 탐사를 위한 데이터 분석으로 이어지고, 거기서 연구개발(수백 가지 실험이 이뤄지는 단계)과 검증을 거쳐 마지막으로 배포와 모니터링까지 진행된다. 모니터링에 따라 주기적으로 1단계로 돌아가서 다른 모델과 특성을 시도하거나 학습 데이터 집합을 업데이트해야 할 수 있다. 실제로 라이프사이클의 모든 단계에서 그 이전 단계로 돌아가야 하는 상황이 발생할 수 있다.
머신러닝 라이프사이클 관리 시스템은 시간 경과에 따라 모든 실험의 순위를 정하고 추적한다. 가장 유용한 구현은 관리 시스템이 배포 및 모니터링과 통합되는 형태다.
머신러닝 라이프사이클 관리 솔루션
머신러닝 라이프사이클 관리를 위한 몇 가지 클라우드 플랫폼과 프레임워크를 살펴봤다. 알고리드미아(Algorithmia), 아마존 세이지메이커(Amazon SageMaker), 애저 머신러닝(Azure Machine Learning), 도미노 데이터 랩(Domino Data Lab), 구글 클라우드 AI 플랫폼(Google Cloud AI Platform), HPE 에즈메랄 ML 옵스(Ezmeral ML Ops), 메타플로우(Metaflow), ML플로우(MLflow), 페이퍼스페이스(Paperspace), 그리고 셀던(Seldon)이다.
알고리드미아
알고리드미아는 머신러닝 포트폴리오에 연결되어 배포, 관리, 확장 기능을 제공할 수 있다. 선택한 플랜에 따라 자체 클라우드, 고객 현장, VM웨어 또는 퍼블릭 클라우드에서 실행이 가능하다. 자체 깃 리포지토리 또는 깃허브에 모델을 유지할 수 있다. 모델 버전을 자동으로 관리하며, 필요에 따라 모델을 구현, 파이프라이닝, 실행하고 CPU와 GPU를 사용해 확장할 수 있다(서버리스). 알고리드미아는 모델 호스팅 외에 모델의 키워드 라이브러리(다음 스크린샷 참조)를 제공한다. 현재 모델 학습에 대한 지원은 다소 부족하다.
아마존 세이지메이커
아마존 세이지메이커는 머신러닝과 딥 러닝을 위한 아마존의 완전 관리형 통합 환경이다. 주피터(Jupyter) 노트북과 실험 관리 및 추적(다음스크린샷 참조), 모델 디버거, 머신러닝 지식이 없는 사용자를 위한 오토파일럿 기능, 일괄 변환, 모델 모니터, 탄력적 인터페이스를 사용한 배포를 결합한 스튜디오(Studio) 환경이 포함된다.
애저 머신러닝
애저 머신러닝은 머신러닝 모델을 학습, 배포, 자동화, 관리, 추적하는 데 사용할 수 있는 클라우드 기반 환경이다. 전통적인 머신러닝부터 딥 러닝, 그리고 지도 학습과 비지도 학습에 이르기까지 모든 종류의 머신러닝에 사용할 수 있다.
애저 머신러닝은 파이썬 또는 R 코드 작성을 지원하며 드래그 앤 드롭 방식의 시각적 디자이너와 오토ML(AutoML) 옵션을 제공한다. 애저 머신러닝 워크스페이스(Workspace)에서 로컬 머신 또는 애저 클라우드를 사용해 고도로 정확한 머신러닝과 딥 러닝 모델을 구축, 학습, 추적할 수 있다.
애저 머신러닝은 파이토치(PyTorch), 텐서플로우(TensorFlow), 사이킷-런(Scikit-learn), 깃, ML플로우(MLflow) 플랫폼과 같은 인기 있는 오픈소스 툴과 상호운용되어 머신러닝 라이프사이클을 관리한다. 또한 다음 스크린샷과 같이 자체 오픈소스 ML옵스 환경도 갖추고 있다.
도미노 데이터 랩
도미노 데이터 사이언스 플랫폼은 데이터 과학을 위한 데브옵스를 자동화하므로 연구에 더 많은 시간을 투자하고 더 많은 아이디어를 더 빠르게 테스트할 수 있다. 작업 자동 추적은 재현성, 재사용성, 협업을 가능하게 해준다. 도미노는 원하는 인프라에서(기본은 AWS) 원하는 툴을 사용하고 실험을 추적하고 결과를 재현 및 비교하고(아래 스크린샷 참조), 한곳에서 작업을 찾고 토론하고 재사용할 수 있게 해준다.
구글 클라우드 AI 플랫폼
구글 클라우드 AI 플랫폼에는 전반적인 대시보드, AI 허브(아래 스크린샷 참조) 데이터 라벨링, 노트북, 작업, 워크플로우 오케스트레이션(현재 프리 릴리스 단계), 모델 등 머신러닝 라이프사이클 관리를 지원하는 다양한 기능이 포함되어 있다. 원하는 모델이 되면 배포해서 예측을 수행할 수 있다.
노트북은 구글 코랩(Colab)에 통합되므로 코랩에서 무료로 실행할 수 있다. AI 허브에는 큐브플로우(Kubeflow) 파이프라인, 노트북, 서비스, 텐서플로우 모듈, VM 이미지, 학습된 모델, 기술 가이드를 포함한 다양한 공개 리소스가 포함된다. 이미지, 텍스트, 오디오, 비디오 및 기타 유형의 데이터에 대한 공개 데이터 리소스를 사용할 수 있다.
HPE 에즈메랄 ML 옵스
HPE 에즈메랄 ML 옵스는 컨테이너를 사용해서 엔터프라이즈급 규모로 운영 가능한 머신러닝을 제공한다. 머신러닝과 딥 러닝 프레임워크를 사용한 샌드박스 실험부터 컨테이너화된 분산 클러스터에서의 모델 학습과 프로덕션 모델 배포 및 추적에 이르기까지 머신러닝 라이프사이클을 지원한다. 인프라에 무관하게 온프레미스에서, 여러 퍼블릭 클라우드(AWS, 애저, GCP 포함) 또는 하이브리드 모델에서 HPE 에즈메랄 ML 옵스 소프트웨어를 실행할 수 있다.
메타플로우
메타플로우는 머신러닝 라이프사이클 관리에 특화된 파이썬 친화적인 코드 기반 워크플로우 시스템이다. 여기 나열된 대부분의 다른 제품에서 볼 수 있는 그래픽 사용자 인터페이스가 없고, 그 대신 @step 같은 데코레이터를 사용한다(아래 코드 발췌 참조). 메타플로우는 방향성 비사이클 그래프(DAG)로 워크플로우를 설계하고 대규모로 이 워크플로우를 실행하고 프로덕션에 배포하는 데 유용하다. 모든 실험과 데이터에 자동으로 버전을 지정해 추적한다. 메타플로우는 최근 넷플릭스와 AWS가 오픈소스화했다. 아마존 세이지메이커, 파이썬 기반 머신러닝 및 딥 러닝 라이브러리, 빅 데이터 시스템과 통합할 수 있다.
ML플로우
ML플로우는 데이터브릭스(Databricks)의 오픈소스 머신러닝 라이프사이클 관리 플랫폼으로 아직 알파 단계에 있다. 호스팅형 ML플로우 서비스도 있다. ML플로우에는 추적, 프로젝트, 모델 영역을 다루는 세 가지 구성요소가 포함된다.
ML플로우 추적을 사용하면 API 호출을 사용해 실험(코드, 데이터, 구성 및 결과)을 기록 및 쿼리할 수 있다. 쿼리를 위한 웹 인터페이스(아래 스크린샷 참조)를 제공한다.
ML플로우 프로젝트는 주로 컨벤션을 기반으로 데이터 과학 코드를 재사용 및 재생산 가능한 방식으로 패키징하기 위한 포맷을 제공한다. 또한 프로젝트 구성요소에는 프로젝트 실행을 위한 API와 명령줄 툴이 포함되어 있으므로 여러 프로젝트를 워크플로우로 연결할 수 있다.
ML플로우 모델은 다양한 다운스트림 툴에서 사용 가능한 머신러닝 모델 패키징에 표준 포맷을 사용한다(예를 들어 REST API를 통한 실시간 제공 또는 아파치 스파크에서의 일괄 추론). 이 포맷은 여러 다운스트림 툴에서 이해할 수 있는 다양한 “변형”으로 모델을 저장할 수 있는 컨벤션을 정의한다.
페이퍼스페이스(Paperspace)
페이퍼스페이스 그라디언트(Paperspace Gradient)는 데이터를 탐색하고 신경망을 학습시키고 프로덕션급 머신러닝 파이프라인을 구축하기 위한 툴 모음이다. 프로젝트, 데이터, 사용자 및 계정을 관리하기 위한 클라우드 호스팅형 웹 UI, 윈도우와 맥 또는 리눅스에서 작업을 실행하기 위한 CLI, 그리고 그라디언트 플랫폼과 프로그램을 사용한 상호작용을 위한 SDK가 포함된다.
그라디언트는 머신러닝 작업을 프로젝트로 체계화한다. 프로젝트는 실험, 작업, 아티팩트, 모델로 구성된다. 그라디언트CI(GradientCI) 깃허브 앱을 통해 깃허브 리포지토리에 프로젝트를 선택적으로 통합할 수 있다. 그라디언트는 주피터와 주피터랩 노트북을 지원한다.
실험(다음 스크린샷 참조)은 인프라 관리 없이 CPU와 옵션인 GPU에서 코드를 실행(예를 들어 심층 신경망 학습)하도록 설계된다. 실험은 단일 작업 또는 복수 작업을 만들고 시작하는 데에 사용된다(예를 들어 초매개변수 검색 또는 분산 학습). 작업은 함께 패키징되고 원격으로 실행되는 코드, 데이터, 컨테이너의 조합으로 구성된다. 페이퍼스페이스 실험은 머신러닝 모델을 생성할 수 있으며 모델은 해석되어 그라디언트 모델 리포지토리에 저장 가능하다.
페이퍼스페이스 코어는 CPU와 옵션인 GPU가 포함된, 페이퍼스페이스의 자체 클라우드나 AWS에서 실행되는 가상 머신을 관리할 수 있다. 이러한 VM에서 그라디언트 작업을 실행할 수 있다.
셀던(Seldon)
셀던 코어(Seldon Core)는 쿠버네티스(Kubernetes)에 신속하게 머신러닝 모델을 배포하기 위한 오픈소스 플랫폼이다. 셀던 디플로이(Seldon Deploy)는 엔터프라이즈 구독 서비스로, 클라우드나 온프레미스에서 원하는 언어 또는 프레임워크를 사용해 대규모로 모델을 배포할 수 있게 해준다. 셀던 알리바이(Seldon Alibi)는 블랙박스 머신러닝 모델 검사 및 해석을 가능하게 해주는 오픈소스 파이썬 라이브러리다. editor@itworld.co.kr