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