딥러닝 모델 서빙 시스템
코드너리 | 2022. 03. 07
ML 파이프라인
사용된 기술:
개요
- 3개월 전만 하더라도, 쏘카의 차량 검수팀은 사용자가 전송한 차량 사진들을 한 땀 한 땀 눈으로 확인하며 손상 유무를 판정했습니다. 하루에 업로드되는 사진이 8만 장 정도 되니 전수조사를 하는 데에 어려움이 많았고, 다른 업무들에 우선순위가 밀려 샘플 조사도 쉽지 않은 상태였습니다.
- 이에 따라, 이미지를 확인하고 차량의 손상을 판정하는 과정에 대한 자동화 방안을 찾아보게 되었고, DL(Deep Learning)을 이용하여 차량 손상을 판정하는 모델을 개발하여 이를 운영하는 시스템을 구축하는 프로젝트가 시작되었습니다.
고려 사항
- 현재 차량 검수 운영 방식 (전반적인 프로세스 확인)
- 모델이 판정해야 하는 이미지의 수량 (시간당 처리량 판단)
- 어떻게 이미지를 모델에 전달할 것인가?
- 이미지 판정 결과는 어떻게 전달할 것인가?
- 전체 시스템의 동작 상태를 확인할 수 있는 방법은?
각 프레임워크 사용 이유
- 이미지 수집: S3
- 사내 시스템과 모델간의 인터페이스: AWS SQS
1. 쉽고 빠른 인터페이스의 구축 및 사용
2. 향후 검수 시스템의 변경 또는 차량 손상 판정 모델의 변경 시 상호간의 영향 최소화
3. 이미지 처리량의 변화에 따른 유연한 Scaling 지원 - Model Serving: AWS S3 + Agent(Python Application / Docker) + Kubernetes
1. 손상 판정 모델을 초기화
2. AWS SQS로부터 메시지를 Pull하고, 모델에 이미지를 전달
3. 모델의 판정 결과를 사내 시스템에 전달
4. 모델 및 Agent의 상태를 확인하고 로그 저장 - 서빙 관련 배포 및 모니터링: Git + Rancher
1. Git에 소스를 push하면 docker image 빌드부터 Kubernetes 배포까지 한방에!
2. 복잡한 설정 없이 간편하게 Node와 Pod 상태 모니터링 및 로그 확인 가능