brunch

You can make anything
by writing

C.S.Lewis

by 서진호 May 17. 2021

앤드류 응 교수가 말하는 MLOps

ML Engineering for Production 코세라 강의 후기

코세라 창업자이자 전 스탠퍼드 인공지능 교수이며 지금은 DeepLearning.AI 회사 창업자로 일하고 있는 앤드류 응은 이번에도 코세라를 통해 Machine Learning Engineering for Production Specialization (MLOps)이라는 전문화 과정을 내놓았습니다! 

이 시리즈는 머신러닝의 기본적인 원리부터 응용 그리고 더 높은 레벨까지 순서적으로 계속해 내놓고 있는데, 이번 과목 또한 그 연속상에서 보면 전체 ML 프로세스를 한눈에 볼 수 있습니다. 안 그래도 저는 코세라 커뮤니티의 콘텐츠 어드바이저 자격으로 이 과목을 베타 테스트 중이었는 데 이 과목을 듣기 전에 여러분들께 스포일을 흘려 미리 알 수 있게끔 가이드라인을 한번 작성해 보았습니다.       


왜 MLOps 인가?

 

앤드류 응이 말하기를 이제 주피터(jupyter) 노트북에서 정확한 신경망 모델을 훈련시켰습니다. 여러분은 축하받을 만합니다. 그러나 그다음에는 무슨 일을 했야 하는가? 모든 작업이 다 끝났는가? 이제 연구 실험실에서 벗어나 실세계로 상품화 서비스를 위한 머신 러닝 오퍼레이션은 접어들어야 합니다. 


머신 러닝은 일반적으로 농업에서 폐기물 관리에 이르는 것처럼 산업 분야로 진출하기 전에 실험적인 연구 환경에서 시작됩니다. 그러나 거기에 도달하는 것은 간단한 문제가 아닙니다. 상품 출시 또는 시장 출시 엔지니어링에서는 까다로운 사용자들 앞에 모델을 배치하고 실제 상황에서 어떠한 일이 발생할지 몰라도 그 결과가 유용하게 유지되도록 해야 합니다. 


MLOps는 이러한 문제를 해결하는 데 도움을 주며 모델을 실제 세계로 옮기는 데 더 많은 일을 하도록 해 줍니다. 특히, 모든 단계를 이해하고 올바른 접근 방식을 취하기 위한 직관을 개발해야 합니다. 따라서 개별 엔지니어와 팀이 모델을 사용자의 손에 넣는 데 도움이 되는 신흥 분야가 바로 MLOps입니다. 


[사진 1 - Machine Learning Engineering for Production Specialization 전문화 과정 강사]

그래서 앤드류 응은 DeepLearning.ai 사를 통해 MLOps를 위한 머신 러닝 엔지니어링을 시작한다고 밝혔습니다. 또한 좀 더 전문적으로 가르치기 위해 구글에서 TensorFlow Extended(TFX)로 활용을 많이 하고 있는 로버트 크로위와 ML 리더인 로렌스 모르니와 함께 가르칩니다. 또한 광범위한 산업 분야에서 회사와 일한 Landing.AI 팀의 통찰력도 포함됩니다. 


이 전문화 과정은 그러한 프로세스의 최전선에 중점을 두고 있습니다. 머신 러닝 모델을 빌드하고 생산(제품 출시)으로 넣는 작업은 일관된 프로세스와 도구를 사용하여 구축된 부티크 시스템에 개별적으로 제작된 극적인 변화를 겪고 있습니다.  


내가 첫 모델을 완성했고 이걸로 이제 편집할 수 있다고 말한 것처럼 C++ 파일들을 첨부 파일로서 공동 작업자들에게 이메일로 보냄으로써 코드 버전 컨트롤을 했던 기억이 난다고 앤드류 응은 말을 덧붙였습니다.  그 과정은 힘들고 오류가 발생하기 쉽다고 강조했습니다. 팀 코딩을 더욱 관리할 수 있게 만드는 버전 관리를 위한 도구 및 절차가 있음을 감사합니다.  


