본문 바로가기

PRODUCT/Cloud

AI/ML 환경에 OpenShift가 잘 어울리는 이유

 AI/ML이 보편적인 워크로드가 되는 시대가 올까? 2021년 현재 그런 시대가 코앞에 와 있습니다. 업종 불문하고 AI/ML은 비즈니스에서 새로운 가치를 창출하는 수단입니다. 이런 이유로 많은 조직 보강과 인프라 구축에 나서고 있습니다. AI/ML 인프라와 플랫폼 구축에 있어 가장 중요한 요소 중 하가가 바로 쿠버네티스(Kubernetes)입니다. 그 이유와 함께 AI/ML 환경에 엔터프라이즈 쿠버네티스 플랫폼인 OpenShift를 어떻게 적용할 수 있는지 간단히 살펴보겠습니다.

 

자원 효율성과 개발 생산성 모두를 높이는 방법

 

 무엇이건 새로운 시도는 시행착오를 겪게 마련입니다. IT 기술도 똑같습니다. 빅 데이터, 클라우드 등의 트렌드 시작 시점을 떠올려 보면 많은 조직이 기술 내재화를 목표로 상당한 시행착오를 겪었습니다. AI/ML도 비슷합니다. 강력한 성능의 GPU 클러스터를 구축하고 AI/ML 플랫폼을 구현하고, 여러 프로젝트를 수행한 조직 중 상당수가 효율성과 생산성에 대한 시행착오를 겪었습니다. 효율성은 자원에 관한 이야기입니다. 큰 비용을 들여 구축한 GPU 클러스터의 하드웨어 자원 프로비져닝은 생각처럼 쉽지 않습니다. HPC 환경처럼 잡 스케줄러 도구를 이용하면 되지 않나? 하드웨어 자원만 놓고 보면 맞는 말이지만 소프트웨어 환경까지 생각하면 제약이 있습니다. 이는 곧 생산성 문제로 이어집니다. AI/ML 프로젝트에 참여한 개발자나 데이터 과학자가 생산적으로 일을 하려면 하드웨어 프로비져닝 만으로는 부족합니다. 현재 진행 중인 프로젝트를 위한 소프트웨어 스택을 일일이 구축하는 수고와 불편이 없어야 합니다. 그렇다면 하드웨어 자원 프로비져닝과 소프트웨어 스택을 어떻게 하면 하나로 묶어 볼 수 있을까요? 그 답은 쿠버네티스에 있습니다.

 

DevOps MLOps

 

 쿠버네티스를 이용하면 조직 내에서 여러 팀이 진행 중인 AI/ML 프로젝트를 효과적으로 지원할 수 있습니다. 하드웨어와 소프트웨어 모든 측면에서 말이죠. 인프라와 플랫폼을 하나로 보는 것은 이제 상식으로 통합니다. 서버리스(Serverless) 환경에서 자원을 확보하고 CI/CD 파이프라인을 통해 자동화 기반으로 개발, 배포, 운영의 흐름이 흘러가는 것을 떠올려 보십시오. 모든 조직의 애플리케이션 현대화가 이런 방향으로 진행되고 있습니다. 이를 흔히 DevOps라고 부르죠. AI/ML도 다르지 않습니다. 데이터 과학자와 개발자는 서버리스 환경에서 자동화 기반으로 모델 개발, 훈련, 배포, 모니터링 및 검증을 하는 MLOps가 궁극적인 목표로 떠오르고 있습니다. MLOps 환경이 잘 갖추어지면 조직 내 데이터 과학자와 개발자는 필요한 만큼 인프라 자원을 할당하고, 여기에 자신이 선호하는 소프트웨어 환경으로 만든 컨테이너 이미지를 올려 신속하게 프로젝트를 추진할 수 있습니다. 쿠버네티스 환경이다 보니 손이 많이 가는 여러 과정이 자동으로 진행됩니다.

 

쿠버네티스 적용 효과

 

