Tech Blog
[MLOps] 1. MLOps와 컨테이너의 개념 (feat, 도커/쿠버네티스) 본문
2023. 02. 20 패스트캠퍼스 강의 정리
1️⃣ MLOps의 도입
MLOps는 ML + DevOps 의 줄임말을 나타낸 용어입니다. 여기서 DevOps 는 시스템 개발 (Development) 과 운영 (operation)을 결합한 방법론입니다. MLOps는 위의 설명글에 나와있는 것과 같이 속도, 안정성, 확장, 보안 등 여러 방면에서 이점을 갖고 있는 DevOps를 ML에 적용시킨 것을 말합니다. 한줄로 정의하면 Machine Learning을 효율적으로 개발하고, 성공적으로 서비스화하고 운영할 때 필요한 모든 것을 다루는 분야라고 할 수 있습니다. 버전관리 (데이터 버전 관리 / 모델 버전 관리) - 테스트 자동화 (모델 학습 자동화 / 모델 성능 평가 자동화) - 모니터링 (서빙 모델 모니터링 / 데이터 변화 모니터링 / 시스템 안정성 모니터링) 을 수행합니다.
◾MLOps의 구성요소
데이터 - 모델 - 서빙
MLOps는 위와 같이 데이터, 모델, 서빙으로 구성되어있습니다. 그리고 아래에 그와 관련된 툴들이 정리되어있습니다. 모든 것을 정확하게 알 필요는 없지만, 상황에 따라 필요한 도구에 맞게 적응하여 사용할 수 있는 것이 중요합니다.
데이터
모델
서빙
데이터와 모델은 어느정도 개념이 잡혀있지만, 서빙은 생소한 단어로 느껴질 수 있습니다. 새로운 데이터가 들어오면, ML 모델에 predict 함수로 그 결과값(예측 값)을 반환하는 일련의 행위를, 일반적으로는 사용자가 코드를 직접 돌리지만, 모델 서빙은 서버에서 api 형태로 해당 행위를 제공하는 서비스입니다. 다시말해 본인이 모델링 한 모델을 컴퓨터의 파이썬 환경에서 수행하여 predict 함수로 돌려볼 수 있었던 걸 api 서버 형태로 모델의 환경 정보 등을 패키지화 하여 제공함으로써 조금 더 접근성이 뛰어나게 접근할 수 있도록 해줍니다.
위에 많은 툴들이 존재하는데, 이 강의에서는 그 중에서도 도커와 쿠버네티스를 사용합니다. 그러면 MLOps에서 도커와 쿠버네티스가 왜 필요한지, 컨테이너와 컨테이너 오케스트레이션의 개념과 함께 살펴보도록 하겠습니다.
2️⃣ 컨테이너?
◾컨테이너와 컨테이너 오케스트레이션
먼저, 컨테이너, 컨테이너화, 컨테이너 오케스트레이션 용어에 대해서 알아보겠습니다.
▪️ Containerization: 컨테이너화 하는 기술
▪️ Container : 격리된 공간에서 프로세스를 실행시킬 수 있는 기술 ( 예를 들어, 머신러닝 코드의 os (환경) 이나 라이브러리 등의 버전과 independent 하도록, 해당 정보를 모두 담은 실행환경 자체를 하나의 패키지로 만드는 것이 컨테이너 기술입니다. )
▪️ Container Orchestration: 여러개의 컨테이너들을 지휘하는 일 (예를 들어, 메모리를 많이 차지하는 컨테이너, GPU를 필요로 하는 컨테이너, 많은 저장공간을 필요로 하는 컨테이너 등 다양한 유형의 컨테이너들을 조건에 맞는 서버에 배치시키는 업무입니다. 또, 한 컨테이너에 장애가 생기면 동일한 컨테이너를 다른 곳에 복제해서 생성시키고, 서버를 추가하면 기존 서버에 있던 것을 잘 분산시켜주는 일을 합니다. )
◾도커와 쿠버네티스
위에서 알아본 컨테이너와 컨테이너 오케스트레이션을 수행하기 위해서 필요한 것이 바로 그림에서 보이는 것과 같이 도커와 쿠버네티스입니다.
다음은 MLOps에서 필요한 업무의 일부를 정리한 것입니다.
▪️ Reproducibility: 실행 환경의 일관성 & 독립성
▪️ Job Scheduling: 스케줄 관리, 병렬 작업 관리, 유휴 자원 관리
▪️ Auto-healing & Auto-scaling: 장애 대응, 트래픽 대응
이러한 일들을 수행하기 위해서 컨테이너와 컨테이너 오케스트레이션을 사용하기 때문에, 도커와 쿠버네티스가 필요한 것입니다. 다음 글부터 본격적으로 도커와 쿠버네티스에 대해서 알아보고, 실습을 진행해보도록 하겠습니다.
* 본 포스트는 패스트캠퍼스의 강의를 정리한 글 입니다.
'MLOps > 개념 정리' 카테고리의 다른 글
[MLOps] 6. VM에서 minikube 사용하기 (0) | 2023.02.25 |
---|---|
[MLOps] 5. 쿠버네티스의 기본 개념과 YAML (0) | 2023.02.25 |
[MLOps] 4. Docker Image와 Dockerfile (0) | 2023.02.23 |
[MLOps] 3. Docker의 기본적인 명령어 정리 (0) | 2023.02.22 |
[MLOps] 2. Docker 실습 환경 셋팅 (VirtualBox, Ubuntu) (0) | 2023.02.21 |