그리고 C ++ 또는 Python 언어를 이용하여 신경망을 구현하고 distBelief(Large Scale Distributed Deep Networks)의 첫 번째 버전인 텐서플로우의 첫 번째 버전에서 작업하는 것을 회상한다고 했습니다. 이어서 그는 이제는 Tensorflow와 Pytorch와 같은 프레임워크와 개발 도구는 복잡한 신경망을 훨씬 쉽게 만듭니다. 그러나 생산 시스템을 구축하고 배치하는 것은  데이터 문제 발견 및 수정, 데이터 드리프트 및 콘셉트 드리프트, 학습 및 훈련 관리, 오류 분석 수행, 성능 감시, 모델 푸시 및 컴퓨트 및 스케일링 관리와 같은 것들을 여전히 많은 수동 작업이 필요합니다.


이 전문화 과정에서 이러한 작업은 더 체계적이 되고 있는 것을 배웁니다. MLOps는 엔지니어가 확장 및 반복적으로 모델을 안정적으로 반복적으로 빌드, 배포, 모니터링하도록 권한을 부여할 것을 약속하는 일련의 절차입니다. Git, Tensorflow 및 Pytorch가 버전 제어 및 모델 개발을 보다 쉽게 만들었습니다. 


그러므로 MLOps 도구는 머신을 훨씬 더 생산적으로 만들어 줍니다. MLOps  표준 절차 및 도구는 여전히 진화하고 있으므로 분야를 조사하고 최첨단 기술로 전달하려고 노력하는 것이 흥미롭습니다. 끝으로 앤드류 응은 여러분들이 ML 개발의 이번에도 똑같이 흥미로운 것을 알게 되기를 소망하고, 이 전문화 과정으로부터 얻은 기술은 가치 있는 ML 시스템을 구축하고 배포하는 데 도움이 된다고 강조했습니다. 


Machine Learning Engineering for Production (MLOps) 전문화 과정 소개와 후기 


그렇다면, 코세라에서 MLOps (Machine Learning Engineering for Production Specialization) 과정을 소개하겠습니다. 이 전문화 과정에서는 머신 러닝 전체 프로세스의 기본 개념과 현대 소프트웨어 개발 및 머신러닝 오퍼레이션 엔지니어링의 전문 지식을 배워 실제 인공지능 모델을 상품화 서비스로 개발할 수 있는데 초점을 맞추고 있습니다.


총 4가지 코스로 되어 있는데, 첫째, Introduction to Machine Learning in Production에서는 프로젝트 범위 지정, 데이터 요구 사항, 모델링 전략, 배포 제약 조건 및 요구 사항과 같은 다양한 구성 요소를 식별하고 ML 프로덕션 시스템 종단 간을 설계합니다. 모델 기준을 설정하고, 아이디어 드리프트를 해결하고, 상품화 서비스를 위한 생산된 ML 애플리케이션을 개발, 배포 및 지속적으로 개선하기 위한 프로세스의 프로토타입을 만드는 방법을 배웁니다.


둘째, Machine Learning Data Lifecycle in Production 과정에서는 데이터셋을 수집, 정리 및 검증하고 데이터 품질을 평가하여 데이터 파이프라인을 구축합니다. TensorFlow Extended로 픽처 엔지니어링, 변환 및 선택을 구현하고 데이터에서 가장 강력한 예측 능력을 얻을 수 있습니다. 또한 데이터 계보 및 메타 데이터 도구를 활용하여 데이터 수명주기를 설정하고 엔터프라이즈 데이터 스키마로 데이터 진화를 따를 수 있도록 배웁니다.


셋째, Machine Learning Modeling Pipeline 과정에서는 실제 상품화 서비스를 위한 생산 전문화를 위한 머신 러닝 엔지니어링의 세 번째 과정에서는 다양한 서비스 환경을 위한 모델을 구축합니다. 모델링 리소스를 효과적으로 관리하고 오프라인 및 온라인 추론 요청을 가장 잘 처리하는 도구와 기술을 구현합니다. 분석 도구 및 성능 메트릭을 사용하여 모델 공정성, 설명 가능성 문제를 해결하고 병목 현상을 완화하는 방법을 배웁니다. 


