머신러닝은 더 이상 일부 전문가들의 영역이 아니며, 머신러닝의 구현과 운영 모두 여러 분야에서 축적된 경험을 바탕으로 생산적으로 발전해왔다. 이 과정에서 MLOps(Machine Learning Operations)는 기존의 소프트웨어와 시스템의 통합 운영 기술을 도입하고, 머신러닝을 위한 표준 프로세스를 적용해서 최적화해왔다. 쿠버네티스를 포함한 오픈소스 도구들을 통해 이 변화를 탐험해보자.
◈ 이 책에서 다루는 내용 ◈
◆ 머신러닝 프로젝트의 여러 단계별 이해
◆ 쿠버네티스 기반의 머신러닝 플랫폼 제작을 위한 오픈소스 소프트웨어 사용
◆ 머신러닝 플랫폼을 사용한 전체 머신러닝 프로젝트 구현
◆ 기업의 머신러닝을 위한 향상된 협업 과정
◆ 데이터 엔지니어, 머신러닝 엔지니어 또는 데이터 과학자 역할에 맞는 플랫폼 사용 방법
◆ 실제 업무 문제의 해결을 위한 머신러닝 적용 방법
◈ 이 책의 대상 독자 ◈
데이터 과학자, 데이터 엔지니어, IT 플랫폼 운영자, 인공지능 제품 서비스 책임자와 오픈소스 구성 요소로 머신러닝 플랫폼 제작을 원하는 데이터 설계 책임자를 위한 책이다. 파이썬(Python)과 쿠버네티스에 대한 이해와 데이터 사이언스 및 공학에 대한 기본 개념을 갖고 있다면 이 책이 다루는 주제를 파악하는 데 큰 도움이 될 것이다.
◈ 이 책의 구성 ◈
1장에서는 머신러닝 도입의 도전 과제를 다룬다. 기업이 머신러닝을 도입하면서 만나게 될 문제점과 머신러닝의 도입 취지를 계획대로 달성하지 못하는 이유를 논의한다. 또한 기업이 이러한 문제를 만나게 되는 몇 가지 이유를 살펴본다.
2장에서는 MLOps가 무엇인지 이해한다. 1장에서 다룬 머신러닝 도입의 문제점들에 이어서 머신러닝 도입에 어려움들을 어떻게 극복할 수 있는지 논의한다. 이 장에서는 MLOps란 무엇인지 정의하고, 기업이 MLOps 도입 취지를 달성할 수 있도록 돕는다. 또한 기업이 머신러닝 프로젝트를 통해 MLOps를 어떻게 도입하는지 청사진을 제시한다.
3장에서는 쿠버네티스를 살펴본다. 이 책에서 왜 쿠버네티스를 MLOps의 플랫폼으로 선택했는지 설명한다. 또한 쿠버네티스의 핵심 개념을 정의하고 코드를 테스트하기 위한 환경을 만들 수 있도록 도와준다. 세상이 빠르게 변하는 만큼 빠른 변화에 대한 대응도 클라우드와 클라우드 기반 솔루션의 일부다. 쿠버네티스 기반의 플랫폼을 통해 독자의 솔루션이 어디서나 동작하게 만드는 유연함을 어떻게 갖추는지 알아본다.
4장은 머신러닝 플랫폼의 구조를 다룬다. 머신러닝 플랫폼이 어떤 모습을 갖고 있는지 먼 발치에서 살펴볼 것이다. 4장은 기술의 이론적인 관점에서 MLOps 플랫폼 구성 요소를 정의한다. MLOps플랫폼의 핵심 구성 요소를 기초를 튼튼하게 익힐 것이다.
5장에서는 데이터 엔지니어링에 대해 살펴본다. 머신러닝 프로젝트에서 중요하지만 가끔 놓치기 쉬운 부분이다. 상당수의 머신러닝 입문서가 CSV 파일과 같이 자신만의 모델을 만들기 위한 깔끔한 데이터셋으로 시작하지만 현실은 다르다. 데이터는 다양한 모양과 크기를 갖고 있으며, 데이터 규모에 맞게 수집, 처리, 준비가 가능한 잘 정리된 전략이 중요하다. 이 장에서는 성공적인 머신러닝 프로젝트의 데이터 엔지니어링 역할을 정의한다. 데이터 엔지니어링의 기초가 되는 OSS 도구들을 논의할 것이다. 그리고 이러한 도구들을 쿠버네티스 플랫폼에 설치하는 방법을 다룬다.
6장에서는 머신러닝 엔지니어링에 대해 알아본다. 이제 머신러닝 개발 과정에서 모델을 제작하고 배포하는 작업으로 논의를 이어간다. 6장에서는 같은 플랫폼에서 데이터 과학자들이 더 효율적으로 데이터 엔지니어링 팀과 동료들이 협업할 수 있게 돕는 셀프서비스 솔루션을 논의한다. 또한 모델 개발을 위한 OSS 도구들을 다룬다. 그리고 이러한 도구들을 어떻게 쿠버네티스 플랫폼에 설치하는지 설명한다.
7장에서는 머신러닝 프로젝트 중에서 배포 단계를 다룬다. 직접 만들어 본 모델은 만든 사람이 제공한 데이터를 이미 알고 있다. 하지만 현실에서는 데이터가 변화한다. 이 장에서는 모델의 성능을 모니터하기 위한 도구와 기술을 논의한다. 성능 데이터를 사용해 새로운 데이터셋에 대한 재학습이 필요한지 또는 주어진 문제에 대한 새로운 모델이 필요한 시점인지 판단할 것이다.
8장에서는 플랫폼을 활용한 머신러닝 프로젝트 완성하는 방법에 대해 이야기한다. 전형적인 머신러닝 프로젝트에서 각각의 플랫폼 구성 요소를 프로젝트 단계별로 어떻게 활용하는지 정의한다. 이러한 프로젝트의 산출물과 요구 사항도 이 장에서 정의하고, MLOps가 어떻게 프로젝트를 용이하게 만드는지 주로 살펴본다.
9장에서는 스파크(Spark) 클러스터로 데이터를 어떻게 수집하고 처리하는지 보여줄 것이다. 또한 플랫폼이 어떻게 어느 저장소에서도 원시 데이터를 읽을 수 있도록 데이터 엔지니어를 돕는지 보여준다. 핵심은 스파크 클러스터가 필요시 어떻게 생성되며, 작업이 어떻게 공유된 환경에서 구분되는지 설명하는 것이다.
10장에서는 주피터허브(JupyterHub) 서버를 활용해서 어떻게 모델을 플랫폼을 기반으로 제작, 학습, 조정하는지 보여준다. 또한 이러한 플랫폼이 데이터 과학자가 스스로 동작하는 모델을 구현하는 과정을 어떻게 지원하는지 보여준다. 모델을 시험하고, 등록하는 구성 요소인 MLflow도 10장에서 소개한다. 잘 동작하는 모델이 있을 때, 이 모델을 어떻게 다른 팀에서 활용할 수 있게 만들까? 10장에서 셀돈 코어(Seldon Core) 구성 요소로 모델을 REST API 형태로 접근해 개발자가 아니어도 사용할 수 있게 만드는 방법을 보여줄 것이다. 또한 배포한 API에 대해서 쿠버네티스의 기능을 활용해 자동으로 용량을 확장하는 방법을 알아본다.
11장에서는 쿠버네티스 기반의 머신러닝에 대해 독자가 더 깊이 알아야 할 핵심적인 개념을 소개한다. 11장에서 머신러닝 플랫폼과 머신러닝의 안정화, 쿠버네티스 운영에 대한 실제 사례들을 다룬다.
◈ 옮긴이의 말 ◈
한두 가지 공부해서 잘해도 살아가는 데 별 어려움이 없다면, 얼마나 더 삶이 여유로울까? 적어도 IT 분야에서 20년 넘게 일하면서 이미 오래전에 이 질문에 관한 결론을 봤다. 20년 전에 알고 있던 여러 지식과 기술 대부분은 이제 프로필에 적지도 않는다. 그때를 기억해보면, 윈도우 NT부터 윈도우 2003 서버의 제어를 위한 레지스트리 키와 배치 스크립트가 많지만, 기억의 저편에서 사라지고 있다. 그리고 여전히 다양한 기술이 앞서 변화하는 모습을 보며 뒤에서 따라잡고 있다.
지금의 데브옵스(DevOps)는 앱의 개발, 테스트, 배포, 운영 과정을 매끄럽게 관리하는 중요한 플랫폼이고 머신러닝 또한 코드와 데이터, 모델 등이 동작하는 플랫폼에서 다양한 소프트웨어와 데이터 처리 기술을 활용한다. 갑자기 팀원 누군가에게 위의 두 가지 플랫폼의 운영을 맡긴다면 어떤 표정을 볼 수 있을까? 머신러닝, 앱 관리, 클라우드 인프라, 운영 지식 모두를 배워서 만들어야 한다면, 이 책은 몇 배 더 두꺼워야 하며, 기꺼이 배우고 운영할 마음도 쉽게 생기지 않을 것이다.
정신적으로 그리고 시간적으로도 여유 있는 삶을 아직도 고민하는 입장에서 생각해보면 결국 작업의 생산성을 높이는 것이 해답에 가까운 것으로 보인다. 머신러닝 분야에서는 이 책에 등장하는 MLOps가 생산성을 높이는 운영 방식으로서 조금 더 구체적인 실마리를 준다. 또한 고맙게도 이런 고민에 공감한 수많은 개발자의 노력으로 많은 도구가 심지어 오픈소스로 등장했다. MLOps를 실현하기 위한 인프라는 쿠버네티스에게 우리가 원하는 인프라를 특정 형식으로 표현해주면 그 인프라를 쿠버네티스가 구현해준다.
여러 소프트웨어 기술 이외에도 생산성을 높이는 또 하나의 핵심 요소는 소통이다. 손발이 잘 맞는 팀들은 서로에게 무엇을 요구해야 하는지, 요구사항을 받으면 어떤 선택지를 제시해야 하는지 잘 이해하고 있다. 이러한 조직의 팀 사이 어딘가에 존재하는 애매한 부분을 세련된 도구로 채울 수 있다면, 밝은 표정으로 출근할 수 있는 날이 많아질 것이다. MLOps가 머신러닝 시스템을 설계, 개발 또는 운영하는 팀, 데이터 과학자에게 이러한 존재다. 시스템의 완성을 위해 무엇을 서로 채워야 할지 이 책에서 제시하는 내용을 참고하길 바란다.