Google MLOps Guide

d4v1d·2022년 2월 21일
1

ML: Machine Learning

목록 보기
3/5

개요

Google Cloud에서 발표한 MLOps에 대한 실무자 가이드: 머신러닝의 지속적 배포 및 자동화를 위한 프레임워크를 읽고 내용을 정리한 포스트입니다. 제 자신의 이해를 돕기 위해 모르는 용어들을 같이 정리해두었습니다. 🔥

DevOps

DevOps란?

What is DevOps?
DevOps는 개발과 운영을 결합하여 소프트웨어의 개발-배포를 더 효율적으로, 빠르고 안전하게 만들어주는 개념입니다.

MLOps

MLOps란?

MLOps가 무엇인고?
MLOps는 ML시스템에 DevOps를 적용한 개념입니다. MLOps는 ML의 전체 lifecycle을 관리해야 하는데, 단순히 ML 모델뿐만 아니라 데이터 수집/분석부터 모델 학습/배포까지 전체 과정을 하나의 AI lifecycle로 보고 MLOps의 대상으로 봅니다.

Overview of MLOps lifecycle and core capabilities

현 기업들의 MLOps 실태

AI/ML에 대한 이해와 관심이 높아지고 있지만, 파일럿 서비스와 PoC를 넘어선 기업은 아직 소수입니다. 이미 AI 파일럿을 개발한 기업들 중 상당수는 아직 제대로 된 어플리케이션을 배포하지도 못하고 있습니다.
이러한 기업들에게 자동화된 유연한 ML 프로세스(automated and streamlined ML process)가 반드시 필요합니다! 이 프로세스는 ML 모델을 프로덕션 단계로 배포하는 데 도움을 줄 뿐만 아니라 끊임없이 변화하는 환경에서 더 많은 use cases를 위해 프로젝트를 스케일링(scaling, 서비스 크기나 수를 확장하는 것)하는 데 있어 위험 요소를 관리할 수 있게 도와줍니다. 또한, 어플리케이션이 자동으로 관리되면서도 기업의 비즈니스 목표를 잃지 않게끔 해줍니다.

기존 ML 어플리케이션이 가지고 있는 복잡성

  • ML 모델을 학습하기 위해 high-quality data를 준비하고 유지해야 함
  • 실제 프로덕션에서 모델의 성능 저하가 있는지 지속적으로 모니터링해야 함
  • 현재 진행중인 실험(새로운 데이터, ML 알고리즘, hyperparameter 등)을 수행한 다음 이를 모니터링해야 함
  • 끊임없이 새로운(fresh) 데이터로 모델을 재학습시켜 모델의 정확성을 유지해야 함
  • 데이터와 학습 환경과 서비스 환경 사이의 런타임 의존성이 일관되지 않는 데에서 기인하는 학습-서비스 불균형을 해소해야 함
  • 모델의 공정성과 대립되는 의견들을 고려하고 처리해야 함

MLOps를 채택함으로써 얻을 수 있는 이점

  • 개발 사이클이 짧아지므로 시장에 더 빨리 내놓을 수 있음
  • 여러 팀이 협업하기에 더 좋음
  • ML 시스템의 안정성, 성능, 확장성, 보안 향상
  • 운영/관리 절차가 유연해짐
  • ML 프로젝트의 투자 대비 성과가 증가함

ML-enabled 시스템 설계하기

ML-enabled 시스템을 설계한다는 것은 데이터 엔지니어링, ML 엔지니어링, 그리고 어플리케이션 엔지니어링 업무를 유기적으로 결합하는 과정을 다방면으로 책임지는 것을 의미합니다.

데이터 엔지니어링은 데이터 수집, 통합, 정제 등의 과정을 거쳐 운영과 데이터 분석 및 ML 업무를 수월하게 만드는 역할을 합니다. 따라서 분석과 ML을 성공적으로 이끄는 중요한 열쇠라고 할 수 있죠. 튼튼한 데이터 엔지니어링 절차와 기술을 가지고 있지 않은 기업은 아마 BI, 데이터 심층 분석 또는 ML 프로젝트를 성공적으로 셋업하지 못할 가능성이 높습니다.

MLOps Lifecycle

  • ML development가 견고하고 재생산이 가능한 모델 학습 절차(파이프라인 코드를 학습하는 것)를 개발하고 실험합니다. 이는 데이터 준비부터 모델 학습/평가를 위한 변환까지 많은 업무를 포함합니다.
  • Training Operationalization 반복적이고 안정적인 파이프라인 학습 과정을 패키지화, 테스트, 배포하는 절차를 자동화하는 것에 초점을 둡니다.
  • Continuous training 새로운 데이터가 추가되거나 코드가 변경되었을 때, 또는 일정에 맞춰 파이프라인 학습을 반복합니다. 이때 새로운 학습 설정이 포함될 수 있습니다.
  • Model deployment 온라인 실험이나 프로덕션 서빙에 필요한 서빙 환경에 필요한 모델을 패키지화, 테스트, 배포합니다.
  • Prediction serving 예측에 대한 프로덕션에 배포된 모델을 서빙합니다.
  • Continuous monitoring 배포된 모델의 성능과 효율을 모니터링합니다.
  • Data and model management 감사 가능성, 추적 가능성 및 규정 준수를 지원하기 위해 ML 아티팩트를 관리하기 위한 중앙 교차 기능입니다. 또한 ML 자산의 공유성, 재사용성 및 검색 가능성을 촉진할 수 있습니다.

MLOps: An end-to-end workflow

아래 그림은 MLOps 프로세스 간 상호작용(key input부터 output까지의 high-level flow)을 나타낸 것입니다.

MLOps capabilities

아래 그림은 MLOps에 일반적으로 필요한 핵심적인 기술을 나타낸 것입니다.

Experimentation

데이터 사이언티스트와 ML리서처들이 EDA를 공동으로 수행하고, 모델 아키텍쳐의 프로토타입을 만들고, 학습 루틴을 기술하게끔 만드는 역할을 담당합니다. 모듈화되고, 재사용과 테스트가 가능한 (그리고 버전 관리가 되는) 소스 코드를 작성할 수 있도록 ML 환경이 갖추어져있어야 합니다.

  • Git과 같은 버전 컨트롤 툴이 결합된 노트북 환경을 제공
  • 재생산성과 비교를 위해 데이터, 하이퍼파라미터, 평가 메트릭 같은 정보들을 포함한 실험을 추적
  • 데이터, 모델을 분석 & 시각화
  • 데이터셋을 탐색하고, 시도할 것들을 찾아내어 구현된 결과를 리뷰
  • 제공하고자 하는 플랫폼에서 ML 서비스와 다른 데이터 서비스들을 결합

Data processing

ML을 위한 많은 양의 데이터를 ML 개발/연속적인 파이프라인 학습/예측 제공 차원에서 준비하고 변환하는 단계입니다.

  • 빠른 실험과 프로덕션 환경에서 장기 실행 작업을 위해 (노트북에서처럼) 대화형 실행을 지원
  • 다양한 데이터 구조와 형식에 대한 데이터 인코더/디코더는 물론, 광범위한 데이터 소스와 서비스들에게 데이터 커넥터를 제공
  • 풍부하고 효과적인 데이터 변환과 정형 데이터(표), 비정형 데이터(텍스트, 이미지 등)를 다루는 ML feature engineering을 제공
  • ML 학습, 서빙 워크로드를 위한 확장 가능한 배치데이터 처리 스트림을 지원

Model training

강력한 ML 모델 학습 알고리즘을 효율적으로, 그리고 저비용으로 실행하는 단계입니다. 모델 학습은 학습에 사용되는 모델과 데이터 셋의 크기로 확장할 수 있어야 합니다.

  • 일반적인 ML 프레임워크와 사용자화 런타임 환경을 모두 지원
  • 여러 GPU와 작업자마다 다양한 전략을 가지고 대규모 분산 학습을 지원
  • ML 가속기의 주문형 사용을 활성화합니다.
  • 효율적인 하이퍼파라미터 튜닝과 대규모 타겟 최적화
  • 자동화된 ML(AutoML)을 내장 기능으로 제공합니다. 이상적으로는 기능 선택의 자동화/엔지니어링과 모델 아키텍처 검색 및 선택의 자동화를 포함합니다.

Model evaluation

모델 효율성을 실험 단계에서는 대화형으로, 프로덕션 환경에서는 자동으로 평가할 수 있습니다. 이 단계에서의 핵심 기능은 다음과 같습니다.

  • 대규모 데이터셋 평가에 대한 모델의 배치 성능을 평가
  • 다양한 데이터 조각들의 모델에 대해 미리 정의되어 있거나 사용자화된 평가 메트릭을 계산
  • 다양한 연속 학습을 실행하는 과정 속에서 학습된 모델의 예측 성능을 추적
  • 다양한 모델들의 성능을 시각화하고 비교
  • What-if analysis(가정 분석)와 편향/공정성 이슈를 식별하기 위한 툴을 제공
  • 설명 가능한 다양한 AI 기술을 이용하여 모델 동작 해석을 가능하게 함

Model serving

프로덕션 환경에서 모델을 배포하고 제공하는 단계입니다.

  • Low-latency, near-real-time 예측(online)과 high-throughput batch(offline)에 대한 지원을 제공
  • 일반적인 ML 제공 프레임워크(TensorFlow Serving, TorchServe, Nvidia Triton, 그 외 Scikit-learn이나 XGBoost 모델을 위한 제공 환경 등)은 물론, 사용자화된 런타임 환경을 위한 기본 지원 기능을 제공
  • 필요한 전/후처리 루틴 이외에도, 결과가 집계되기 전에 계층적으로 혹은 동시다발적으로 호출되는 여러 모델 예측 루틴을 가능하게 함
  • Autoscaling(자동 확장)이 가능한 ML 추론 가속기를 효율적으로 사용하여 급증하는 워크로드를 일치시키고 비용-레이턴시 간 밸런스를 맞춤
  • 어떤 모델의 예측에 대한 feature attribution과 같은 기술을 이용해 모델을 설명할 수 있게 만듦
  • 분석을 위한 예측 서비스 요청과 응답 로그를 기록

Online experimentation

새로 학습된 모델을 프로덕션에 발매하기 전에, 이 모델이 프로덕션 설정에서 기존 모델 대비 어떤 성능을 보일지를 이해합니다. 예를 들어, 서비스 인구 중 일부를 대상으로 온라인 실험을 진행하여 새로운 추천 시스템이 클릭과 대화로 얼마나 이어지는지를 알 수 있습니다. 온라인 실험의 결과는 모델 레지스트리 기능과 통합되어 모델을 프로덕션에 출시할지를 수월하게 결정할 수 있어야 합니다. 성능이 좋지 않은 모델은 버리고, 성능이 좋은 모델은 장려하는 결정을 도와줌으로써 ML 상품들의 안정성을 높일 수 있습니다.

Model monitoring

예측 퀄리티와 비즈니스 지속성을 보장하기 위해, 배포된 모델이 프로덕션에서 얼마나 효과적이고 효율적인지를 모니터링합니다. 만약 모델이 오래 되어 업데이트할 필요가 있는 경우 알려줍니다.

  • 레이턴시나 서비스-리소스 사용률과 같은 모델 효율성 메트릭을 측정
  • 데이터 왜곡을 감지
  • (실측 레이블이 사용 가능할 때) 배포된 모델의 효율 성능을 지속적으로 평가하기 위해 모델 평가 기능을 모니터링에 통합

ML pipelines

프로덕션에서의 복잡한 ML 학습과 예측 파이프라인을 자동화하고 오케스트레이트합니다. ML 워크플로우는 파이프라인에서 각자의 업무를 수행하는 다양한 컴포넌트들을 조정합니다.

  • 필요에 따라, 스케줄에 맞추어, 또는 특정 이벤트에 응하여 파이프라인을 수행
  • 로컬에서 대화형 실행으로 ML 개발 디버깅을 가능하게 함
  • ML 메타데이터 추적 기능과 더불어 파이프라인 실행 파라미터를 포착하고 결과물을 생산
  • 일반적인 ML 작업을 위한 내장 컴포넌트는 물론 커스텀 컴포넌트도 제공
  • 로컬 머신, (확장 가능한) 클라우드 플랫폼 등 다양한 환경에서 실행됨
  • 파이프라인을 디자인하고 빌드하기 위해 GUI 기반 툴 제공(옵션)