넷째, Deploying Machine Learning Models 과정에서는 다양한 인프라가 필요한 모델 서비스를 생산, 확장 및 모니터링하여 배포 파이프라인을 제공합니다. 모델 붕괴 및 성능 저하를 완화하는 절차를 수립합니다. 모범 사례를 수립하고 점진적 제공 기술을 적용하여 지속적으로 운영되는 생산 시스템을 유지 및 모니터링합니다.


[사진 2 - 전체 머신 러닝 프로세스]


코세라 베타 과정에서는 모든 과정이 오픈된 것이 아니라서 저는 Introduction to Machine Learning in Production 과정만 했습니다. 위에서 설명한 대로 동영상으로 강의로 진행되며, 실습은  로컬 컴퓨터에서나 도커를 이용하여 머신 러닝 모델을 배포하는 자습서를 해 볼 수 있습니다. 또한 간단히 퀴즈가 준비되어 있습니다. 아쉽지만 영어로 강의가 진행되지만 영어 스크립트가 준비되어 읽어 보실 수 있습니다.


요즘 머신 러닝 및 딥 러닝 개념을 이해하는 것은 필수적이지만 효과적인 AI 경력을 쌓으려면 상품화 서비스를 위한 프로덕션 엔지니어링 기능도 필요하다고 봅니다. 이러한 생산을 위한 머신 러닝 오퍼레이션 엔지니어링은 머신 러닝의 기본 개념과 최신 소프트웨어 개발 및 엔지니어링 역할의 기능적 전문 지식을 결합하여 생산 준비 기술을 개발하는 데 도움을 줍니다.


끝으로 실제 사용을 위해 모델을 배포하는 것은 일반적으로 아카데미 연구 분야에서 해결되지 않는 산업적 문제입니다. 결과적으로 이 주제에 대한 솔루션은 주요한 AI 회사에서 나오는 경향이 있습니다. 이러한 회사는 대규모로 모델 설계, 훈련, 배포 및 유지 관리를 관리하기 위한 플랫폼을 구축했으며, 현재 관행과 문제에 대한 통찰력을 제공합니다. 그 외에도 몇몇 대담한 연구자들은 실제 응용 프로그램에서 중요한 것으로 입증된 기술을 개발했습니다. 


[사진 3 - TensorFlow Extended] 


한 가지 이 전문화 과정은 구글 클라우드 엔지니어들과 참여했기 때문에 구글의 TFX와 ML 파이프라인과 배포 방법 기반으로 하고 있다는 것을 참조해 주세요! 그렇다고 구글 클라우드의 MLOps 나 TFX에 대해서는 깊게 기술들을 다루지 않기 때문에 좀 더 기술적인 내용을 배우시려면 Preparing for Google Cloud Certification: Machine Learning Engineer Professional Certificate 전문화 과정도 함께 등록해서 MLOps 기본 개념부터 배우시는 것이 좋습니다.

 

만일 AWS와 Azure에서의 ML 파이프라인 생성법과 모델 배포 그리고 MLOps는 구글 클라우드와는 조금 다른 방법으로 제안하고 있기 때문에 각 회사들의 솔루션과 아키텍처를 따로 찾아보는 것이 좋습니다. 아직 코세라에서 이러한 과정은 보지 못해서 추후에 나온다면 소개하겠습니다.  


모두를 위한 MLOps


크레이그 와일리는 기존의 수동으로 모델을 배포하던 것을 인공지능을 이용하여 자동화로 배포했습니다. 그는 아마존에서 10 년 동안 아이디어 발상에서 출시에 이르기까지 회사의 웹 기반의 머신 러닝 플랫폼인 세이지 메이커를 이끌었습니다. 지금은 구글 클라우드 AI 서비스의 최고 제품 관리자로서 인공지능의 연구와 실제 출시 사이의 격차를 줄이기 위해 MLOps 가 모두에게 필요하다고 했습니다. 크레이그 와일리가 정의한 MLOps는 머신 러닝 모델이 모델을 구축한 사람들이 기대했던 방식으로 실제 상품화 상황에서 수행되도록 하는 데 도움이 되는 일련의 프로세스 및 도구를 말한다고 했습니다. 


