데이터 분석/머신러닝

클라우드 환경에서 MLOps 구축하기

Family in August 2024. 5. 14. 12:04
반응형


클라우드 환경에서 MLOps 구축하기

1. MLOps 소개
기계학습 모델을 실제 프로덕션 환경에 배포하고 운영하는 과정은 전통적인 소프트웨어 개발 및 운영과는 다른 많은 고려사항이 필요합니다. MLOps(Machine Learning Operations)는 모델 개발 단계부터 프로덕션 배포, 모니터링, 재학습까지 전체 라이프사이클을 체계적으로 관리하고자 하는 개념입니다.

MLOps의 주요 구성 요소는 다음과 같습니다.
- 데이터 처리 및 관리
- 모델 학습 및 실험 관리
- 모델 버전 관리 및 배포
- 모델 모니터링 및 성능 추적
- 코드 통합 및 자동화 파이프라인

2. 클라우드 환경 선택
MLOps를 위한 인프라 환경으로 대표적인 클라우드 플랫폼 중 하나를 선택할 수 있습니다. AWS, GCP, Azure 등 주요 클라우드 서비스 중에서 조직의 기존 환경, MLOps 요구사항, 비용 등을 고려하여 적절한 옵션을 결정합니다.

이번 포스팅에서는 GCP(Google Cloud Platform)를 MLOps 환경으로 활용하는 예시를 다루겠습니다.

3. MLOps 파이프라인 구축
GCP의 AI 플랫폼 제품군 중 Vertex AI를 활용하여 ML 파이프라인을 구축해보겠습니다.

import google.cloud.aiplatform as aip

# 데이터셋, 모델 리소스 생성
dataset = aip.DatasetService(project=PROJECT_ID, location=LOCATION)
model = aip.Model(...)

# 파이프라인 정의
@pipeline(...)
def pipeline():
    dataset_create_op = dataset.create_dataset(...)
    dataset_import_op = dataset.import_data(...)
    
    training_op = model.run_model_training(...)
    
    model_deploy_op = model.deploy(...)

# 파이프라인 실행    
pipeline_root = f"gs://{BUCKET_NAME}/pipeline_root/"
aiplatform.PipelineJob(...)



위 코드는 Vertex AI의 Python SDK를 활용하여 간단한 ML 파이프라인을 정의하고 있습니다. 데이터셋 생성, 데이터 로드, 모델 학습, 모델 배포 단계로 구성됩니다.

Kubeflow와 같은 도구를 사용하면 파이프라인을 시각화하고 복잡한 워크플로우를 손쉽게 관리할 수 있습니다.

4. 모델 관리 및 모니터링
Vertex AI의 모델 레지스트리를 활용하여 학습된 모델의 버전 관리와 배포가 가능합니다.

# 모델 버전 생성
new_model = model.upload_model(
    model_resource=model_resource,
    artifact_uri=f"gs://{BUCKET_NAME}/model.pth"
)

# 모델 버전 배포
new_model.deploy(
    machine_type="n1-standard-4",
    node_count=1  
)



모델이 프로덕션 환경에 배포되면 Vertex AI의 기능을 통해 지속적인 모니터링과 검사가 가능합니다.

instances = ...
response = new_model.predict(instances=instances)

model_monitoring_job = aipm.ModelMonitoringJob(...)
model_monitoring_job.run(
    disable_monitoring=False,
    bypass_alert=False 
)



이렇게 자동화된 프로세스를 통해 지속적으로 모델 성능을 모니터링하고 이슈가 발생하면 알림을 받을 수 있습니다.  

5. 데이터 관리와 기록
Vertex AI는 투명한 데이터 기반의 ML 라이프사이클을 지원합니다.

import google.cloud.aiplatform.featurestore as aip_featurestore

# 엔터티 생성 
entity_type = aip_featurestore.EntityType(...)
entity_type.create()

# 피처 생성
feature = entity_type.create_feature(...)
feature.create()



Feature Store를 통해 데이터를 체계적으로 관리하고 라이너지를 추적할 수 있습니다.

또한 Vertex AI의 Experiments 기능을 이용하면 학습 실행 기록과 메타데이터를 체계적으로 관리할 수 있습니다.

aipm_client = aip.init(project=PROJECT_ID)
experiment = aipm_client.create_experiment(display_name="my_experiment")

# 학습 실행 기록
run = experiment.create_run(run_metadata={"my_key": "123"})



6. MLOps 보안 및 거버넌스
MLOps 환경에서는 데이터와 모델의 보안이 매우 중요합니다. Vertex AI에서는 획득, 접근, 활용, 모니터링 등 전체 라이프사이클에 걸쳐 엄격한 IAM 기반 액세스 제어와 암호화 등의 보안 기능을 제공합니다.

또한 ML 프로세스 전반에 걸친 거버넌스, 정책 준수, 운영 모니터링 등이 가능합니다. 각 조직의 ML 운영 정책에 맞춘 효과적인 MLOps 시스템을 구축할 수 있습니다.

7. 결론
이번 포스팅에서는 GCP를 예시 환경으로 MLOps의 전반적인 구축 과정을 살펴보았습니다. 실제 MLOps 구현 시에는 조직의 특성과 요구사항을 반영하여 필요한 부분을 적절히 커스터마이징할 수 있습니다. 안정적이고 효율적인 머신러닝 운영 환경 구축을 위해 MLOps 적용을 고려해보시기 바랍니다.

반응형