research notes

MLOps Principles 본문

머신러닝/MLOps

MLOps Principles

forest62590 2022. 6. 6. 01:53
728x90

머신 러닝 실무자, 머신 러닝 프로젝트 관리자, 기술 회사 경영진을 포함하여 약 750명을 대상으로 한 설문조사에 따르면 (2020 state of enterprise machine learning, Algorithmia) 응답자의 절반은 회사에서 ML 모델을 배포하는 데 1주일에서 3개월이 걸린다고 응답하였고, 약 18%는 3개월에서 1년이 걸린다고 응답하였다. 또한, 보고서에 따르면 ML 기능을 개발할 때 직면하는 주요 과제는 규모(Scaling), 버전 제어(Versioning), 모델 재현성(Repreducticibility)이다.

1. 머신러닝은 기존의 소프트웨어와 어떻게 구분이되는가? (Data-centric)

- 머신러닝을 기존 소프트웨어 영역과 구분짓는 기준은 바로 데이터다.

소프트웨어 개발

- 소프트웨어는 일반적으로 코드 변경이 최종 결과물에 어떤 영향을 미치는지 거의 즉각적인 피드백을 받도록 로컬 환경에서 개발될 수 있다.

예) 웹 개발자가 코드 변경 후 브라우저에서 새로 고침을 눌러 즉각적인 피드백 획득

- 하나의 코드 버전이 하나의 소프트웨어 버전을 생성

 

머신러닝 개발

- 머신러닝 개발에서 코드 변경의 영향을 확인하려면 방대한 데이터 셋을 활용한 모델 재학습 과정이 필수다.

예) 코드 변경 후 결과 확인을 위해 GPU 클러스터 가동, 코드 배포, 데이터 전송 그리고 모델 훈련 등 일련의 과정 수행

- 하나의 코드 버전과 하나의 데이터셋 버전이 결합해 하나의 머신러닝 모델 버전을 생성

→ 머신러닝의 경우 개발 결과 재현을 위해 기존에 사용한 데이터를 똑같이 재현(활용)해야 하므로 데이터의 준비, 증강, 생성 등 여러 과정에 대한 버전관리가 필수적으로 요구되어 개발 복잡도를 높인다는 특징이 있다.

2. ML옵스 워크플로우

- MLOps의 목적

모델의 투자 대비 효과는(ROI) 실제 환경에서 사용되기 전까지는 ‘0’이라고 볼 수 있다. 따라서 출시까지 소요되는 기간(Time to market)은 머신러닝 프로젝트에서 가장 중요하게 고려하고 최적화해야 할 지표다. 따라서, ML옵스의 목표는 가장 빠른 시간내에, 가장 적은 위험을 부담하며 아이디어 단계부터 상용화 단계까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것이다.

3. Iterative-Incremental Process in MLOps

MLOps에서 고려해야할 프로세스는 크게 그림과 같이 3단계로 분류할 수 있다.

- Designing the ML application

- ML Experimentation and Development

- ML Operations

 

① Designing the ML application

첫 번째 단계는 비즈니스 이해, 데이터 이해 및 ML 기반 소프트웨어 설계에 전념한다. 이 단계에서 잠재적인 사용자를 식별하고 문제를 해결하기 위한 머신러닝 학습 솔루션을 설계하고 평가한다. 또한 모델을 훈련하는 데 활용할 수 있는 사용 가능한 데이터를 검사한다.

 

② ML Experimentation and Development

두 번째 단계의 목적은 ML 모델에 대한 개념 증명을(Proof-of-Concpets) 구현하여 문제에 대한 ML의 적용 가능성을 확인하고 프로덕션 환경에서 실행할 안정적인 품질의 ML 모델을 제공하는 것이다. 데이터 엔지니어링 및 모델 엔지니어링에 적합한 ML 알고리즘 식별과 같은 단계들이 반복적으로 수행된다.

 

③ ML Operations:

ML Operations 단계의 주요 역할은 테스트(testing), 버전 관리(versioning), 지속적 전달(continuous delivery) 및 모니터링과(monitoring) 같은 DevOps 요소를 활용하여 개발된 ML 모델을 프로덕션 단계로 제공하는 것이다.

4. Automation

- 데이터, ML 모델 및 코드 파이프라인의 자동화 수준은 ML 프로세스의 성숙도를 결정한다.

 

- MLOps의 목표는 ML 모델을 핵심 소프트웨어 시스템 또는 서비스 구성 요소로 배포하는 전체 ML 워크플로우 단계를 자동화하는 것이며 아래와 같이 3가지 수준의 자동화가 있다.

 

① Manual process:

데이터 준비 및 검증, 모델 학습 및 테스트와 같은 각 파이프라인의 모든 단계는 수동으로 실행된다. 일반적으로 Jupyter 노트북과 같은 RAD(Rapid Application Development) 도구를 사용하여 수행된다.

 

② ML pipeline automation:

해당 단계에서는 자동으로 모델 학습을 실행한다. 새 데이터를 사용할 수 있을 때마다 모델 재학습 프로세스가 트리거되며 또한 데이터 및 모델 검증 단계도 포함된다.

 

③ CI/CD pipeline automation:

마지막 단계에서는 프로덕션 환경에서 빠르고 안정적인 ML 모델 배포를 수행하기 위해 CI/CD 시스템을 도입한다. 이전 단계와의 핵심 차이점은 데이터, ML 모델 및 ML 학습 파이프라인 구성 요소를 자동으로 빌드, 테스트 및 배포한다는 것이다.

 

< Continuous delivery and automation pipelines in machine learning >

5. Versioning

- 버전 관리의 목표는 DevOps process에서 버전 제어 시스템으로(Version Control Systems, VCS) ML 학습에 사용된 스크립트, 학습된 ML 모델 및 데이터 세트에 대해 트래킹을 위해 필요하다.

- 모든 ML 모델 관련 사양은(Specification) ML 모델 학습에 대한 감사하고(Audit) 재현할(Reproducible) 수 있도록 VCS에서 버전이 저장 및 관리 되어야한다.

 

ML 모델 및 데이터가 변경되는 일반적인 이유는 다음과 같다.

  • ML 모델은 새로운 학습 데이터를 기반으로 재학습 될 수 있다.
  • ML 모델은 새로운 훈련 방식에 따라 재학습 될 수 있다.
  • ML 모델은 시간이 지남에 따라 성능이 저하될 수 있다.
  • ML 모델은 새로운 애플리케이션에 배포될 수 있다.
  • ML 모델은 보안 공격을 받을 수 있으며 따라서 수정이 필요할 수 있다.
  • ML 모델은 상황에 따라 이전 제공 버전으로 빠르게 롤백(roll-back) 될 수 있다.
  • 데이터 스토리지 혹은 데이터 권한에 대한 문제가 발생할 수 있다.

6. Monitoring:

ML 모델이 배포되면 ML 모델이 예상대로 작동하는지 확인하기 위해 모니터링해야 하여 아래와 같은 항목이 있다.

 

① ML 모델의 수치적 안정성을 모니터링
→ NaN(Not a Number) 또는 무한대의 발생에 대한 경고를 트리거

 

② ML 시스템의 계산 성능을 모니터링
→ 경고 임계값을 사전 설정하여 코드, 데이터 및 모델의 버전 및 각 구성요소에 대한 성능을 측정.
→ GPU 메모리 할당, 네트워크 트래픽 및 디스크 사용량과 같은 시스템 사용량 메트릭을 수집하고, 이러한 메트릭은 향후 클라우드 서비스 비용 추정에 유용하게 활용 가능

 

③ 데이터 변경이나 활용 코드 차이 등으로 인해 발생할 수 있는 ML 모델의 예측 품질 저하를 모니터링
데이터 변경이나 코드 경로 차이 등으로 인해 성능 저하가 발생할 수 있다.
→ 시간별로 모델 예측의 정밀도, 재현율, F1-score를 시간과 함께 추적하여 모니터링이 가능하다. 앞선 각 수치의 감소는 모델 재학습을 트리거하여 모델 복구로 이어진다.

7. Reproducibility

기계 학습 워크플로의 재현성은 데이터 처리, ML 모델 학습 및 ML 모델 배포의 모든 단계에서 동일한 입력이 주어지면 동일한 결과를 생성해야 함을 의미한다.

 

Collecting Data → Feature Engineering → Model training/build → Model deployment

8. Summary of MLOps Principles and Best Practices

References:

[1] https://ml-ops.org/content/mlops-principles

728x90

'머신러닝 > MLOps' 카테고리의 다른 글

MLOps Infrastructure Stack  (0) 2022.06.12
MLOps Introduction  (0) 2022.06.12
데브옵스(DevOps)  (0) 2022.06.04
Comments