일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- hive
- gcp
- Python
- Kibana
- Spark
- elk
- AWS Glue
- 쿠버플로우
- Minikube
- 쿠버네티스
- 데이터 아키텍처
- mesos
- 하이브
- 파이썬
- 파이썬답게생각하기
- fluentd
- 머신러닝
- 쿠버플로
- 데이터 플랫폼
- etl
- MLOps
- Tabular
- Kubeflow
- MachineLearning
- Opensearch
- 파이썬처럼생각하기
- TABNET
- 리눅스
- yarn
- Kubernetes
- Today
- Total
데이터를 걷는 선비
[MLOps] ML Workflow(머신러닝 워크플로) 란? 본문
MLOps를 공부하기 위해서는 우선 머신러닝 워크플로의 개념과 그 필요성을 짚고 넘어갈 필요가 있다.
머신러닝을 프로덕트 단에서 활용하기 위해서는 단순히 모델을 학습하고, 파라미터를 튜닝하는 것을 넘어서 지속적으로 학습하고 관리하는 것들이 중요하나, 아직도 많은 프로젝트에서는 모델 학습 이외의 대부분의 작업들을 수기로 하고 있는 실정이다.
[파이프라인(Pipeline) 툴]
- 파이프라인이란 하나의 태스크 결과가 다음 태스크로 이어지는 연결구조를 말하며, 연결 구조 각각의 단계가 독립적이며 병렬로 수행도 가능하기에 수동으로 작업하는 것보다 훨씬 효율적으로 관리 가능하다.
- Airflow(오픈소스)과 같은 기존 파이프라인 툴은 덱(DAG), 트리(Tree), 간트(Gantt), 그래프(Graph) 등 다양한 컴포넌트를 지원하면서 파이썬을 통해 작성되기에 이러한 툴을 통해 MLOps를 구성해도 되나, 아무래도 해당 툴들은 머신러닝 전문 툴이 아니기에 여러 애로사항이 존재한다.
- 그렇다면, 머신러닝을 위한 파이프라인 툴이 되기 위해서는 어떤 기능들이 갖춰져야 할까??
[ML Workflow(워크플로) 프로세스]
- 머신러닝 워크플로란!!
- ML 워크플로는 머신러닝(AI/ML) 모델을 개발하는데 활용되는 모든 과정을 말한다.
-
ML 워크플로는 크게 실험 단계(Experimental Phase)와 생산 단계(Production Phase)로 나눌 수 있다.
-
대다수 분석가들이 샌드박스(Jupyter Notebook) 위에서의 Experimental Phase에 집중한다. 그러나, 이러한 과정들은 AI/ML 파이프라인의 일부에 불가하며 실제 애플리케이션에서 활용하기 위해서는 모델을 최적화하고 서빙까지 고려한 작업이 이루어져야 한다.
-
즉, 전체적인 ML 워크플로의 과정을 수기 관리하는 것은 ML 프로젝트 진행 및 관리 하기에 여러 어려움(형상관리, 로깅, 스케줄링, 인증)이 따르기에 최근에는 전문적인 ML 파이프라인 툴을 활용해 프로젝트를 진행하는 추세이다!!
- 실험 단계(Experimental Phase)
-
과제 선정 후 어떤 모델 사용할지 결정하고, 학습에 필요한 데이터 수집
-
최초의 모델 코드 작성
-
수집된 데이터를 모델로 실험/학습
-
최적의 성능을 내기 위해 하이퍼파라미터 튜닝
-
최고수준(SOTA)이 나오기 전까지 계속 반복=> 주로 분석가가 샌드박스에서 진행
-
- 생산 단계(Production Phase)
-
학습 모델에 맞게 실제 데이터를 재가공
-
실제 데이터를 가지고 모델 학습(실험 단계에서 정의한 모델과 하이퍼 파라미터)
-
서버에 모델 배포
-
모델의 성능을 모니터링하며, 그 결과에 따라 튜닝/재학습 여부를 결정=> ML 전문 워크플로우 툴이 필요!!
-
그렇다면, 머신러닝 전문 워크플로우 툴이 갖춰야 할 것들은 무엇이 있을까??
[오픈소스로 머신러닝 워크플로를 구성해야 한다면 고려해야 할 것들]
- 1. 오픈 소스라면 갖춰야 하는 조건들
- 하나의 플랫폼 안에서 모든 작업이 가능한가?
- 설치가 간편한가? 혹은 설치에 대한 트러블 슈팅 정보가 많은가?
- 각각 ML 워크플로우 단계를 수행할 수 있는 SDK 혹은 라이브러리가 있는가?
- 해당 SDK에 대한 러닝 커브가 어떤가?(쉬운가)
- 해당 오픈 소스의 사용자 커뮤니티 활성도는 어떤가?
- 오픈 소스의 버전이 프로덕션 레벨로 사용할 정도로 성숙한가?
- 사용자 친화적인 UI를 제공하는가?
- 2. 클라우드 플랫폼 구축 측면에서고려해야 하는 조건들
- 리소스 관리/스케줄링을 지원하는가?
- 리소스에 대한 인증/권한 관리를 지원하는가?
- 멀티테넌시(Multi-tenancy)를 지원하는가?
- 3. 머신러닝 기능과 관련된 조건들
- 모델과 데이터를 저장할 스토리지 서비스에 대한 지원이 다양한가?
- 파이프라인을 구성할 SDK/UI를 제공하는가?
- 하이퍼 파라미터 최적화 라이브러리를 제공하는가?
- 생성된 모델에 대한 버전 관리를 제공하는가?
- 오픈 소스가 다양한 ML 프레임 워크를 지원하는가?
- 병렬 프로세싱(Parallel Processing)을 지원하는가?
오픈소스 머신러닝 워크플로 툴을 활용해 프로젝트를 진행하거나, 서비스를 만들기 위해서는 크게 3가지 관점에서 툴을 바라봐야 한다.
먼저, 오픈소스라면 당연히 갖춰야 할 것들(예를 들어, 오픈 소스의 성숙도, 러닝커브, 라이브러리 SDK 등)이 잘 갖춰져 있는지를 확인해야 한다.
그 다음으로는, 오픈 소스 툴이 멀티 테넌시, 로깅, 인증, 권한 관리 등의 기능을 잘 갖출 수 있는가에 대한 조건들이다. 아무래도 회사 내부에서의 프로젝트를 진행할 때는 해당 기능들을 고려할 필요는 없으나 관련 서비스를 만든다고 생각하면 다양한 환경에서도 문제 없이 활용할 수 있게 끔 해당 기능들이 고려된 툴인지를 확인해봐야 한다.
마지막으로, 하이퍼 파라미터 튜닝, 병렬 프로세싱 등 머신러닝을 활용하기 위한 기능들이 갖춰져 있는지를 확인해야 한다. 일반적인 파이프라인으로 다음과 같은 기능들을 개별적으로 구현하는 것은 매우 어려우며 놓치는 부분이 매우 많기 때문이다.
확실히 고려해야 할 것들이 매우 많다!!
머신러닝, 컨테이너, 클라우드, 인프라 등의 요소들을 모두 알아야 한다!!
다음에는 이 같은 조건들을 만족시키는 쿠버플로우에 대해서 알아보자!!
'Machine Learning > MLOps' 카테고리의 다른 글
[Kubeflow] 쿠브플로 아키텍처(Kubeflow Architecture) 개요 (0) | 2023.08.14 |
---|---|
[CI/CD] Jenkins(젠킨스) 개념 및 실습(Python) (0) | 2023.08.10 |
[CI/CD] Jenkins(젠킨스) 개념 및 설치 방법!! (0) | 2023.07.29 |
[Kubeflow] Minikube로 Kubeflow(v1.7) 설치하기 (0) | 2023.07.23 |
[Kubeflow] Kubeflow의 개념과 기능들!! (0) | 2023.07.09 |