예를 들어, 코로나 전염병 이전에 사람들의 행동을 기반으로 모델을 구축했다면 작년 3월 모든 사람의 행동이 갑자기 바뀌었을 때 엉망이 되었을 것입니다. 사람들이 예전처럼 상점에서 쇼핑하지 않았기 때문에 온라인 전자 상거래 사이트로 많은 거래가 이루어졌습니다. 이 경우 MLOps는 변경 사항을 인식하고 최신 데이터를 가져와서 상품에 대한 추천 기능을 수행했습니다. 


또한 2019년 스포티파이(Spotify)는 파이프라인 기술을 사용했으며 데이터 과학자의 생산성이 700 % 증가했다는 블로그에 게시했습니다. 일반적으로 우리는 생산성의 30 % 증가만 해도 대단한데, 700%는 엄청난 결과라고 놀라움을 금치 못했습니다. 


파이프라인을 사용하기 시작하고 모두가 모델을 컴포넌트로 나누면 모델 구축 방식이 바뀝니다. 더 이상 주피터(Jupyter) 노트북에서 깜박이는 커서로 시작할 필요가 없다고 강조합니다. 소규모 팀의 파이프라인의 컴포넌트 저장소로 이동하여 데이터 수집, 모델 평가, 데이터 평가 등을 위해 수집합니다. 따라서 처음부터 끝까지 3,000 줄의 말뭉치의 코드를 작성하는 대신 작은 코드 조각으로 쪼개어 변경하고 있다고 합니다. 덧붙혀, 데이터 과학자는 비용이 많이 들고 IT 업계에서 많지 않아 효율적으로 MLOps 팀을 구성해야 한다고 했습니다.  

초창기 데이터 분석 회사에서는 MLOps는 시간 낭비이라고 내다보았습니다. 프로덕션으로 이동하는 경우에만 필요하며 모델의 95 % 는 프로덕션으로 전환되지 않는다고 했습니다. 그러나 실제 상품 서비스의 프로덕션에서 모델의 가치를 확인했고, 프로덕션에서 모델을 구축하지 않는 경우 수행 중인 머신 러닝은 회사의 가치를 극대화하지도 않습니다. 그러므로 기업들은 이제 머신러닝을 실제 상업 가치로 채택하여 바로 사용할 수 있습니다. 


분산 시스템이 생성된 지 2 ~ 3 년 후 어땠는지 생각해 보십시오. 복잡한 분산 시스템을 설계하고 구현하는 문제를 해결하려면 분산 시스템에서 박사 학위가 필요했습니다. 이제 모든 대학 졸업생은 그들과 함께 일하는 것이 편안합니다. 머신 러닝에서도 비슷한 현상이 발생한다고 생각한다고 말했습니다.  


더 읽어 볼 논문 거리들 


이 전문화 과정에서 좀 더 이해를 높게 하기 위해 더 읽어 볼 논문 거리들 몇 편을 소개하겠습니다.

 

Machine Learning: The High-Interest Credit Card of Technical Debt 논문: 기술 부채의 개념(버그가 포함되어 있거나 당연히 필수적인 기능이 부족한 충분한 시스템을 구축하여 발생하는 숨겨진 비용)은 소프트웨어 개발에 익숙합니다. 논문 저자들은 머신 러닝이 외부 코드와 실제 데이터에 의존하기 때문에 청구서가 나오기 전에 이러한 비용을 발견하기가 훨씬 더 어렵다고 주장합니다. 훈련 데이터, 입력 구조, 외부 코드 종속성 등을 변경하면 다른 변경 사항이 시스템 전체에 파급되기 때문에 입력 및 출력에 세심한 주의를 기울일 필요가 있음을 강조하면서 이를 찾고 완화하는 로드맵을 제공합니다.


Towards ML Engineering 블로그 : 구글은 데이터 통계 및 모델 동작을 추적하고 머신러닝 파이프라인의 다양한 부분을 자동화하는 데 도움이 되는 텐서플로우 프로그래밍 프레임워크의 기반인 TensorFlow Extended (TFX)를 제공합니다. 데이터 수집 중에 TFX는 수신 데이터를 학습 데이터와 비교하여 추가 학습을 위한 값을 평가합니다. 훈련 중에 모델을 테스트하여 모델이 반복될 때마다 성능이 향상되는지 확인합니다.


The Winding Road to Better Machine Learning Infrastructure 블로그: 스포티파이(Spotify)는 TensorFlow Extended와 Kubeflow를 모두 사용하여 하이브리드 플랫폼을 구축했습니다. 이 플랫폼은 재사용 및 재생산성을 위해 데이터 전처리, 모델 학습 및 모델 검증과 같은 기능을 캡슐화했습니다. 이 플랫폼은 각 구성 요소의 사용을 추적하여 실험 카탈로그를 제공하여 엔지니어가 중복 실험의 수를 줄이고 초기 노력으로부터 배울 수 있도록 도와줍니다. 또한 회사는 몇 주 동안 5 분마다 트리거 되는 악성 파이프 라인을 발견하는 데 도움이 되었습니다.


Introducing FBLearner Flow: Facebook’s AI backbone 블로그: 페이스북은 기존의 머신 러닝 모델을 조정하는 것이 새 모델을 만드는 것보다 더 나은 성능을 제공한다는 것을 발견했습니다. FBLearner Flow는 이러한 재활용을 전사적으로 장려하여 머신 러닝을 활용하기 위한 전문 지식의 수준을 낮춥니다. 이 플랫폼은 모델을 사용하고 수정할 수 있는 광범위한 알고리즘 모음을 제공합니다. 또한 실험을 예약하고 결과를 추적하기 위한 대시 보드와 함께 여러 시스템에서 병렬로 실행하는 복잡한 세부 사항을 관리합니다.


Scaling Machine Learning as a Service 논문 : 개발 중인 모델은 계산 효율성을 위해 데이터 배치에 대해 학습해야 하는 반면 프로덕션 모델은 사용자에게 가능한 한 빨리 추론을 제공해야 합니다. 이것이 바로 Uber의 머신 러닝 플랫폼의 개념입니다. 실험하는 동안 코드는 SQL 데이터베이스에서 데이터를 가져와서 기능을 계산하고 저장합니다. 나중에 배포된 모델에서 기능을 재사용하여 신속한 예측을 수행할 수 있으므로 테스트와 프로덕션 간에 기능 계산이 일관되게 유지됩니다.


A Unified Approach to Interpreting Model Predictions 논문:  모델이 어떤 결정을 내린 이유는 무엇입니까? 머신 러닝이 더 널리 배포됨에 따라 그 질문은 시급합니다. 이에 답하기 위해 프로덕션 플랫폼은 Shapley Additive Descriptions (SHAP)를 통합하기 시작했습니다. 이 방법은 선형 회귀와 같은 설명 가능한 모델을 사용하여 블랙박스 모델의 출력을 모방합니다. 설명 가능한 모델은 불안한(perturbed) 입력을 블랙박스 모델에 공급하고 불안에 대한 응답으로 출력이 어떻게 변하는지 측정하여 구축됩니다. 모델이 구축되면 결정에 가장 중요한 기능의 순위를 매기면 원래 모델의 편향이 강조됩니다.


MLOps: Big Picture in GCP 블로그(영문): 국내 Google Developers Expert - Machine Learning으로 활동하고 있는 박찬성 님의 칼럼으로 MLOps (Machine Learning Operations)가 무엇인지, GCP (Google Cloud Platform) 환경에서 이를 실현하는 방법에 대한 큰 그림을 한눈에 이해할 수 있습니다. 


"더 많은 데이터 중심으로, 더 작은 모델로!" 블로그(한글):

https://brunch.co.kr/@synabreu/117


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari