AI/ML을 활용한 MLOps 구축
AI/ML을 활용한 MLOps 구축
개요
Machine Learning (이하 ML)은 분석 및 모델 개발 단계를 넘어 운영 단계로 확장하는 단계에 있습니다. 최근 ML모델을 만들어 서비스에 적용하는 업무가 증가하고 있지만, 현실에서는 모델을 개발하는 시간보다 데이터 수집/분석/모델 튜닝에 더 많은 시간이 소요됩니다. 그리고 Production 레벨의 ML System에서는 모델 개발/학습 - 모델 튜닝 - 모델 빌드/배포 - 모델 관리 에 이르기까지 MLOps 라이프사이클 상에 복잡한 ML Workflow를 자동화하고 관리하는 기능이 필요합니다.
Kubeflow는 이러한 ML Workflow를 지원하는 Kubernetes 기반 오픈 소스 Machine Learning 플랫폼입니다. Google, Cisco, IBM, Red hat 등이 참여하여 ‘18년 오픈소스 프로젝트로 공개하였고, ‘20년 3월 Version 1.0이 Release 되었습니다.
Kubeflow는 ML Workflow 각 영역을 Kubernetes 기반의 여러 오픈 소스(istio, knative, argo 등)를 적절히 조합하여 확장성 있게 제공합니다.
Samsung Cloud Platform에서는 Kubeflow 오픈 소스 자체를 Kubeflow Mini 서비스로 제공하며, 다양한 Add-on 기능을 확장하여 AI&MLOps Platform 서비스를 제공합니다.
AI&MLOps Platform은 분산학습 Job 실행 및 모니터링, 추론서비스 관리 및 분석, Job Queue 관리, Job 스케줄러, GPU Fraction, GPU 자원 모니터링 등 오픈 소스에서 제공하지 않는 다양한 추가 기능을 사용할 수 있습니다.
이 문서는 MLOps를 지원하는 AI&MLOps Platform를 Samsung Cloud Platform에 구성하고 활용하는 방법을 설명합니다.
아키텍처 다이어그램
AI&MLOps Platform 서비스 설치를 위해서 Kubernetes Cluster가 필요하다. 사용자는 Kubernetes Engine 서비스를 생성한다. 이 때 Kubernetes Cluster의 Persistent Volume(PV)는 File Storage 서비스에서 생성한다.
사용자는 VPC의 Kubernetes Cluster를 선택하여 AI&MLOps Platform를 배포한다. AI&MLOps Platform 설치가 완료된 후 사용자는 AI&MLOps Platform Dashboard URL에 접속하여 AI&MLOps Platform 이 제공하는 ML Workflow기능을 사용할 수 있다.
- 분석 데이터 셋 저장 및 모델 파일 저장 용도로 Object Storage를 사용하며 Jupyter Notebook에서 S3 SDK를 이용하여 연계할 수 있다.
- Container Registry를 구성하여 사용하거나 외부 DockerHub를 이용할 수 있다.
- 데이터 전처리 및 대용량 데이터 분산 처리 연계를 위해 Cloud Hadoop을 이용할 수 있다.
※ DockerHub, GitHub 등 사용자 VPC 외부의 서비스를 이용할 경우 Security Group, Firewall의 규칙 추가가 필요하다.
Domain을 활용하여 AI&MLOps Platform Dashboard를 사용하려 하는 경우, DNS 서비스에서 Domain을 생성하고, Load Balancer에서 해당 Domain, Kubernetes Worker와 연결하여 Domain 기반 접근이 가능하다.
Object Storage와 Container Registry, Cloud Hadoop 등의 서비스 연계를 위해서 AI&MLOps Platform 서비스 생성과는 별도의 서비스 생성 절차가 필요하며 각 서비스의 사용 가이드를 참조해 AI&MLOps Platform 서비스과 연계하여 사용할 수 있다.
사용 사례
AI&MLOps Platform 기반 생산 공정 불량 판정 시스템 구축
AI&MLOps Platform은 Kubernetes 기반으로 뛰어난 재사용성, 확장성, 안정성을 제공합니다.
AI&MLOps Platform은 Jupyter Notebook기반 모델 개발 환경을 제공하고, 하이퍼파라미터 조정 및 결과 검증 기능을 제공하여 여러 모델 간 성능 비교를 할 수 있습니다.
또한 ML Framework(Tensorflow, Pytorch 등)의 GPU를 활용한 분산 학습을 지원하여 모델 학습 시간을 단축할 수 있으며, 모델 배포 시 애플리케이션에서 호출하고 서비스 확장이 가능한 Endpoint API를 제공합니다.
GPU 기반 고성능 인프라(GPU Direct RDMA) 사용 시, 분산 학습 성능을 평균적으로 1.5배 향상 시킬 수 있습니다.
MLOps 기반 모델 개발 및 운영 배포 체계 개발
AI&MLOps Platform Pipeline을 통해 재활용 가능한 Workflow를 생성하여 모델 개발부터 배포까지 MLOps 환경 구성이 가능하고,
추가 데이터로 모델 재 학습 시 동일 pipeline으로 자동화할 수 있습니다.
선결 사항
AI&MLOps Platform 설치를 위해 최소 사양 이상의 Kubernetes Cluster 가 필요합니다. 또한 Kubernetes Cluster 생성 시 Load Balancer의 사용 여부를 사용으로 선택해야 합니다.
제약 사항
AI&MLOps Platform 모델 배포는 현재 구성된 Kubernetes Cluster로만 가능 합니다. 모델 개발 환경과 추론 서비스를 위한 운영 환경을 분리하지 않고 단일 클러스터에서 제공합니다.
고려 사항
데이터 및 모델의 저장을 위해 Object Storage의 사용을 고려할 수 있습니다. 또한 컨테이너 이미지 저장을 위해 Container Registry의 사용을 고려하거나 외부 DockerHub 사용을 고려할 수 있습니다. 추가적으로 Elyra등 Pipeline 구성 오픈소스 툴을 배포하여 AI&MLOps Platform의 기능을 확장 할 수 있습니다.
관련 서비스
본 가이드에서 설명하는 기능 또는 구성과 연결되는 Samsung Cloud Platform의 서비스 목록입니다. 서비스 선택 및 설계 시에 참고하세요.
| 서비스군 | 서비스 | 상세 설명 |
|---|---|---|
| Container | Kubernetes Engine | Kubernetes 컨테이너 오케스트레이션 서비스 |
| Storage | File Storage | 네트워크 연결을 통하여 다수의 클라이언트 서버가 파일을 공유하는 스토리지 |
| Storage | Object Storage | 데이터 저장 및 검색에 용이한 객체 스토리지 |
| Networking | Load Balancer | 서버 트래픽 부하를 자동으로 분산하는 서비스 |
| Networking | DNS | 간편하게 도메인을 설정하고 관리하는 서비스 |
| Container | Container Registry | 컨테이너 이미지를 손쉽게 저장, 관리, 공유하는 서비스 |
| Cloud Hadoop | Cloud Hadoop | 쉽고 빠른 빅데이터 처리/분석을 위한 Hadoop 클러스터를 제공하는 서비스 |
