클라우드 네이티브 기술을 활용하자 - 컨테이너(Container), ML 기술 기반 불량 분석 시스템 구축 사례
- 2022-03-31
- 작성자 이삼섭
클라우드 네이티브(Cloud Native) 기술은 클라우드 환경에서 확장가능한 애플리케이션(Scalable Application)을 개발하고 실행하기 위해 필요한 기술입니다. 컨테이너(Container), 서비스 메시(Service Mesh), 마이크로서비스(MicroService), 변경불가능 인프라스트럭처(Immutable Infrastructure), 선언적 API(Declarative APIs) 등이 이것에 포함됩니다. 이러한 기술은 환경 구성과 변경된 소스 코드 적용, 부하 증가 시의 자원 추가 등이 쉽다는 장점 때문에 현재 업무용 웹 애플리케이션, ML(Machine Learning) 모델 개발 및 적용에 많이 사용되고 있습니다. 본문에서는 클라우드 네이티브(Cloud Native) 기술 중 컨테이너, API 기술 기반의 반도체 불량 분석 자동화 사례와 환경 구성의 시간 절감 효과를 살펴보겠습니다.
다양한 ML(머신러닝) 모델 개발과 업무 적용을 위한 고민
개별 개발 환경 구축으로 인한 신규 개발 환경 구축의 시간 증가
데이터를 분석하고 ML모델을 만들어 학습시키는 데는 Python, R 등의 다양한 언어와 Library가 존재합니다. 이것은 데이터 사이언티스트(Data Scientist)들이 개별 개발 환경과 신규 개발 환경을 동시에 구축하는 해야하기 때문에 신규 개발의 시간적 효율을 떨어뜨림을 의미합니다.
ML(머신러닝) 모델 개발 외 컨테이너(Container) 및 API 작업으로 데이터 사이언티스트의 업무 부담 증가
데이터 사이언티스트는 부가적인 업무에 많은 시간을 사용하면서 시행착오를 겪게 됩니다. 이는 데이터 추출, 분석, 모델 학습, 평가, 검증 등 본연의 업무 이외에 ML 모델을 컨테이너화 하고, API 형태로 제공하기 위해 많은 시간을 소비하기 때문입니다.
분석 데이터 증가에 따른 자원 증설 등 실시간 대응의 어려움
데이터 증가, ML 모델을 이용한 실시간 배치 처리 등의 업무량 증가는 Scale out 또는 Scale up이 신속하게 이루어지지 못해 업무의 연속성을 보장하기 어렵습니다.
[여기서 잠깐!] 반도체 물량 분석을 AI를 통해 어떻게 하면 자동화 할 수 있을까?
이와 같은 문제의 해결을 위해 3가지 방향으로 접근했습니다. 분석 시간(1일 → 5분)과 개발 환경 구축 시간(2일 → 즉시)을 단축하였으며 컨테이너 기술 기반 자원의 자동 Scale in/out 환경을 구성하였습니다.
ML(머신러닝) 모델 제공 자동화를 위한 해결 방향
데이터 증가, ML 모델을 이용한 실시간 배치 처리 등의 업무량 증가는 Scale out 또는 Scale up이 신속하게 이루어지지 못해 업무의 연속성을 보장하기 어렵습니다. 이와 같은 문제의 해결을 위해 3가지 방향으로 접근했습니다. 분석 시간(1일 → 5분)과 개발 환경 구축 시간(2일 → 즉시)을 단축하였으며 컨테이너 기술 기반 자원의 자동 Scale in/out 환경을 구성하였습니다.
- Data Preperation (현행 시스템 유지)
- Experiment (현행 시스템 유지)
- Scalable Training (현행 시스템 유지)
- Build/Test (Container 기술기반 자동화 구성)
- Deployment (Container 기술기반 자동화 구성)
- Serving/Execution (Container 기술기반 자동화 구성)
1) 표준 컨테이너(Container) 이미지 제공
ML 모델 개발, ML 웹 서비스의 제공을 위해 2단계로 컨테이너 이미지를 표준화하였습니다. 첫째, ML 모델 개발에 높게 사용되는 파이썬, R 언어와 Library를 포함한 표준 컨테이너 이미지를 제공하여 빠른 개발 환경을 가능하게 했습니다. 둘째, uWSGI, Nginx, Flask를 활용한 파이썬 기반의 표준 이미지와 Nginx, Plumber를 활용한 R 기반의 표준 이미지를 만들어 웹 서비스로 제공 가능한 환경을 자동화 하였습니다. 추가적으로 쿠버네티스 환경에서 Scaling, Auto Healing이 가능하도록 설정하여 안정적인 서비스 제공이 가능합니다.
2) 자동 배포 파이프라인 구축
보안이 강화된 프라이빗 네트워크(Private Network)에서 데이터 사이언티스트들이 파이썬, R 기반의 Library Repository를 쉽고 안전하게 이용할 수 있게 하였습니다. 또한 Jenkins Tool을 활용하여 컨테이너 이미지 생성 및 배포 환경을 구성하고 ML 모델을 컨테이너 에 배포할 수 있게 하였습니다.
3) 쿠버네티스(Kubernetes)를 활용한 ML 모델 제공 환경
컨테이너 오케스트레이션(Container Orchestration)을 위한 쿠버네티스, 컨테이너 이미지 저장을 위한 이미지 레지스트리(Image Registry), 빌드 및 배포를 위한 DevOps Tools을 VM(IaaS) 에 컨테이너 기반 플랫폼으로 구성하였습니다. 이는 개발자가 직접 ML 모델을 서비스 형태로 제공/관리할 수 있는 플랫폼(PaaS) 환경입니다. 데이터 사이언티스트가 데이터 분석, ML 모델 개발 및 학습 업무에 집중할 수 있어 안정적인 개발 운영을 가능하게 합니다.
- ML모델 개발자
- ML모델 개발자
- ML모델 표준이미지 : Phthon, R-Python, Python-R
- 외부 Library 연동 : Maven, R, Python, 모델별 Lib
- 빌드/배포 파이프 라인 : 개발 → 검사 → Container 이밎 빌드 → Container 이미지 배포
- ML모델 Container
- ML모델 Container
- SQL → ML모델활용 배치프로그램 → ML모델 Container
- SQL → ML모델활용 배치프로그램 → ML모델 Container
- DataLake NoSQL → ML모델활용 배치프로그램 → ML모델 Container
- DataLake NoSQL → ML모델활용 배치프로그램 → ML모델 Container
- Kubernetes Engine
- Container Registry
- Devops Tools
- Compute
- Storage
- Networking
- Maven
- R
- Python
지금까지 불량 분석 ML 모델을 데이터 사이언티스트가 직접, 쉽게 웹 서비스로 제공 받을 수 있는 자동화 개발(Development), 운영(Operation) 환경 구축에 대해 살펴보았습니다. 개발 측면에서는 모델별 또는 데이터 사이언티스트별로 독립적인 가상 실행 환경을 컨테이너로 제공 받아 ML 모델 변경, 검증을 용이하게 하였습니다.
따라서 운영 측면에서는 컨테이너 기술, 즉 쿠버네티스의 컨테이너 오케스트레이션(Container Orchestration) 기능을 활용하여 Auto Scale in/out, Auto Healing과 Rolling Update를 가능하게 했습니다. 이는 ML 모델의 웹 서비스의 가용성이 확보되었음을 의미합니다.
삼성SDS가 제공하는 ML(머신러닝) 플랫폼, AI&MLOps 플랫폼 서비스
삼성SDS는 모델 개발–모델 학습–모델 튜닝–모델 배포/추론–모델 관리에 이르기까지 복잡한 ML Workflow의 자동화를 지원하는 쿠버네티스 기반의 오픈 소스 ML 플랫폼으로 AI&MLOps 플랫폼 서비스를 제공하고 있습니다. 이는 사용자가 손쉽게 환경을 구성하고 활용할 수 있다는 장점이 있습니다. 또한, 더 효율적인 개발과 운영 환경 구성을 위해서 데이터 저장을 위한 RDB, NoSQL DB 제품, RESTful API의 관리, IP별 접근 제어가 가능한 API Gateway 서비스를 선택하여 활용할 수 있습니다.
기업을 위한 진정한 클라우드 서비스, 삼성 클라우드 플랫폼 (Samsung Cloud Platform, SCP)에서 AI 서비스에 대해 더 알아볼까요?
삼성 클라우드 플랫폼 (Samsung Cloud Platform, SCP) 바로가기 >
삼성 클라우드 플랫폼 (Samsung Cloud Platform)에서 AI/ML 상품을 만나보세요.
-
AI/ML
쉽고 편리하게 ML/DL 모델 개발 및 학습 환경을 구축할 수 있는 AI 서비스
- 이삼섭 프로 / 삼성SDS
- 솔루션 사업, SI 프로젝트 등에서 Software Architect로 일하다가 언제부터인가 클라우드 관련 기술을 접하고 컨테이너/PaaS에 대한 기술지원을 하게 되었고 이제는 Samsung Cloud Platform 개발에 역량을 발휘해야하는 개발을 놓고싶지 않은 엔지니어 입니다.