brunch

You can make anything
by writing

C.S.Lewis

by 서진호 Jun 30. 2021

버텍스 AI로 무장한 새로운 구글 머신러닝 클라우드

NIA 디지털 서비스 이슈리포트 6월호

올해 구글 IO에서는 ‘버텍스 AI(Vertex AI)’라는 새 이름으로 그동안 키워왔던 구글 클라우드 기반의 머신러닝 개발 및 배포, 운영 플랫폼을 내놓았습니다. 일반적으로 이러한 플랫폼을 서비스로서의 머신러닝(MLaaS, Machine Learning As A Service)으로 클라우드 컴퓨팅 서비스의 일부로서 머신러닝 도구를 제공하는 서비스입니다. 구글 클라우드 외에 타 경쟁사로 AWS사의 세이지메이커(SageMaker)나 MS 애저의 애저 ML 스튜디오가 현재 경쟁을 펼치고 있습니다.


MLaaS는 고객이 내부 조직에서 머신러닝 팀을 설립하는데 드는 비용, 시간 및 위험을 줄여 머신러닝의 혜택을 누릴 수 있도록 지원합니다. 또한, 데이터 사전 처리, 모델 훈련 및 평가, 궁극적으로는 예측과 같은 문제를 풀기 위해 MLaaS를 통해 인프라 스트럭처를 구축하는 데 장점이 있습니다. 또한 클라우드 서비스 제공업체는 예측 분석 및 딥러닝, 데이터 시각화, 자연어 처리, MLOps API 등과 같은 도구를 함께 제공합니다. 계산 측면에서는 클라우드 서비스 제공자의 데이터 센터에서 제공하는 GPU와 TPU를 이용하여 머신러닝 모델 훈련을 빠르게 처리하게 도와줍니다. 


머신러닝 모델 개발 프로세스 관점에서 바라본 버텍스 AI


버텍스 AI 도구를 사용해 머신러닝 모델 개발 프로세스를 간소화할 수 있습니다. 머신러닝 워크플로우 전체를 관장하며 데이터 수집부터 모델 배포, 모니터링까지 포함합니다. 또한, 관리형 머신러닝 플랫폼으로 실무자들의 머신러닝을 실험하고 배포하는 속도를 단축하는데 도움을 줍니다.


예를 들어, 백엔드에서 머신러닝 모델 구축, 훈련, 배포에 필요한 모든 도구를 제공합니다. 네트워크 통신이 오프라인이거나 장치를 사용하는 상태일 수 있으며 데스크톱이나 모바일 클라이언트의 앱 로직은 백엔드에서 배포된 모델과 연결해 예측 결과를 가져와 최종 사용자에게 보여 줍니다. 


구글 리서치에서 수행한 다양한 실험과 발표 논문에서 보였던 수년간의 인공지능에 대한 전략 투자를 통해 버텍스 AI의 기반과 설계에 반영했는데, 컴퓨터 비전, 자연어 처리, 대화 및 구조화된 데이터를 포함하여 내부적으로 사용되는 인공지능 도구에 접근하고 구글 리서치가 지속적으로 개선할 수 있도록 했습니다.


[그림 1 - 버텍스 AI 전체 프로세스 및 아키텍처]


먼저 버텍스 AI는 데이터 준비 프로세스를 지원합니다. 빅쿼리 및 클라우드 저장소에서 데이터를 수집하고 버텍스 데이터 레이블을 활용하여 고품질 훈련 데이터에 주석을 달고 예측 정확도를 향상시킬 수 있습니다. 버텍스 데이터 레이블링은 더 나은 머신러닝 모델을 위해 인간 레이블러로부터 매우 정확한 레이블을 얻을 수도 있습니다.


그 외 다양한 버텍스 AI의 주요 특징은 살펴보면 다음과 같습니다. 


버텍스 매칭 엔진은 대규모 확장성, 짧은 지연 시간 및 비용 등을 효율적인 벡터를 통해 매칭 해주는 서비스입니다.  


파이썬 SDK를 통해 ML 워크플로우에 대한 버텍스 ML 메타데이터는 모델 학습 프로세스에서 생성된 출력을 설명하는 아티팩트, 데이터 출처 및 발생 상황 및 시간 경과에 따른 위치를 포함하는 데이터 계통 및 실행 추적 기능을 제공합니다. 