쿠버네티스를 적용하면 AI/ML 워크플로우 전반에 걸쳐 효과를 거둘 수 있습니다. 다음과 같이 AI/ML 워크플로우를 정의해 보겠습니다. 쿠버네티스는 첫 단계인 AI/ML 비즈니스 목표를 세우는 것을 제외한 모든 과정에서 쓰입니다. 이를 위해 필요한 것은 엔터프라이즈 쿠버네티스 플랫폼인 OpenShift Open Data Hub입니다. 참고로 Open Data Hub OpenShift 환경에서 대규모 분산 AI 워크로드를 자동으로 수행하기 위한 도구를 제공하는 kubeflow 기반 오픈 소스 프로젝트입니다.

 이제 쿠버네티스 기반으로 MLOps 체계가 어떻게 돌아가는지 알아보겠습니다. 먼저 데이터 수집 단계에서는 Apache Spark, Apache Kafka 같은 데이터 처리 환경과 Ceph와 같은 스토리지 기능을 연계하여 셀프서비스 기반 데이터 파이프라인의 기초를 다질 수 있습니다. 실제 사례로 BMW가 있는데, BMW OpenShift 환경을 활용해 자율주행 자동차 관련 데이터 수집, 처리, 저장 환경을 구축하고 이를 토대로 AI 모델 훈련을 합니다.

 

 다음 단계인 모델 개발, 튜닝, 검증 과정에서 쿠버네티스 환경은 재현성(reproducibility) 보장에 큰 역할을 합니다. 다양한 데이터 세트를 적용해 모델과 알고리즘을 훈련하고 추적하려면 이전으로 되돌아가는 재현성이 중요합니다. OpenShift 환경에서는 재사용 가능한 소프트웨어 환경 구축과 배포가 간편합니다. 컨테이너 이미지를 만들어 활용하면 반복할 수 있고 재사용이 가능한 AI/ML 파이프라인을 쉽게 만들 수 있습니다. 따라서 데이터 과학자나 개발자는 Jupyter 노트북같이 편의성 높은 도구를 활용해 애자일한 방식으로 모델 개발, 튜닝, 검증을 할 수 있습니다.

 

 실제 모델 배포 단계에서는 프로덕션 용도의 자원 프로비져닝 작업이 필요합니다. 쿠버네티스 환경에서는 셀프서비스 방식으로 하드웨어와 소프트웨어 도구 프로비져닝이 가능합니다. 참고로 개발과 프로덕션 환경 모두 GPU 자원 프로비져닝을 OpenShift 환경에서 간편히 할 수 있습니다. OpenShift Operator 프레임워크를 통해 NVDIIA가 제공하는 GPU Operator를 실행할 수 있습니다.

 

 소프트웨어 프로비져닝의 경우 자체 컨테이너 카탈로그나 NVIDIA가 제공하는 NGC 서비스를 이용하면 됩니다. 하드웨어, 소프트웨어 준비를 마친 다음 실제 배포는 오픈 소스 프레임워크인 Seldon Core를 이용하면 됩니다. 이를 이용해 모델 훈련 및 서빙 워크플로우를 간단히 구현한 예를 한번 보겠습니다. 과학자나 개발자는  OpenShift 환경에 배포한 Jupyter 노트북 인스턴스를 이용해 모델을 개발하고, S3 오브젝트 스토리지 버킷에 모델을 배포합니다. 이후 OpenShfit Build로 애플리케이션 이미지를 생성하고, Seldon Core API로 이를 래핑하고, Seldon Operator로 해당 모델을 ML as a Restful Service로 배포합니다.

 

 다시 본론으로 돌아와 MLOps 맨 마지막 단계인 모니터링의 경우 Open Data Hub와 연계해 사용할 수 있는 Prometheus, Grafana를 이용하면 됩니다.

 

이상으로 AI/ML 환경에 OpenShift가 잘 어울리는 이유를 알아보았습니다.

더 자세한 내용은 락플레이스로 문의 바랍니다.