티스토리 뷰
※ 이 포스트는 머신러닝 디자인 패턴을 기반으로 작성되었습니다.
일반적인 end-to-end ML워크플로는 데이터 수집 → 데이터 검증 → 데이터 전처리 → 모델 구축 → 학습 및 평가 → 모델 배포로 이루어진다. 규모가 작거나 혼자 작업한다면 모놀리식(monolithic) 환경에서 작업할 수 있지만, 규모가 점점 커지고 기여하고자 하는 사람이 많아진다면 모놀리식 환경은 오히려 작업을 느리게 만들 수 있다. 이런 경우, 마이크로 서비스 아키텍처(Microsevice Architecture, MSA) 환경을 사용하면 애플리케이션을 작은 부분으로 나누어 관리하므로 관리가 쉬워질 수 있다. (모놀리식과 MSA에 대한 조금 더 자세한 설명은 아래에)
아키텍처를 선택해 각 단계의 초기 개발이 완료되면 환경 변화에 대한 응답으로 호출되는 이벤트 트리거 파이프라인을 생성해 변화에 대응한다. 환경 변화에는 재학습이나, 새로운 데이터 추가와 같은 요소가 있을 수 있다. 파이프라인 생성을 위해서는 개별 단계에서 출력을 추적하고, 오류를 추적할 수 있으면서 한 번의 호출로 전체 파이프라인을 실행할 수 있는 솔루션이 필요하다. 이러한 플랫폼으로는 TFX(TensorFlow Extended), Kubeflow, MLflow, Airflow 등이 있다. 플랫폼들에 대한 설명을 아래 링크에 정리했다.
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 |
- Raspberry Pi
- AI
- DSP
- depth
- 딥러닝
- 신호처리
- deeplearning
- controllable GAN
- design pattern
- 운영체제
- TRACKING
- Gan
- Operating System
- conditional GAN
- 디지털신호처리
- 3d object detection
- feature
- mode collapse
- machine learning
- pcb
- depthmap
- Deep learning
- Depth estimation
- Generative Model
- image
- OS
- ML Pipeline
- Building Basic GAN
- ML
- MLOps
- Total
- Today
- Yesterday
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |