MLops라는 것에 관심이 생겨서 조금씩 공부해보기로 하였다.
Inflearn에서 송호연 강사님의 강의를 수강하여 공부를 이어나가기로 했다.
수업들은 내용과 자료를 바탕으로 나름대로 정리해보고자 한다.
*모든 자료와 내용은 송호연 강사님의 자료 출처입니다.*
- 머신러닝 파이프라인의 이해
파이프라인이 필요한 이유는
- 리팩토링
- 종속성 제거
- 단위 테스트
- API 강화
- 미사용 코드 삭제
- 문서화
6가지가 필요성에 있는데 이는 '유지보수성 향상'에 도움이 된다.
기존에 알려진 코드 수준의 기술 부채제거 방식으로는 이런 문제를 해결하기 어렵다.
- 머신러닝 문제의 특징
- 쉬운 머신러닝 문제
- 데이터의 변화가 천천히 일어난다.
- 모델 재학습의 경우, 더 많은 데이터로 모델 성능 개선되거나 sw혹은 시스템의 변화일때
- 라벨링
- 어려운 머신러닝 문제
- 데이터의 변화가 빠르게 일어난다.
- 모델 성능이 저하될 때
- 라벨링 + 직접적인 피드백
머신러닝 프로그래밍에서도 발생하는 문제의 특징으로는
- 고정된 데이터세트
- 통합 불가능한 아티팩트
- 문제 정의 없는 경우
- 검증되지 않는 데이터셋, 모델
- 편향된 데이터셋
등등 여러가지가 존재한다.
- 프로젝트 Flow
흔히 SW프로젝트는 SW engineer로 구성되는 반면에,
ML 프로젝트는 Research Scientist, Engineer, SW engineer로 구성된다.
개발 프로세스에서 ML은 본질적으로 실험이라고 본다고 한다. 다양한 Feature들, 알고리즘, 모델링 기술 및 파라미터 구성을 여러번 시도 끝에 가능한 빨리 문제를 해결할 수있는 적합한 모델을 찾는 것이다.
또한, 무엇이 효과가 있는지 없는지를 추적하고, 코드 재사용을 극대화하면서 재현성을 유지하는 것이 큰 과제이다.
테스트를 하는 것도 SW시스템보다 훨씬 더 복잡하고 어렵다.
배포를 하는 것에서도 오프라인에서 훈련되는 ML 모델을 구축하는 것 만큼 간단하지 않다.
최근 안드로이드에서도 ML기술을 바탕으로 앱을 만들거나 보다 쉽게 적용하려는 기술들이 여기저기 보이는듯 하다.
Production에서도 ML모델은 코딩뿐만아니라 지속적으로 데이터가 발전하기 때문에(증가) 성능이 저하될 수 있다. 그래서 데이터의 통계치를 추적하고 온라인 성능을 모니터링해서 계속해서 알림 및 롤백, 유지보수가 필요하다.
- MLOps의 핵심문제
- 모델 학습
- 머신 러닝 시스템은 다음과 같은 상황에서 학습과 모델을 배포한다.
- 요청 시 : 파이프라인의 임시 수동 실행
- 일정 기준 : 라벨이 지정된 새 데이터는 매일, 매주 또는 매월
- 새 학습 데이터 : 새 데이터가 들어오는 경우 모델의 재학습을 트리거
- 모델 성능 저하 시 : 성능 저하가 눈에 띄는 경우 모델 재학습
- 데이터 분포의 중요한 변화 시 :
온라인 모델의 전체 성능을 평가하기는 어렵지만, 예측을 수행하는 데 사용되는 피쳐의 데이터 분포에 큰 변화가 있으면, 모델이 오래되었다는걸 뜻한다.
- 머신 러닝 시스템은 다음과 같은 상황에서 학습과 모델을 배포한다.
- 모델 학습
- 머신러닝 프로그래밍 문제의 특징
- 진화하는 데이터셋과 Metric
- 지속적 통합
- 지속적 배포
- 지속적 학습
- MLOps 성숙도 레벨 0 ~ 2
- MLOps 성숙도 레벨 0
- 수동, 스크립트 중심, 대화식(Interactive) 프로세스
- ML과 운영의 분리
- 드문 릴리즈 반복
- CI 없음
- CD 없음
- 배포는 예측 서비스를 으미ㅣ
- Active 성능 모니터링 부족
- MLOps 성숙도 레벨 1
- 빠른 실험
- 프로덕션 모델의 CT
- 실험 운영 환경의 조화
- 구성 요소 및 파이프라인을 위한 모듈화된 코드
- 지속적인 모델 제공
- 파이프라인 배포
- MLOps 성숙도 레벨 2
- Production에서 파이프라인을 빠르고 안정적으로 업데이트하려면 자동화된 CI/CD 시스템이 필요하다.
- 이 자동화된 CI/CD 시스템을 통해 데이터 과학자는 Feature Engineering, 모델 아키텍처 및 하이퍼 파라미터에 대한 새로운 아이디어를 신속하게 탐색할 수 있다.
- MLOps 성숙도 레벨 0
'공부 > MLOps' 카테고리의 다른 글
MLops - 5.1 (TFDV) (0) | 2022.02.02 |
---|---|
MLOps - 5 (TFDV) (0) | 2022.01.23 |
MLOps - 4 (0) | 2022.01.06 |
MLOps - 3 (0) | 2022.01.03 |
MLOps - 2 (0) | 2021.12.12 |