1) DevOps 탄생 배경과 MLOps의 중요성!
DevOps라는 개념이 처음 소개되고 몇 년이 지난 지금, SW 개발자라면 DevOps라는 말을 한 번쯤은 들어 보았을 것이다. 더 나아가 대부분의 기업과 조직들이 DevOps 문화를 도입하기 위해 많은 노력을 하고 있고 이미 운영을 하고 있는 조직 또한 많이 존재하는 것으로 알고 있다.
DevOps는 말 그대로 개발(Dev)과 운영(Ops)의 합성어이다. 즉 개발, IT운영, 품질, 보안등 다양한 영역의 업무를 빠르게 조율하고 협업할 수 있도록 하여 더욱 높은 품질의 제품을 지속적으로 신속하게 고객에게 전달하고자 하는데 목표를 두고 있다.
이와 같은 목표를 달성하기 위해 SW 엔지니어가 개발한 코드를 지속적으로 빌드하고 테스트 하며, 안정적이라고 판단된 버전을 실제 서비스에 배포하는 작업들을 효율화하기 위한 CI/CD 파이프라인 구축 및 자동화가 등장하였으며 그와 관련된 Tool들 또한 많이 등장하였다.
그렇다면 DevOps라는 개념은 어떻게 등장한 것일까? 그것은 IT 시장의 특성과도 큰 연관이 있다. IT 시장은 아주 빠르게 변화하고 진화해 나가고 있다. 고객은 더욱 새로운 서비스를 기대하고 있으며 기업들이 IT 시장에 살아 남기 위해서는 누구보다 빠르게 고객이 원하는 서비스를 시장에 내놓아야 한다. 빠르게 서비스를 출시하는 것만이 다가 아니다. 서비스의 안정성 또한 중요하다. 불안한 서비스를 사용한 고객은 금방 등을 돌려 버린다. 이와 같이 까다로운 IT 시장에서 빠르고 안전한 서비스를 만들기 위한 노력과 투자는 어떻게 보면 당연한 것이다.
시스템의 규모가 작다면 담당 업무를 하는 사람이 보다 더 열심히, 오래 일을 하면 시장의 눈높이를 맞출 수 있을지 모른다. 하지만 무심하게도 시스템의 규모는 나날이 커져만 가고 있다. 모놀리식 아키텍처 기반의 시스템의 한계로 마이크로 서비스의 시대가 오게 되었고 하나의 큰 시스템을 담당하는 조직에 규모 또한 거대해졌다. 이와 같은 배경 속에 고객과 시장이 만족할 수 있는 서비스를 만들기 위한 노력이 결국 DevOps라는 것을 탄생시켰다.
여기가 끝이라면 좋겠지만 이제 인공지능 시대가 도래했다. 모든 기업이 앞다퉈서 인공지능을 산업에 접목 시키고 있다. 이미 인공지능 기술은 시장을 만들어가고 있으며 고객의 평가를 받기 시작하였다. 어느 기업이 어떤 기술을 가지고 있는지 어떤 데이터를 가지고 있는지도 중요하지만 자신이 가지고 있는 자원과 기술을 효율적으로 관리하고 서비스화 하는 것 또한 아주 중요한 시점이 된 것이다. 게다가 인공지능 시스템 개발은 앞서 이야기한 애플리케이션 개발보다 더 복잡한 과정과 절차를 필요로 한다. 그렇기 때문에 MLOps의 중요성은 앞으로 더욱 커져갈 것이라 생각한다.
2) MLOps에 다양한 JOB들 알아보기!
MLOps는 DevOps과정 앞에 머신러닝 모델을 만들기 위한 절차를 추가한 것이라고 보면 보다 이해하기 쉬울 것이다.
머신러닝 워크플로우는 크게 두 가지 단계로 구분하여 생각할 수 있다. 모델 실험 단계(Experiment Phase)와 모델 생성 단계(Production Phase)가 그것이다.
2-1)모델 실험 단계
모델 실험 단계는 주어진 문제를 해결하기 위해 데이터를 탐색하고 적합한 모델을 찾아 실험하는 단계이다. 모델 실험 단계에서 고민하고 이루어지는 작업들을 요약하면 아래와 같다.
- 현재 문제를 머신러닝으로 해결할 수 있는지 여부를 판단한다. 가능하다면 어떤 모델이 가장 적합한지 여부를 판단한다.
- 앞서 모델이 정해졌다면 필요한 데이터를 수집 및 분석한다.
- 모델 개발에 적합한 ML Framework을 선정한다.
- 모델 코드를 작성한다.
- 모델 코드에 사전에 준비한 데이터를 통해 실험 및 검증을 한다.
- 모델이 가장 좋은 성능을 낼 수 있도록 하이퍼 파라미터 튜닝을 한다.
위에서 언급한 모델 실험 단계는 최고수준(SOTA:State-Of-The-Art)이 나올 때까지 반복되게 된다.
2-2) 모델 생산 단계
모델 생산 단계는 모델 실험 단계에서 실험된 모델을 학습하고 배포하여 서비스 화 하는 단계이다. 모델 생산 단계에서 이루어지는 작업들도 함께 알아보자.
- 모델 Training에 필요한 학습/ 검증 데이터를 만들기 위해 실제 데이터들을 가공하는 작업을 한다.
- 위에서 실제 데이터로 만든 학습 데이터를 기반으로 모델을 학습한다.
- 높은 성능에 모델을 찾게 되면 서버에 모델을 배포한다.
- 모델의 성능을 수시로 모니터링하고 그 결과에 따라 튜닝 또는 재학습하는 작업을 한다.
모델 생산 단계도 모델 실험 단계에서 이야기한 SOTA를 얻기 위해 계속 반복 작업을 하게 된다.
이와 같이 머신러닝 워크플로우는 다양한 작업들로 이루어져 있으며 각 단계의 작업들을 한 번만 진행하는 것이 아니라 최적의 모델을 찾을 때까지 반복하게 된다. 그 과정이 복잡하고 많은 시간을 필요로 하는 일일수록 효율화에 중요성은 높아진다. 게다가 머신러닝 프로젝트에 규모와 인원이 클수록 MLOps 또는 머신러닝 Pipeline에 중요성은 더욱 높아진다고 보면 된다.
3) MLOps에 중요 서비스들 및 Pipeline 소개
머신러닝에 필요한 물리적 리소스는 나날이 발전하고 있어 학습에 필요한 시간들은 점점 줄어들고 있다. 하지만 모델 학습 이외 데이터 준비, 배포 및 서비스하는 등..에 다양한 작업들은 아직 사람이 직접 개입하는 일들이 많이 존재한다.
그래서 이런 과정들을 하나로 묶어 관리하기 위한 노력을 진행하고 있으며 그 결과가 Pipeline이다.
Pipeline은 여러가지 Task로 이루어져 있고 Task 간에 결과물을 각각의 Task가 활용할 수 있도록 연결되어 있다. 여기서 Task는 독립적으로 수행되기 때문에 순차적으로 수행될 수도 있고 병렬적으로 수행도 가능하며 반복 / 스케쥴링 또한 용이하다. 앞서 살펴보았듯이 머신러닝도 다양한 단계의 Task들이 존재하고 각각의 Task들이 연결되어 하나의 프로젝트를 이루고 있다는 것을 느꼈을 것이다. 머신러닝 워크플로우 또한 Pipeline 활용이 충분히 가능하다.
Pipeline에 유명한 오픈소스로는 Apache Airflow를 들 수 있다. Airflow는 덱(DAG), 트리(Tree), 간트(Gantt), 그래프(Graph)등 다양한 컴포넌트들을 지원하고 있으며 python을 통해 워크플로우를 작성할 수 있다. REST API나 쿠버네티스 지원 등에 확장성도 좋기 때문에 워크플로우 작성에 많이 활용되고 있다.
그리고 두번째로 소개할 오픈소스는 argo workflow이다. 이 프로젝트는 쿠버네티스 위에서 실행되는 오픈소스이다. 각 Task가 컨테이너 기반이기 때문에 컨테이너의 장점과 쿠버네티스 환경에 도움을 적극 받을 수 있다.
이 두가지 워크플로우 툴로 머신러닝 워크플로우를 구성할 수 있지만 머신러닝 용에 최적화되어 있지는 않다. 그래서 더욱 머신러닝 워크플로우에 최적화된 다양한 솔루션이 등장하기 시작하였다.
특히 퍼블릭 클라우드 서비스에서 다양한 툴들이 제공되고 있다. AWS SageMaker, GCP AI Platform, Azure Automated ML, 알리바바의 Arena 등.. 점점 서비스들이 다양화되고 각각의 서비스가 제공하는 영역도 확장되고 있다.
ML Framework에서도 모델 개발에서 배포까지에 단계를 지원해주기 시작하였으며 가장 대표적인 것이 텐서플로우의 TensorFlow Extended(TFX)라는 플랫폼이다. TFX에서는 데이터 수집부터 Serving까지에 해당하는 라이브러리를 제공하고 있으며 이 라이브러리들을 Apache Beam을 활용하여 파이프라인을 구성하도록 제공하고 있다.
마지막으로 소개할 것이 KubeFlow이다. 구글에서 내부적으로 프로젝트를 진행하다 오픈소스화 된 것으로 쿠버네티스 위에 머신러닝 워크플로우를 관리하기 위한 목적으로 등장하였다. 현재 많은 개발자의 관심을 받고 있으며 하이퍼파라미터 튜닝, 모델 버전 관리, 데이터 버전 관리, Serving 등 다양한 머신러닝 워크플로우 영역을 커버해나가고 있다. 특히 Kubeflow는 외부에 다양한 오픈소스와 연동이 가능하기 때문에 그 확장성이 어마어마하다고 볼 수 있다.
4) 앞으로 이야기 할 내용들
앞으로 위에 작성한 MLOps에 세부 항목들을 하나씩 살펴볼 예정이다.
데이터 수집에서부터 시작하여 머신러닝 모델 생성, 서비스화 하는 것까지 머신러닝 개발에 전반적인 다양한 기술들을 함께 알아보고자 한다.
AI 플랫폼이라는 주제가 거대한 만큼 그 속에 다양한 주제를 다룰 예정이니 기대해도 좋을 것이다.
'인공지능' 카테고리의 다른 글
[Prompt Engineering] ReAct이란 무엇인가?!! (0) | 2024.05.11 |
---|---|
[인공지능] 할루시네이션 이란 무엇인가? (0) | 2024.03.03 |
RAG란 무엇일까요? (0) | 2024.02.23 |
LLMOps 이란 무엇인가?! (0) | 2024.01.31 |
프롬프트 엔지니어링 이란 무엇인가? (0) | 2024.01.28 |