버텍스 피처(Vertex Feature)는 머신러닝에서 사용하는 특징을 추가 및 선택할 수 있으며, 공유 및 재사용하기 위해 완전 관리형인 피처 저장소를 사용합니다. 따라서 유저 케이스 간에 ML 피처를 공유 및 재사용할 수 있으며, 서버 ML은 대기 시간이 짧은 규모로 제공됩니다. 이를 통해 학습 서비스의 경사 기울기를 완화해줍니다. 


머신러닝 모델 학습 시 버텍스 훈련을 통해 사전 빌드 알고리즘 집합을 제공하고 사용자들이 커스텀 코드를 학습 모델에 가져올 수 있도록 합니다. 사용자 정의가 더 필요한 온프레미스 환경 또는 다른 클라우드 환경과 같은 하이브리드 인공지능을 활용하여 모델 학습을 실행하는 사용자를 위한 관리형 학습 서비스를 제공합니다. 


버텍스 뉴럴 아키텍처 검색은 구글의 선도적인 인공지능 연구를 기반으로 하는 자동화된 서비스를 통해 애플리케이션별 요구를 대상으로 하는 새로운 모델 아키텍처를 구축하고 대기 시간, 메모리 및 전력에 맞게 기존 모델 아키텍처를 최적화하여 뉴럴 아키텍처 구조를 검색합니다.


버텍스 설명 가능한 인공지능(explainable AI)은 버텍스 예측, 자동으로 데이터를 증강시 키는 AutoML 테이블 및 노트북에 통합된 강력하고 설명 가능한 모델 예측을 이해하도록 돕고 신뢰를 구축합니다. 또한, 설명 가능한 인공지능을 통해 모델 평가, 지표 및 특징 속성 및 계통 등 상세한 정보를 제공합니다. 


머신러닝 인프라 관점에서의 버텍스 AI


버텍스 AI는 경쟁 플랫폼보다 모델을 학습하는데 거의 80% 줄인 코드 라인으로 데이터 과학자와 머신러닝 엔지니어가 갖고 있는 전문지식의 수준에 따라 MLOps를 구현하여 전체 개발 수명주기 동안 머신러닝 프로젝트를 효율적으로 구축하고 관리할 수 있습니다. 


딥러닝의 가상 머신 이미지는 소프트웨어 호환성 걱정 없이 컴퓨팅 엔진 인스턴스에서 가장 인기 있는 인공지능 프레임워크를 포함하는 가상 머신 이미지를 인스턴스화할 수 있는데, 데이터 과학자를 위한 표준 워크벤치인 주피터 랩을 사용하여 가상 머신을 생성, 관리 및 연결할 수 있습니다. 참고로 가상 머신 안에는 딥러닝 프레임워크 및 오픈소스 라이브러리와 함께 사전에 이미 설치되어 있습니다.


따라서 버텍스 딥러닝 컨테이너는 모든 인공지능 애플리케이션을 위한 일관된 환경에서 신속하게 모델을 구축하고 배치합니다. 특히, 버텍스 엣지 매니저는 스마트폰이나 사물인터넷 등 경량의 모델이 필요한 장치나 환경에서 유연한 API를 통해 엣지 추론 및 자동화한 프로세스를 원활하게 배포 및 모니터링합니다. 


클라우드에서 스케일인 및 스케일아웃은 각각 동일한 유형의 인스턴스를 제거하고 추가하는 것을 의미합니다. 초당 요청과 같은 지정된 지표에 따라 자동으로 더 많은 인스턴스를 추가하는 스케일 아웃하거나 인스턴스를 더 적게 줄이는 스케일인 하도록 클라우드 엔드포인트를 구성할 수 있습니다.


대규모 인스턴스에는 CPU, GPU, 메모리 및 네트워크 대역폭이 더 많이 가지고 있어 요청이 많아질수록 버텍스 AI는 자동으로 모델 클러스터를 확장하여 수요를 충족시킵니다. 클러스터를 정의할 때는 동종 인스턴스 유형을 사용하는 것이 가장 좋습니다. 인스턴스 유형을 혼합하면 클러스터를 조정하고 이기종 클러스터의 모든 인스턴스에 일관되게 적용되는 확장 정책을 정의하는데 어려움이 있을 수 있습니다. 새 인스턴스 유형을 시도할 경우 해당 인스턴스 유형만 사용하여 새 클러스터를 생성하고 각 클러스터를 단일 단위로 비교하는 것이 좋습니다.


AutoML 사전 학습 모델과 머신러닝 파이프라인


