※ 일본의 한 블로그 글을 번역한 것입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적 부탁드립니다.
이번 포스팅에서는 ML Ops에 있어서 머신러닝 모델을 운용할 때에 과제와 개념을 정리해보았다. 다음 포스팅에서는 실제로 Azure의 각 종 서비스를 이용해여 MLOps를 실현해보고자한다.
머신러닝 운용할 때의 과제
상정
먼저 머신러닝 모델을 운용해감에 있어서 몇 가지 과제를 같이 생각해보자. 이번 포스팅에서는 위의 역할과 흐름으로 머신러닝 모델이 개발된다고 상정하고 있다.
모델 개발의 흐름
1번 : 맨 처음 데이터 분석가가 머신러닝 모델의 개발을 위한 준비단계로써 머신러닝으로 해결할 과제 정의과 가설 검증을 실행한다. 어떤 머신러닝모델을 사용하면, 비즈니스의 가치가 있을지를 고찰하는 단계이다.
2번 : 다음은 데이터 사이언티스트가 데이터 분석가가 제안한 개요에 맞게 모델 개발을 진행한다.
3번 : 그리고 데이터 엔지니어가 머신러닝 모델의 데이터를 모으기 위해서 데이터 수집 기반등, 모델의 운용하기 위한 환경 개발이나 지속적인 분석을 실행하기 위한 분석 환경을 구축한다.
4번 : 마지막으로 ML 엔지니어는 데이터 사이언티스트가 만든 머신러닝 모델을 docker 컨테이너에 deploy하고, 지속적으로 학습할 수 있는 기획을 데이터 엔지니어와 연계하여 구성해나가는 역할을 한다.
머신러닝 모델의 운용과 과제 ; 모델의 정밀도를 높이는데 성공한 경우
모델 개발을 완료하고, 실제로 모델을 어플리케이션 등에 합쳐 운용하는 단계가 된다. 모델을 운용하는 경우, 초기는 데이터 사이언티스트가 상정하는 정밀도가 나오지만, 운용을 계속하면 정밀도가 떨어져버려 머신러닝 모델의 가치가 떨어지고 만다.
떨어진 모델 정밀도를 높이기 위해, 데이터 사이언티스트가 새로운 다른 알고리즘이나 방법, 데이터 세트로 모델의 학습하지만,
- 모델의 재학습을 했으므로, 학습 비용이 발생
- 모델 파이프라인 공통화, 모델의 평가 지표의 모니터링
- 데이터 엔지니어는 학습 데이터의 획득 방법 변경 대응이 필수
- ML엔지니어는 Canary Deploy, A/B 테스트를 할 수 있는 환경, 버전 관리
등등의 문제가 발생해, 머신러닝 모델의 운용이 힘들어진다. 이러한 문제를 해결하기 위한 것이, ML Ops의 개념이다.
ML Ops이란?
위 그림은 2015년도에 발표된 한 논문에 실린 것이다. 본질적으로 머신러닝 시스템이나 그것을 포함한 어플리케이션에서는 다양한 과제가 발생하고 있음을 알 수 있다. 빨간색 박스로 감싼 중앙의 작은 검은 사각형이 머신러닝모델이 된다. 머신러닝 모델의 주변에는 아래와 같은 다양한 요소가 있어, 예상보다 복잡성이 느는 것을 알 수 있다.
- 설정
- 데이터 수집
- 특징량의 계산
- 데이터의 검증
- 계산 자원의 관리
- 분석 툴
- 프로세스 관리 툴
- 위 프로세스등을 구현할 인프라
- 감시
이것으로 복잡성을 할 수 있으면 배제한 후에 데이터 분석 팀이나 운용 팀이 모델링을 사용한 데이터, 모델 그 자체, 다양한 리소스 설정하기 위한 코드, 이러한 것들을 최대한 관리하기 쉬운 상태로 유지하고 머신러닝 모델의 생성과 운용을 통해 계속해서 효율적이고 지속적인 부여하기위한 방법론이 MLOps이다. 구체적인 내용은 실전편에서 설명하도록 하겠다.
참고자료
'IT > 기초 지식' 카테고리의 다른 글
docstring의 세 가지 스타일 (0) | 2022.04.13 |
---|---|
[Azure] Azure으로 MLOps 구현하기 <실전편> (0) | 2022.04.12 |
[Azure] AWS와 비교한 Azure의 환경 구축 특징(AWS와 Azure의 차이) (2) | 2022.04.11 |
[git] git submodule 기초 (0) | 2022.04.04 |
[UML] 클래스 다이어그램 (0) | 2022.03.30 |