MLOps

MLOps의 인프라 요소들

jungmin.park 2025. 4. 13. 00:22

MLOps는 ML Life cycle을 체계적으로 관리하여 더 빠르고 신뢰할 수 있는 결과를 달성하는데 초점을 두고 있습니다.

MLOps는 강력한 인프라에 의존하고 있으며

데이터처리, 모델 트레이닝, 배포 및 모니터링과 같은 핵심 작업을 지원하며 안정적으로 수행하는 것을 목표로 두고 있습니다.

 

MLOps의 주요 인프라요소는 크게 다음과 같이 나눌 수 있습니다.

  • Storage : 개발된 모델을 저장하거나 로깅들 ML과 관련된 모든것들을 저장한다고 생각하면 됩니다.
  • Computing Resources : 데이터와 관련된 계산에 필요한 컴퓨팅 파워를 제공합니다.
  • 환경관리툴 : 프로젝트별 독립적인 환경을 제공하는 패키지 및 환경관리 시스템이며 파이썬을 사용하는 분들이라면 Anacoda 생각하시면 됩니다.
  • Container : App과 그 의존성을 패키지화 화여 일관된 환경에서 실행 할 수 있도록 지원합니다
  • Orchestrator : 여러 컨테이너를 배포, 확장, 네트워킹을 관리 
  • CI/CD : 코드리뷰부터 배포를 자동화하는데 지원합니다.
  • Version Control : 모델의 버전 관리를 지원합니다.
  • HTTP & REST API : 모델 개발 후 사용할 수 있는 프로토콜과 인터페이스를 지원합니다.

MLOps 인프라는 생각보다 다양한 요소들이 있는데 

조금 더 세세하게 살펴보도록 하겠습니다.

 


Storage(스토리지)

데이터의 저장, 백업, 복구 기능을 제공합니다.

데이터의 안정성, 접근성 및 확장성을 보장하는 것이 핵심

 

중요성

  • 데이터 보존 : 머신러닝 프로젝트에서 데이터의 안전한 저장은 데이터 손실을 방지하고, 언제든 데이터에 대한 접근이 가능하도록 되어야 합니다.
  • 접근성 : 효율적인 데이터 접근은 머신러닝 모델의 트레이닝 테스트 시간을 단축, 빠른 데이터 접근은 프로젝트 전반적인 생산성을 향상시킵니다.
  • 확장성 : MLOps 프로젝트는 시간이 지남에 따라 데이터 양이 증가합니다. 스토리지는 확장가능하고 유연해야 합니다.

 

유형

클라우드 스토리지

Amazon S3, Google Cloud Storage, Azure Blob Storage

  • 확장성 : 거의 무한에 가까운 저장 공간을 제공하며 자유롭게 확장 가능한게 특징
  • 내구성과 가용성 : 데이터 복제 및 여러 지역에 걸친 분산 저장으로 높은 내구성 및 가용성을 보장
  • 안정성 : 고급 암호화 및 보안 프로토콜을 통해 데이터를 보호
  • 비용 효율성 : 사용한만큼만 비용을 지불, 다양한 저장 옵션을 제공

 

MLOps 예시

대규모 이미지 데이터셋을 S3버킷에 저장하여 머신러닝 모델 트레이닝에 활용

글로벌 머신러닝 파이프라인에서의 데이터 공유

 

분산 파일 시스템

Hadoop Distributed File System(HDFS), GlusterFS

  • 대규모 데이터 처리 : 여러 노드에 걸쳐 대규모 데이터를 분산 저장하고 처리
  • 고가용성 : 데이터를 여러 노드에 복제하여 하나의 노드에 문제가 발생해도 데이터 손실을 방지
  • 확장 가능한 아키텍쳐 : 데이터 양이 증가함에 따라 쉽게 노드를 추가하여 시스템 확장 가능
  • 비용 효율적 : 오픈 소스 솔루션을 사용하여 비용 절감 가능

 

MLOps 예시

대규모 빅 데이터 분석, 복잡한 데이터 처리 작업, 대용량 데이터의 실시간 처리 및 저장

 

데이터 웨어 하우스

Snowflake, Amazon Redshift, Google BigQuery

  • 고속 쿼리 실행 : 최적화된 쿼리 엔진을 통한 빠른 데이터 처리 및 분석
  • 대규모 데이터 분석 : 구조화된 대용량 데이터에 대한 효율적인 분석 및 저장
  • 사용 편의성 : SQL 기반 쿼리로 사용자 친화적
  • 보안과 규제 준수 : 데이터 보안 및 다양한 규제 준수 및 옵션 제공

 

MLOps 예시

비즈니스 인텔리전스, 대규모 데이터셋에 대한 복잡한 분석 및 리포팅

 

데이터 레이크

AWS Lake Formation, Azure Data Lake

  • 다양한 데이터 형식 지원 : 구조화되지 않은 데이터에서부터 구조회된 데이터까지 다양한 형식의 데이터 저장 및 관리
  • 유연한 데이터 처리 : 데이터 형식에 구애받지 않고 저장, 검색 및 분석 가능
  • 대규모 데이터 관리 : 데이터 레이크는 방대한 양의 데이터를 효과적으로 관리할 수 있는 능력을 가짐
  • 비용 효율성 : 사용한 만큼의 비용만 지불, 다양한 저장 옵션 제공
  • 데이터 통합 : 다양한 소스의 데이터를 하나의 위치에서 관리하고 분석

 

MLOps 예시

대규모 이미지 또는 비디오 데이터셋의 저장 및 분석, 글로벌 머신러닝 파이프라인에서의 데이터 공유

 

Storage와 MLOps

  • 데이터 준비 : Model Training를 위한 데이터 준비 및 전처리
  • Model Registery : 트레이닝된 Model 및 관련 파일 저장
  • Data Pipeline : 지속적인 데이터 업데이트와 Model Re-training 지원
  • 클라우드 기반 스토리지 활용 : 대기업에서는 AWS S3를 사용하여 전 세계적으로 분산된 데이터 센터에서 대량의 사용자 데이터를 저장 및 관리
  • 데이터 레이크를 통한 유연한 데이터 관리 : 데이터 레이크를 구축하여 다양한 형태의 거래 데이터를 효과적으로 관리하고 분석

 

Container

• 정의 : Container 는 애플리케이션과 그 필요한 모든 것(코드, 런타임, 시스템 도구, 시스템 라이브러리 등)을 포함하는 표준화된 단위 애플리케이션은 어떤 컴퓨팅 환경에서도 일관되게 실행될 수 있음
• 작동 원리 : Container는 운영 체제의 커널을 공유하며, 각 컨테이너는 서로 격리된 공간에서 실행. 이는 각 Container가 자체 파일 시스템을 가지고 있는 가벼운 ‘가상 환경’과 유사하다고 보면 된다.

 

• 독립된 실행 환경 : 애플리케이션과 그 종속성을 담은 격리된 환경
• 경량화 : 전체 Os를 가상화하지 않고 필요한 컴포넌트만 포함
• 이미지 기반 : 애플리케이션 실행에 필요한 모든 파일을 포함하는 이미지 기반

 

Container 필요성
환경 일관성 제공
• Container는 개발, 테스트, 생산 환경에서 동일한 소프트웨어 환경을 유지할 수 있게 해 줍니다. 이는 애플리케이션의 이식성을 증가시키고 환경에 따른 문제를 줄임

자원 효율성 증가
• Container 는 VM(가상 머신)보다 적은 리소스를 사용하여 더 많은 애플리케이션을 호스트할 수 있게 해 줍니다. 이는 하드웨어 비용을 줄이고, 자원 사용률을 최적화

배포 및 확장 용이성
• Container 는 배포와 확장이 용이하며, 빠른 시작과 중단이 가능합니다. 이는 CI/CD 파이프라인과 잘 통합되어 빠른 개발 및 배포를 가능

 

MLOps에서 Container 인프라
• MLOps에서의 중요성: 컨테이너는 MLOps의 핵심 구성 요소로 자리 잡음. 데이터 과학자와 엔지니어가 동일한 환경에서 작업할 수 있게 해 주며, 모델의 개발, 테스트, 배포 과정을 효율적으로 만듦.
• 효율성과 확장성: 컨테이너는 머신러닝 파이프라인의 효율성을 증가시키며, 클라우드 환경에서의 확장성을 제공. 이는 MLOps의 유연성과 속도를 증가시키는 데 기여

 


Orchestrator

 

다수의 Container를 조정하고 관리하는 시스템

-> 여러개의 작업을 함께 연결하여 크기가 큰 워크플로우나 프로세스를 실행하는 방식을 취함

컨테이너의 배포

스케일링 및 네트워킹을 자동화

 

목적 : 높은 가용성, 확장성 및 신뢰성을 가진 시스템을 구축하기 위해, Container화된 애플리케이션의 복잡한 작업을 간소화

 

중요성

1. 복잡성 관리

Orchestrator는 복잡한 서비스이 생명 주기를 관리하고, 여러 Container 간의 의존성을 조정

2. 자동화

자동화를 통해 수동 intervention 없이도 시스템을 안정적으로 운영가능

3. 확장성

사용량 증가에 따라 자동으로 리소스를 조정하고, 필요에 따라 서비스를 확장하거나 축소할 수 있음

4. 고가용성

서비스의 지속적인 가용성을 보장하며, 장애 발생 시 자동으로 복구해줌

 

프로세스 오케스트레이션 VS 프로세스 자동화

자동화와 오케스트레이션은 고도로 상호보완적이지만, 의미는 서로 다르다.

자동화는 사람이 개입할 필요 없이 작업이 실행되도록 프로그래밍하는 것이고 오케스트레이션은 여러 개의 작업을 하나의 종단간 프로세스나 작업으로 구성하는 것을 말한다. 

오케스트레이션은 프로세스 전체에 걸쳐 이벤트나 활동에 반응해야 하고, 한 가지 자동화된 작업에서 얻은 출력을 바탕으로 의사 결정을 내려 다음 작업을 판단하고 조율할 줄 알아야한다.

 

애플리케이션 오케스트레이션

두 개 이상의 소프트웨어 애플리케이션을 통합한 것. 프로세스 자동화 또는 데이터 실시간 동기화를 지원하기 위해 애플리케이션 오케스트레이션을 수행할 수 있다. 

 

서비스 오케스트레이션

여러 클라우드 공급업체 및 도메인에 걸쳐 있는 시스템을 조율하고 관리하도록 지원하기 때문에 애플리케이션 오케스트레이션과 유사하다.

오늘날 시스템의 조율과 관리는 필수적입니다. 이 접근법은 마이크로서비스 오케스트레이션, 네트워크 오케스트레이션, 워크플로 오케스트레이션을 포함하고 있다.

개별 서비스는 기본적으로 서로 통합될 수 있는 능력이 없으며 자체적인 종속성과 요구 사항이 있고 시스템이 복잡할수록 다양한 구성 요소를 오케스트레이션하는 것이 더욱 중요하다. 이를 통해 인프라를 확장하고 시스템을 최적화하고, 서비스 제공 실패를 방지할 수 있어야 한다.

 

컨테이너 오케스트레이션

컨테이너 관리와 조율을 자동화하는 것

 

클라우드 오케스트레이션

클라우드 오케스트레이션은 프라이빗 및 퍼블릭 클라우드에서 연결을 관리하는 작업을 자동화하는 프로세스

클라우드 오케스트레이션은 자동화된 작업과 프로세스를 특정 비즈니스 기능을 수행하는 데 도움을 주는 워크플로로 통합

 

 

컨테이너 오케스트레이션 툴

Kubernetes & Docker Swarm가 주요 툴

TO BE 툴에 대해 좀 더 상세히 알아보고 싶음

 

오케스트레이션 주요 기능

자동 배포 및 관리
• Orchestrator는 사용자가 정의한 설정에 따라 Container를 자동으로 배포하고, 실행

스케일링 및 로드 밸런싱
• 트래픽의 증가나 감소에 따라 자동으로 컨테이너 수를 조절

자동 복구 및 장애 대응
• 오류가 발생한 컨테이너를 자동으로 감지하고, 필요한 경우 복구 조치를 취함

서비스 발견 및 네트워킹
• Orchestrator는 컨테이너 간의 통신 및 서비스 발견을 관리

업데이트 및 롤백 관리
• 애플리케이션 업데이트를 안전하게 관리하고, 필요한 경우 이전 버전으로 롤백