적은 데이터를 가진 경우 데이터 증강을 해주는 AutoML을 통하여 모델 학습 루틴을 작성하지 않고도 사전에 학습된 고품질 사용자 정의 머신러닝 모델을 쉽게 개발할 수 있습니다. 버텍스 파이프라인은 텐서플로 익스텐디드 및 큐브플로 파이프라인을 사용하여 머신러닝 파이프라인을 구축하고 구글 클라우드의 관리 서비스를 활용하여 확장성과 사용당 지불을 가능하게 합니다. 또한 버텍스 메타데이터를 통해 자세한 메타데이터 추적, 지속적인 모델링 및 트리거된 모델 재학습으로 MLOps를 간소하게 할 수 있습니다. 


따라서 추론 파이프라인은 단일 엔드포인트에 배포된 연속 절차입니다. HTTPS의 요청 핸들러를 자체 프레임워크를 이용한 학습 컨테이너로 배포할 수 있습니다. 그다음에 텐서플로 서빙 컨테이너에서 텐서플로 모델을 사용할 수 있으며, 다시 자체 프레임워크를 이용한 학습 컨테이너가 응답 핸들러를 처리하는 메커니즘으로 동작하게 됩니다. 


또한, 텐서플로, PyTorch, Scikit-Learn, 아파치 스파크 등을 포함한 다양한 인공지능 및 머신러닝 프레임워크에 모델의 앙상블을 배치할 수 있습니다. 각 단계는 버텍스 AI에서 제어하는 컨테이너 간의 일련의 HTTPS 요청입니다. 한 단계의 응답은 다음 단계 등에 대한 예측 요청으로 사용합니다.


마지막 단계는 최종 응답을 다시 추론 파이프라인으로 반환하고, 이 파이프라인은 응답을 호출 애플리케이션으로 반환합니다. 추론 파이프라인은 버텍스 AI에서 완전히 관리하며 배치 변환뿐만 아니라 실시간 예측에 사용할 수 있습니다.

[그림 2 버텍스 AI에서 버텍스 파이프라인 모델 개발]


그리고 버텍스 파이프라인은 그림 2에서 보듯이 조건부 논리 및 분기를 파이프라인에 추가할 수 있습니다. 파이프라인에서 생성된 모든 아티팩트에 대한 메타데이터를 저장합니다. 머신러닝 워크플로우 전반에서 아티팩트, 계통(lineage), 지표 및 실행을 추적할 수 있으며, 클라우드 IAM, VPC-SC 및 CMEK을 지원합니다. 


한편, 버텍스 커스텀 학습의 경우, 분산 훈련 작업을 실행하고 GPU를 사용하여 학습을 가속하고 구글의 최첨단 전이 학습과 하이퍼파라미터 검색 기술을 기반으로 한 버텍스 학습 프로세스는 최대 예측 정확도를 위해 최적화된 하이퍼파라미터인 버텍스 비지어(Vizier)를 통해 실험 속도를 높일 수 있습니다. 


이러한 예측 모델이 성능 저하가 되는 데이터 드리프트 및 콘셉트 드리프트를 피하려면, ML 모델을 끊임없이 모니터링하고, 재학습 하고 업데이트해야 합니다. 지도 학습이 필요할 수 있는 모델 성능 문제에 대한 경고 또한 버텍스 모델 모니터링을 통해 자동으로 해줍니다. 또한 머신러닝 실험을 위한 시각화 및 추적 도구로 사용하는 버텍스 텐서보드는 이미지, 텍스트 및 오디오 데이터를 표시하는 모델 그래프를 더 추가할 수 있습니다. 


MLOps 관점에서의 머신러닝 클라우드 서비스


MLOps는 리서치 중심의 모델 개발에서 실제 서비스를 위한 프로덕션의 모델 배치로 초점을 전환합니다. 모델을 배포하는 방법에는 온라인 실시간 예측을 하는 방법과 오프라인으로 일괄적으로 배치 예측하는 방법이 있습니다.


두 예측 방법 중에 하나를 선택하려면, 머신러닝 애플리케이션과 비즈니스 콘텍스트를 고려하여 대기 시간 또는 처리량을 얼마나 또는 어떻게 최적화할 것인가를 결정해야 합니다. 또한, 이러한 애플리케이션이 주기적인 트래픽 요구 사항을 처리하기 위해 하루 종일 모델이 자동으로 확장해야 하는가? 그렇지 않으면 하루에 한 번만 배포 또는 연결만 이루어져도 되는가를 고려해야 합니다. 무엇보다도 A/B 테스트를 통해 프로덕션 모델을 비교하여 모니터링을 할 것인가도 결정해야 합니다.


