테키테크 TEKITECH
CI / CD / CT - MLOps와 DevOps 이해하기 본문
DevOps와 MLOps에서 말하는 CI/CD/CT의 개념을 비교하여 MLOps에서 목표하는 바를 이해해보려고 한다.
목차
- DevOps와 MLOps
- DevOps: Dev + Ops
- MLOps: ML + Ops
- DevOps와 MLOps에서 CI/CD/CT
- CI/CD/CT in DevOps
- CI: Continuous Integration (지속적 통합)
- CD: Continuous Delivery/Deployment (지속적 제공/배포)
- CT: Continuous Testing (지속적 테스트)
- CI/CD/CT in MLOps
- CI: Continuous Integration (지속적 통합)
- CD: Continuous Delivery/Deployment (지속적 제공/배포)
- CT: Continuous Training (지속적 학습)
- CI/CD/CT in DevOps
DevOps와 MLOps
MLOps, AIOps, 또는 ML Infrastucture 등 다양한 이름으로 불리는 이 개념은 기존 소프트웨어의 개발 및 배포에서 사용하던 DevOps와 함께 언급된다. 개인적으로 MLOps라는 이름이 가장 잘 어울린다고 생각하기 때문에 본문에서는 이 용어를 사용한다.
DevOps: Dev + Ops
Dev(Development)와 Ops(Operations)
소프트웨어 개발 및 배포 파이프라인 전반에 걸쳐 개발 조직과 운영조직 간의 협업을 통해 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목표로 한다.
MLOps: ML + Ops
ML(Machine Learning)과 Ops(Operations)
ML 모델 서빙 파이프라인 전반에 걸쳐 Scientist와 Engineer의 협업을 통해 모델을 정확하고 안정적으로 서빙하는 것을 목표로 한다.
DevOps와 MLOps에서 CI/CD/CT
DevOps와 MLOps에서 CI/CD, 그리고 CT의 개념은 조금 다르게 설명된다.
지향하는 목표는 대체로 유사하나, 그 방법과 특성에서 차이가 있다.
CI/CD/CT in DevOps
DevOps에서 일반적으로 말하는 CI/CD, 그리고 CT는 다음과 같다.
[1] CI: Continuous Integration (지속적 통합)
DevOps에서 CI는 소프트웨어의 새로운 변경 사항에 대해 Build 및 Test를 거쳐 Shared Repository에 통합하는 프로세스를 지속적으로 실시하는 것을 의미한다. 다수의 개발자가 Git, Bitbucket 등 형상관리 툴을 공유하여 사용하면서 다수의 개인이 commit을 시도하는 환경이나, Agile 방법론의 특성에 따라 기능의 수정 및 추가가 빈번하게 시도되는 MSA(Micro Service Architecture) 환경에서는 소스코드의 충돌 문제가 빈번하게 발생한다. 이러한 문제를 빠르게 해결하고, 새로운 업데이트의 검증과 릴리즈 시간을 단축하여 소프트웨어의 품질을 향상하는 것을 목표로 한다.
[2] CD: Continuous Delivery/Deployment (지속적 제공/배포)
DevOps에서 CI가 Build-Test-Integration 과정에서의 지속성을 의미한다면, CD는 Shared Repository에서 병합된 소스 코드를 Production 환경에 릴리스하는 과정에서의 지속성을 의미한다. 특히 짧은 주기로 소프트웨어를 개발하고 배포하는 경우, 더 빠른 주기로 출시하면서도 항상 신뢰할 수 있는 수준으로 출시할 수 있도록 보증하기 위한 전략이다.
릴리즈 방식에 있어 Manual하게 배포하는 경우에는 Continuous Delivery라고 하고,
Automatic 하게 배포하는 경우에는 Continuous Deployment라고 한다.
[3] CT: Continuous Testing (지속적 테스트)
CI/CD를 통해 빠르고 신뢰 가능한 릴리즈를 목표로 했다면, CT는 빈번한 릴리즈 과정에서 발생 가능한 품질 문제를 보완하는 것을 목표로 한다. CI/CD 파이프라인에서 지속적인 테스트와 피드백을 통해 품질을 향상할 수 있다.
CI/CD/CT in MLOps
MLOps에서 말하는 CI/CD, 그리고 CT는 다음과 같다.
[1] CI: Continuous Integration (지속적 통합)
DevOps에서의 Integration은 소스코드와 컴포넌트 등의 테스트를 의미한다면, MLOps에서의 Intergration은 ML 모델을 서빙하는 과정에서 요구하는 새로운 데이터와 데이터 스키마, 그리고 모델을 테스트하고 통합하는 과정까지 포함한다.
[2] CD: Continuous Delivery/Deployment (지속적 제공/배포)
MLOps에서의 Deployment(배포)는 Production 단계에서 모델을 서빙하는 것을 의미한다. 모델을 더 빠른 주기로 서빙하면서도 신뢰도 및 정확도를 유지하는 것을 목표로 한다는 점에서 DevOps와 유사하다.
[3] CT: Continuous Training (지속적 학습)
MLOps는 모델이 Production 단계에서 새로운 데이터로 학습하여 만들어낸 새로운 모델을 배포하는 과정을 반복한다. 이러한 지속적인 학습 과정에서는 과거의 모델보다 정확도가 떨어지는 경우 등 문제 발생 상황에 대해 롤백하고 대처할 수 있는 ML 서빙 파이프라인을 구축하는 것이 중요하다.
※ 참고 자료와 이미지 출처 ※
[1] 데브옵스
[2] MLOps 춘추 전국 시대 - 변성윤
[3] DevOps Toolchain by Kharnagy
[4] MLOps Toolchain by Neal Analytics
[5] 블로그 - CI/CD란 무엇인가 (Feat. DevOps 엔지니어)
[6] The 3 Big Cs of Continuous Agile Development
[7] Explaining CI, CD, CT in DevOps & How to Make Them Work Together
[8] Infographic - What's the difference between Continuous Delivery and Continuous Deployment?
[9] MLOps: Continuous delivery and automation pipelines in machine learning
'Tech > Ops' 카테고리의 다른 글
[Docker] 도커 이미지 삭제와 오류 / 컨테이너 확인하고 컨테이너 삭제하기 (2) | 2021.09.10 |
---|---|
[Docker] 도커 엔진 실행부터 이미지로 컨테이너 실행까지 (MacOS+CLI 환경) - 3. Docker Container 사용하기 (0) | 2021.09.09 |
[Docker] 도커 엔진 실행부터 이미지로 컨테이너 실행까지 (MacOS+CLI 환경) - 2. Docker Container 생성 (0) | 2021.09.06 |
[Docker] 도커 엔진 실행부터 이미지로 컨테이너 실행까지 (MacOS+CLI 환경) - 1. Docker Image(Ubuntu) 다운로드 (0) | 2021.09.06 |
Docker 이해하기 (0) | 2021.09.02 |