티스토리 뷰

MLOps

6.5. ML Workflow Pipeline

seoyoung02 2023. 1. 4. 21:22

※ 이 포스트는 머신러닝 디자인 패턴을 기반으로 작성되었습니다.

 

일반적인 end-to-end ML워크플로는 데이터 수집 → 데이터 검증 → 데이터 전처리 → 모델 구축 → 학습 및 평가 → 모델 배포로 이루어진다. 규모가 작거나 혼자 작업한다면 모놀리식(monolithic) 환경에서 작업할 수 있지만, 규모가 점점 커지고 기여하고자 하는 사람이 많아진다면 모놀리식 환경은 오히려 작업을 느리게 만들 수 있다. 이런 경우, 마이크로 서비스 아키텍처(Microsevice Architecture, MSA) 환경을 사용하면 애플리케이션을 작은 부분으로 나누어 관리하므로 관리가 쉬워질 수 있다. (모놀리식과 MSA에 대한 조금 더 자세한 설명은 아래에)

출처: https://wikidocs.net/31947

 

아키텍처를 선택해 각 단계의 초기 개발이 완료되면 환경 변화에 대한 응답으로 호출되는 이벤트 트리거 파이프라인을 생성해 변화에 대응한다. 환경 변화에는 재학습이나, 새로운 데이터 추가와 같은 요소가 있을 수 있다. 파이프라인 생성을 위해서는 개별 단계에서 출력을 추적하고, 오류를 추적할 수 있으면서 한 번의 호출로 전체 파이프라인을 실행할 수 있는 솔루션이 필요하다. 이러한 플랫폼으로는 TFX(TensorFlow Extended), Kubeflow, MLflow, Airflow 등이 있다. 플랫폼들에 대한 설명을 아래 링크에 정리했다.

 

ML Pipeline Solution

머신러닝 디자인 패턴 책을 공부하면서 여러 Machine Learing Pipeline을 소개해 정리해보았다. TFX(TensorFlow Extended) https://www.tensorflow.org/tfx TFX | ML 프로덕션 파이프라인 | TensorFlow 종단 간 프로덕션 ML 파

sy-note-0.tistory.com

 

ML 코드를 파이프라인으로 실행하였을 때 장점은 재현하는데 유리하다는 것이다. 사용자가 온프레미스 환경인지 클라우드 환경인지에 영향을 받지 않는다. 특히 파이프라인의 각 단계를 컨테이너화 하면, 구축시 사용한 환경과 파이프라인의 전체 워크플로를 모두 재현할 수 있다. 또한, 각 컴포넌트가 자체 컨테이너에 있으면 서로 다른 팀 구성원이 병렬적으로 개발, 빌드, 테스트할 수 있다. 이런 모든 부분에 대한 로깅 및 모니터링도 제공하여 각 단계별 아티팩트를 한 곳에서 추적할 수 있다.

 

ML 파이프라인을 CI/CD 파이프라인과 통합하면, 모델을 프로덕션 환경에 도입시 트리거 이벤트 연결을 통해 실행 자동화를 할 수 있다. 예를 들어, 새 데이터가 일정만큼 쌓였을 때 재학습을 하고자 한다면 클라우드 펑션과 같은 서버리스 이벤트 기반 서비스를 이용할 수 있고, 소스코드 변경사항을 기반으로 트리거하는 경우 클라우드 빌드 서비스를 이용할 수 있다. 클라우드 빌드를 이용할 때 깃허브 액션(github action)이나, 깃랩 트리거(gitlab trigger)를 이용하면 깃과 연결해 이용할 수 있다.

 

 


모놀리식 vs MSA

모놀리식 아키텍처(Monolithic Architecture, MA)는 애플리케이션을 하나의 아키텍처로 구성하는 것이다. 

장점

- end-to-end로 작업하기 용이하다.

- 빠르게 간단한 서비스를 만들 수 있다.

단점

- 작은 수정사항에도 전체를 다시 빌드하고 배포해야해 시간이 많이 걸린다.

- 유지보수가 어렵고, 일부 오류가 다른 기능에 까지 영향을 줄 수 있다.

- 기능별로 알맞은 프레임워크를 적용하기 어렵다.

 

마이크로서비스 아키텍처(Microsevice Architecture, MSA)는 커다란 하나의 애플리케이션을 작은 서비스 유닛으로 나누어 조합하여 사용할 수 있도록 만든 아키텍처이다. 유닛은 기능단위로 나누어 구성하며, 주로 하나의 기능을 수행한다. 각 유닛은 API를 통해 통신하는 방식으로 연결된다.

장점

- 배포가 빠르고 가볍다.

- 서비스별로 배포되어 업데이트시 모든 서비스를 멈추지 않아도 된다.

- 각 서비스마다 개별적으로 서버를 나눌 수 있어 메모리와 cpu관리에 용이하다.

- 분리되어 개발하기 때문에 각 서비스마가 적합한 프레임워크를 선택할 수 있다.

단점

- 다른 서비스와 잘 연계되는지 확인해야 한다.

- 서비스간 통신 시 사용하는 REST API로 인해 지연시간이 발생한다.

- 서비스가 분산되어 있어 트랜잭션 관리, 장애 추적 및 테스트 등이 쉽지 않다.

- 서비스마다 DB가 분리되어 데이터의 조회가 어렵고 데이터의 중복이 발생한다.

'MLOps' 카테고리의 다른 글

4.5. Distribution Strategy  (0) 2023.01.22
6.6. Feature Store  (0) 2023.01.10
ML Pipeline Solution  (0) 2023.01.04
머신러닝 디자인 패턴(Machine Learning Design Patterns) 개요  (0) 2022.12.12
2.4 Hashed Feature  (0) 2022.12.03
댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2025/01   »
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 31
글 보관함