Model registry

중앙 리포지토리에서 ML 모델의 lifecycle을 관리할 수 있습니다. 이는 모델 생산 퀄리티를 보장하고 모델 검색을 가능하게 합니다.

  • 학습/배포된 ML 모델을 등록하고, 조직화하고, 추적하고, 버전을 관리
  • 배포의 용이성을 위해 모델의 메타데이터와 런타임 디펜던시를 저장
  • 모델 도큐멘테이션과 리포트를 유지 보수
  • 모델에 대한 온/오프라인 평가 메트릭을 추적
  • 모델 런치 절차를 관리: 리뷰, 승인, 출시, 롤백. 이러한 의사결정들은 수많은 오프라인 성능/공정성 지표와 온라인 실험 결과를 바탕으로 이루어짐

Dataset and feature repository

ML 데이터 자산의 정의와 스토리지를 통합할 수 있습니다. 좋은 상태의 데이터 자산을 가진 중앙 리포지토리를 운영함으로써 공유, 검색, 재사용을 용이하게 할 수 있습니다. 리포지토리는 학습과 추론을 위한 데이터 일관성을 제공합니다. 이는 데이터 사이언티스트와 ML 리서처들이 데이터를 준비하고 feature engineering을 하는 데 시간을 절약해줍니다. 이것들은 원래 굉장한 시간을 잡아먹는 절차이죠!

  • 데이터 자산을 공유, 검색, 재사용, 버전 관리하기 쉽게 만듦
  • 이벤트 스트리밍과 온라인 예측 워크로드를 위한 실시간 수집/low-latency 서비스가 가능
  • ETL, 모델 학습, 워크로드 평가를 위한 High-throughput batch 수집과 서비스가 가능
  • 특정 시점의 쿼리를 위한 feature versioning
  • 다양한 데이터 양식 지원(테이블, 이미지, 텍스트 등)

ML 데이터 자산은 엔터티 기능(실재하는 기능) 수준에서 관리되거나, 혹은 전체 데이터셋 수준에서 관리됩니다. 예를 들어, feature repository는 고객이라는 엔터티를 포함하는데, 여기에는 연령, 우편 번호, 성별과 같은 기능들이 들어있을 수 있습니다. 반면에, dataset repository는 고객 이탈과 같은 데이터셋을 포함하는데, 여기에는 고객과 상품의 엔터티의 기능들뿐만 아니라 고객의 구매/웹 활동 이벤트 로그가 들어있을 수도 있습니다.

ML metadata and artifact tracking

다양한 유형의 ML 아티팩트들은 다양한 MLOps lifecycle 절차들을 통해 생산됩니다. 여기에는 기술 통계, 데이터 스키마, 학습된 모델, 그리고 평가 결과들이 들어있죠. ML 메타데이터는 이러한 정보들을 담은 데이터로, 위치/유형/특성/실험과 실행으로의 연결관계 등을 나타내고 있습니다. ML metadata and artifact tracking은 다른 모든 MLOps 기능들의 기반이 되는 기능으로, 복잡한 ML 작업과 파이프라인의 재생산과 디버깅을 가능하게 해줍니다.

  • ML 아티팩트의 추적 가능성을 제공
  • 실험과 파이프라인 파라미터 설정을 공유하고 추적
  • ML 아티팩트를 저장, 접근, 조사, 시각화, 다운로드, 아카이브함
  • 다른 모든 MLOps 기능들과 결합

마무리

원문을 번역하는 과정에서 다소 어색하거나 추상적인 표현이 많았습니다. 특히, 문서 전체에 걸쳐 반복되는 재생산성Reproducibility, 워크로드Workload, 추적Tracking, 평가evaluation 등의 개념을 확실히 이해하는 것이 필요하다고 생각합니다!
성공적인 MLOps는 ML 기반 개발과 서비스를 안정적으로, 또 효율적으로 자동화하고 유지 보수할 수 있는 시스템을 의미하고, 이를 구현하기 위해서는 위와 같은 각 MLOps 절차들이 갖추어져있어야 합니다. 🌼

profile
데이터 엔지니어/백엔드 개발자 d4v1d의 개발 일지🐯

0개의 댓글