애플리케이션에 낮은 대기 시간이 필요한 경우에 모델을 실시간 API로 배포하여 HTTPS를 통해 단일 예측 요청에 대한 초고속 예측을 제공해야 합니다. 실시간 예측을 위해 HTTPS 상의 REST API 프로토콜을 클라우드 엔드포인트와 JSON 형태로 연동하여 인공지능 모델들을 배포, 확장 및 비교합니다. 


데이터 과학자는 머신러닝의 종단 간 수동으로 연결해서 개발 및 실험 중인 모델이 프로덕션에 배포하는 일이 거의 없게 문제를 해결하고 있다. 이러한 과제를 해결하기 위해 사용자가 쉽게 접근할 수 있는 하나로 통합된 화면 인터페이스 및 개발자가 접근할 수 있는 API로 구글 클라우드 서비스와 결합하여 대규모로 머신러닝 모델을 생성, 학습, 배포하는 프로세스를 단순화합니다. 


이 단일 환경에서 사용자는 모델을 실험에서 프로덕션 단계로 실제 운영할 수 있도록 더 빠르게 이동하고, 다양한 머신러닝 패턴과 이상치를 보다 효율적으로 발견하고, 더 나은 예측과 의사 결정을 내리고, 역동적으로 변화하는 시장에 더 민첩하게 대응할 수 있습니다.


새로운 입력 데이터가 주어지면 훈련된 머신 러닝 모델을 기반으로 값을 생성하여 한꺼번에 대량의 채점하는 방식(Bulk Scoring)의 배치 예측과 한 건씩 HTTPS 스트림 방식을 통해 실시간 예측들을 보다 쉽게 프로덕션에 배포합니다. 결과적으로 이러한 배포된 모델은 버텍스 예측으로 채점을 통해 미래 값의 예측합니다. 



버텍스 AI를 활용한 새 모델 및 업데이트된 모델 배포 전략


컴퓨팅, 메모리, 스토리지를 제공하는 클라우드 인스턴스와 모델 컨테이너 애플리케이션을 결합한 것을 “프로덕션 변형(production variants)”이라고 합니다. 프로덕션 변형은 인스턴스 유형, 인스턴스 수 및 모델을 정의하는 데, 기본적으로 구글 클라우드 엔드포인트는 단일 프로덕션 변형으로 구성하지만 필요에 따라 여러 가지로 변형을 추가할 수 있습니다.


따라서 프로덕션 변형 방법을 통한 새로운 머신러닝 모델 및 업데이트된 모델 배포는 구글 클라우드 엔드포인트 상에서 검증하고 배포할 수 있습니다. 이러한 변형은 하드웨어(CPU/GPU), 데이터(구조적/반구조적/비구조적), 지역(미국 서부 또는 독일 북부)에 따라 다를 수 있습니다.


[그림 3 카나리아 롤아웃 배포를 사용하기 위해 5%의 트래픽을 새 모델로 분할함]


첫째, 그림 3에서와 같이 카나리아(Canary) 롤아웃 배포를 위한 새로운 프로덕션 변형을 만든 후, 새로운 엔드포인트를 통해 카나리아 롤아웃에 새롭게 적은 양의 트래픽(5%)을 지정하고 나머지 트래픽(95%)을 기존 변형에 지정합니다.


따라서 데이터가 지속적으로 변경되기 때문에 이 변화를 포착하기 위해 모델이 진화해야 한다. 모델을 업데이트할 때, 카나리아를 사용하여 인간이 탄광에서 숨을 쉴 수 있는지를 감지하는 오래된 병적인 프로세스의 이름을 따서 명명된 “카나리아 롤아웃(Canary Rollout)”을 사용하여 이것을 수행할 수 있다.


만약 카나리아가 탄광에서 살아남는다면, 상황은 좋으며 계속 진행할 수 있습니다. 만약 카나리아가 살아남지 못한다면, 적응을 못하고 나중에 다른 카나리아와 다시 시도해야 합니다. 마찬가지로 인공지능 배포 전략에서도 이 “카나리아” 배포 모델에 적은 비율의 새 트래픽을 할당하고 모델 서비스가 작동하는지 검증할 수 있습니다. 아마도 리서치에서 파악하지 못한 메모리 누수나 기타 생산 관련 문제가 있을 수 있습니다.


[그림 4 프로덕션 ML 시스템의 머신러닝 워크플로]


