컴퓨터 비전(Computer Vision) 문제에서 Superb AI Suite를 이용한 Data Centric MLOps #01

컴퓨터 비전(Computer Vision) 문제에서 Superb AI Suite를 이용한 Data Centric MLOps #01

Introduction

이번 글은 컴퓨터 비전 문제에서 Superb AI 스위트(Suite)를 이용한 데이터 중심의 AI 개발 사이클 파이프라인 (Data Centric MLOps Pipeline, 이하 MLOps Pipeline)을 구축하는 방법에 대해서 알아보려고 합니다. (컴퓨터 비전에 대해 알고 싶으시다면, 👉컴퓨터 비전 데이터에 대한 모든 것에서 확인하실 수 있습니다.)

이 글은 총 2편으로 나뉘어 공유해드릴 예정인데요. 1편에서는 MLOps Pipeline에 대해서 간단히 정의해보고 어떤 요소들이 있을지 살펴보고, 최종적으로 2편에서 Superb AI 스위트(Suite)와 AWS 세이지메이커(SageMaker)를 활용해서 MLOps Pipeline을 구축하는 것까지 알려 드릴 예정입니다. AWS에는 MLOps를 쉽게 도와주는 세이지메이커라는 서비스가 제공되는데, 세이지메이커를 사용하면 AI 모델을 보다 쉽게 학습 및 배포 할 수 있습니다. 이러한 세이지메이커와 저희 제품이 어떻게 연동되는지 알아보기 전에, MLOps Pipeline이 어떻게 구성 될 수 있는지 먼저 살펴보려고 합니다.


Data Centric MLOps Pipeline

각 서비스의 시나리오에 따라서 MLOps Pipeline은 다양하게 구성할 수 있지만, 데이터 기반으로 하는 MLOps Pipeline을 통해서 빠르게 모델을 POC(Proof of Concept : 개념 실증, 이하 POC) 하고 배포 할 수 있는 방법부터 함께 살펴 보겠습니다.

Data Centric MLOps Pipeline에서는 데이터를 기반으로 하는 빠른 학습 및 새로운 데이터를 추가하여 더 높은 성능을 달성하는 것을 목표로 하게되는데요. 이러한 파이프라인은 크게 데이터(Data), 학습(Train), 배포(Deployment)로 구분할 수 있습니다. 데이터 단계에서는 데이터를 쉽게 접근, 관리, 가공, 추출하는 부분이 중요하고, 학습 단계에서는 데이터를 쉽게 접근하고 학습이 용이한 인프라 환경이 되어야 합니다. 배포 단계에서는 학습된 모델을 바로 배포할 수 있어야 하구요. 그리고 추론(Inference)되는 데이터들 중에서 성능을 높일 수 있는 데이터를 찾아서, 다시 라벨링 및 학습하는 피드백 루프(Feedback Loop)가 존재해야 합니다.

그러면 어떻게 데이터 파이프라인(Data Pipeline)을 구성해서 이러한 목표를 달성할 수 있는지 살펴보겠습니다.


데이터 파이프라인은 데이터 수집부터 학습에 필요한 데이터 준비까지 담당하게 되는 단계로서 5가지 영역으로 나누어 볼 수 있습니다.

1) 첫 번째 단계로 데이터 가져오기(Data Ingestion)는 학습 하기 위한 로우 데이터(Raw Data)를 준비하는 단계입니다. 해당 단계에서는 데이터의 전처리 또는 데이터 관리 및 라벨링 플랫폼에 데이터 업로드를 진행하게 됩니다.

2) 데이터가 준비되면, 데이터 분석& 큐레이션(Data Analysis & Curation) 단계에서 수많은 로우 데이터 중에서 실제 학습에 사용할 데이터를 분석하고, 선택하는 작업을 수행합니다. 물론 초기 POC에서는 대체로 데이터가 많지 않기 때문에, 모든 데이터를 사용하는 경우가 많습니다.

3) 데이터 라벨링(Data Labeling)단계에서는 이렇게 선택된 데이터에 대해서 라벨링을 진행하게 됩니다. 대부분에 많은 회사들이 이 단계에서 전문업체의 데이터 라벨링 서비스를 이용하거나 또는 인하우스 작업자들을 통해서 라벨링을 수행하게 됩니다.

4) 라벨링이 완료된 데이터는 프로젝트 가이드라인에 맞게 라벨링 되었는지 확인하는 데이터 검증(Data Validation)작업을 수행하게 됩니다.

5) 확인 작업이 완료된 데이터는 학습에 사용할 수 있도록 준비하는 데이터 준비(Data Preparation)을 거쳐 학습할 준비를 완료하게 됩니다.

‍위에 5가지 단계를 거치면서 데이터 라벨링이 완료된다면(데이터 준비 5단계, 실리콘밸리에서는 어떤 플랫폼을 사용할까?👈에서 더 확인해 보실 수 있어요) 이제 모델 학습 단계를 살펴봐야 합니다. 학습에서는 데이터 로드, GPU 서버 인프라, Hyper Parameter 튜닝, Parallel Training, Monitoring, Model Versioning, Model Evaluation 등 많은 요소들이 있지만, 이후 예제에서는 데이터 로드와 GPU 서버 인프라에 대해서 집중해보려고 합니다.

먼저 클라우드 환경에서 학습을 하기 위해서는 데이터 로드에 대한 고민을 해야 하는데요. Local 환경의 GPU에서는 일반적으로 하드디스크에 저장된 데이터를 사용하기 때문에 매번 새롭게 데이터를 받을 필요가 없습니다. 하지만 클라우드 환경에서는 GPU 인스턴스의 가격이 매우 비싸기 때문에 효율적으로 GPU 인스턴스를 켜고 끄는 것이 중요하고, 이 경우 데이터를 저장하고 있는 저장소가 애매해질 수 있습니다.

물론 EBS, EFS 등의 스토리지를 사용할 수 도 있지만, 대체로 클라우드 한경에서는 S3에 데이터를 저장해서 사용하는 것이 보편적이기 때문에 데이터를 지속적으로 인스턴스에 유지시키기가 어려울 수 있습니다. 그래서 이후 예제에서는 데이터를 로컬에 저장하는 것이 아니라 스트리밍 방식으로 Suite에서 데이터를 가져와 학습하는 방식을 사용해보려고 합니다. 그리고 GPU 서버 인프라에 대해서는 AWS 세이지메이커를 활용해서, 어떻게 하면 쉽게 모델을 학습시킬 수 있는지에 대한 꿀팁까지 살펴볼 예정입니다.

모델 학습을 완료했다면, 해당 모델에 대해서 배포(Deployment)를 진행해야 합니다. 배포는 다양한 환경에 대해서 진행 될 수 있지만, API 서비스로 모델을 배포하려고 합니다. 배포에서 중요하게 생각해야 하는 부분이라면, 어떻게 피드백 루프를 추가할 수 있을까 인데요. Data Centric MLOps에서는 모델에 성능을 높이기 위해서 데이터를 지속적으로 라벨링하는 파이프라인이 구축이 되는 것이 필요합니다. 이 부분이 제대로 구축되어 있지 않다면, 데이터에 기반하여 모델 성능을 향상시키는 것이 어려울 수 있기 때문이죠.

이렇게 1편에서는 이러한 파이프라인에 대해서 간단히 정의해보고 어떤 요소들이 있을지 살펴보았습니다. MLOps Pipeline의 전체를 설명하려면 더 많은 기능과 요소가 필요하지만, 2편에서는 간단하게 최소한의 기능을 이용해서 자동화된 파이프라인을 보여드리려고 합니다. 이후 Superb AI 스위트(Suite)와 AWS 세이지메이커를 활용해서 Data Centric MLOps Pipeline을 구축하기 위한 예시를 공유하도록 할게요.

늦지 않게 2편으로 다시 돌아오겠습니다!