둘째, A/B 테스트를 사용해 프로덕션에서 모델 성능을 비교하기 위해서는 최적화하려는 비즈니스 지표를 정의하고 추적해야 합니다. 비즈니스 지표는 상품 주문, 영화 시청, 광고 클릭과 같은 매출 또는 사용자 참여와 관련이 있습니다. 구글 클라우드 데이터 스토어 또는 클라우드 스패너와 같은 모든 데이터베이스에 지표를 저장할 수 있습니다. 데이터 분석가들과 과학자들은 이 데이터를 사용하여 테스트로부터 최종 모델을 결정합니다. 


카나리아 롤아웃과 유사하게, 실시간 프로덕션에서 다른 모델을 비교하고 테스트하기 위해 트래픽 분할을 사용하여 사용자의 하위 집합을 다른 모델 변형으로 유도할 수 있습니다. 목표는 어떤 프로덕트 변형의 성능이 더 좋은지 확인하는 것입니다. 이러한 검증은 통계적으로 유의하려면 적어도 주 단위로 동안 실행해야 하는 경우가 많습니다.


A/B 테스트는 카나리아 롤아웃과 유사하나 두 모델 간에 랜덤으로 50/50 트래픽 분할을 사용하여 두 가지 다른 모델 비교를 위한 데이터를 수집하는데 초점을 맞추고 있습니다. 그러므로 A/B 테스트는 더 큰 사용자 그룹을 대상으로 하고 더 많은 트래픽을 사용하며 더 오랫동안 실행되는 반면에 카나리아 롤아웃은 위험 완화와 원활한 업그레이드에 더 초점을 맞추고 있습니다.


결론적으로 카나리아 롤아웃, A/B 테스트를 위해 엔드포인트의 모델 변형 간에 트래픽을 안전하게 전환할 수 있습니다. 또한 이러한 배포 전략을 사용하면 새로운 모델과 업데이트된 모델을 프로덕션에 푸시할 때 수반되는 위험을 최소화할 수 있습니다. A/B 테스트를 사용하여 새로운 모델을 테스트하고 비교하는 방법과 모델 예측 트래픽의 변화에 따라 모델 호스팅 인프라를 자동으로 확장할 수 있는 기능도 포함합니다. 


또한 새로운 입력 데이터가 주어지면 훈련된 머신 러닝 모델을 기반으로 값을 생성하여 한꺼번에 대량의 채점하는 방식(Bulk Scoring)의 배치 예측과 한 건씩 HTTPS 스트림 방식을 통해 실시간 예측들을 보다 쉽게 프로덕션에 배포합니다. 결과적으로 이러한 배포된 모델은 버텍스 예측으로 채점을 통해 미래 값의 예측합니다. 



마치며


소셜미디어와 모바일 앱과 같은 글로벌 데이터 소스에 의해 생성되는 데이터의 양이 증가하고 사물 인터넷과 같은 상황별 데이터가 기업에서 대중화됨에 따라 연구자들은 이러한 모든 데이터를 연결하고 귀중한 정보를 추출하고 판단해 미래를 예측할 수 있어야 합니다. 구글의 버텍스 AI는 서비스로서의 유연하고 확장 가능한 머신러닝을 만드는 아키텍처를 제안하며, 오픈소스 솔루션을 구현하고 기존의 구글 클라우드와 통합했습니다.



NIA 씨앗 이슈리포트 - 디지털 서비스 6월호: https://www.ceart.kr/web/board/BD_board.view.do?domainCd=2&bbsCd=1033&bbscttSeq=20210628093438299&registPassword=Y&othbcAt=Y


Google Cloud Tech Video, Build end-to-end solutions with Vertex AI, May 20, 2021 : https://www.youtube.com/watch?v=766OilR6xWc


Vertex AI Tutorials : https://cloud.google.com/vertex-ai/docs/tutorials
IEEE, “MLaaS: Machine Learning as a Service”, Mar 03, 2016  : https://ieeexplore.ieee.org/document/7424435
TheNextPlatform, “GOOGLE CLOUD MAINSTREAMS AI WITH VERTEX PLATFORM”, May 20, 2021 : https://www.nextplatform.com/2021/05/20/google-cloud-mainstreams-ai-with-vertex-platform/
Kubeflow, “Kubeflow 1.0 - Cloud Native ML for Everyone”, Mar 2, 2021: https://blog.kubeflow.org/releases/2020/03/02/kubeflow-1-0-cloud-native-ml-for-everyone.html
Google SRE Book, “Chapter 16-Canarying Releases”: https://sre.google/workbook/canarying-releases/
Martin Flower, “CanaryRelease”, Jun 25, 2014: https://martinfowler.com/bliki/CanaryRelease.html


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari