Amazon Web Services 한국 블로그

Amazon SageMaker Pipelines로 멀티 테넌트 MLaaS 빌드 환경 구현

이 글은 AWS 파트너 블로그의 Implementing a Multi-Tenant MLaaS Build Environment with Amazon SageMaker Pipelines를 기반으로 서호성, 윤종화 AWS 파트너 솔루션즈 아키텍트가 한국어로 번역 및 편집하였습니다.

점점 더 많은 기업이 자체 독점 데이터뿐만 아니라 외부 및 타사 데이터를 사용하여 기계 학습(ML) 모델을 구축하고 있습니다. 학습된 모델은 새로운 수익원으로 외부 고객에게 제공될 수 있습니다.

Amazon Web Services(AWS)에서 고객별 ML 모델을 호스팅하는 파트너는 고유한 격리 및 성능 요구 사항이 있으며 확장 가능한 고성능의 풍부한 기능을 갖춘 ML 플랫폼을 제공하는 솔루션이 필요합니다.

플랫폼을 사용하면 멀티 테넌트 서비스형 기계 학습(MLaaS) 애플리케이션을 쉽게 구축, 테스트 및 실행할 수 있어야 합니다. 그런 다음 ML 서비스를 AWS Marketplace에서 AWS 고객에게 SaaS(서비스형 소프트웨어)로 제공할 수 있습니다.

이 게시물에서는 Amazon SageMaker Pipelines가 SaaS 애플리케이션에서 데이터를 사전 처리하고 기계 학습(ML) 모델을 구축, 훈련(training), 조정 및 등록하는 데 어떻게 도움이 되는지 살펴보겠습니다. 특히 테넌트 격리 및 비용 귀속을 중심으로 테넌트별 ML 모델을 구축하는 모범 사례에 초점을 맞출 예정입니다.

멀티테넌트 환경에서의 ML 모델 표현

MLaaS 환경에서 SaaS 서비스는 개별 고객(테넌트)의 ML 모델을 호스팅, 관리 및 실행하는 데 사용됩니다. 이러한 환경의 테넌트는 데이터 정리 및 사전 처리, ML 모델 훈련(training), 실시간 예측을 위한 추론 엔드포인트, 빅 데이터 분석을 위한 일괄 처리 작업 서비스, 데이터 시각화 및 기타 ML 서비스를 비롯한 다양한 서비스를 제공할 수 있습니다.

일부 MLaaS 공급업체는 얼굴 인식, 감정 분석, 텍스트 음성 변환 또는 실시간 번역과 같은 다양한 일반 사용 사례에 맞게 사전 학습된 ML 모델을 제공합니다. 일반적으로 이러한 모델은 테넌트 격리 및 비용 귀속을 고려하지 않는 ‘테넌트와 관련 없는’ 환경에서 학습됩니다.

반면 판매 예측, 이탈 감지, 이상거래 점수 산정 등의 사용 사례는 테넌트별 데이터에 크게 의존합니다. 서로 다른 테넌트로부터 가져오는 훈련(training) 데이터는 구조가 다르고 통계적 특성이 크게 다를 수 있습니다.

이러한 경우 MLaaS 공급업체는 테넌트 데이터 및 모델을 별도로 훈련(training)하고 관리하는 메커니즘을 제공해야 합니다. 이 패턴에서는 테넌트가 자체 사용자 지정 데이터를 가져오지만 공급업체에서 제공하는 것과 동일한 알고리즘을 활용합니다.

테넌트별 ML 모델 구축

아래 다이어그램은 테넌트별 ML 모델을 구축하는 데 필요한 일반적인 단계를 포함하여 샘플 MLaaS 빌드 환경의 상위 수준 개념 흐름을 보여줍니다.

그림 1 – 테넌트별 훈련(training) 데이터를 기반으로 서로 다른 테넌트에 대해
동일한 ML 기반 모델의 다양한 인스턴스가 훈련(training)됩니다.

  1. MLaaS 제공업체는 Docker 레지스트리에 대상 ML 프레임워크에 대한 고객 훈련(training) 컨테이너를 생성하고 등록합니다. 이 단계는 사전 빌드된 훈련(training) Docker 이미지에 커스터마이즈(customization)가 요구되는 경우에만 필요합니다. 제공업체는 테넌트마다 다른 알고리즘이 필요할 수 있는 환경에서 여러 훈련(training) 컨테이너를 등록해야 할 수 있습니다.
  2. MLaaS 제공업체는 테넌트가 훈련(training) 데이터를 수집하고 온디맨드로 모델을 구축할 수 있도록 서비스 엔드포인트와 메서드를 제공합니다. 제공업체는 AWS Marketplace에서 입력 및 출력 파라미터, 모델 정확도, 서비스 티어 및 요금 정보를 비롯한 서비스 특성을 기술할 수 있습니다.
  3. 그러면 테넌트는 AWS Marketplace에서 서비스를 검색하고 찾아서 구독할 수 있습니다.
  4. 그런 다음 테넌트는 기계 학습(ML) 빌드 파이프라인에 훈련(training) 데이터를 제공하여 전용 ML 모델 구축을 시작할 수 있습니다. 서비스 제공업체가 여러 알고리즘을 사용하는 서비스를 제공하는 경우 테넌트는 어떤 알고리즘을 사용할지 지정해야 합니다.
  5. 이렇게 하면, 일반적으로 데이터 준비 및 정리, (1)의 Docker 이미지를 사용한 모델 훈련(training), 매개변수 튜닝이 포함된 테넌트의 ML 모델 빌드 파이프라인이 트리거됩니다. 훈련(training) 프로세스가 끝나면 테넌트 고유의 모델 아티팩트가 전용 스토리지 위치로 내보내집니다.

그런 다음 테넌트별 모델을 테스트 환경에 배포하고 테넌트가 선호하는 ML 모델 전달 흐름을 사용하여 상위 환경으로 전파할 수 있습니다.

파이프라인 아키텍처

MLaaS 환경에서 모델을 구축하고 학습하는 방법을 살펴보았으니 이제 기본 아키텍처를 좀 더 자세히 살펴보겠습니다.

아래 그림 2는 Amazon SageMaker Pipelines을 핵심 구성 요소로 사용하는 빌드 아키텍처를 보여줍니다. Amazon SageMaker Pipelines은 기계 학습(ML) 파이프라인을 구축하기 위해 특별히 구축된 CI/CD 서비스입니다. 이 서비스는 훈련(training) 데이터를 탐색 및 준비하고, 다양한 알고리즘과 파라미터를 실험하며, 모델을 훈련(training) 및 조정하고, 프로덕션에 모델을 배포하기 위해 높은 수준의 설정이 가능한 메커니즘을 제공합니다.

Amazon SageMaker Pipeline 정의는 테넌트 간에 공유되고 애플리케이션(서비스)이 처음 배포시에 프로비저닝됩니다. 테넌트별 Amazon Simple Storage Service(S3) 버킷 및 Amazon SageMaker Pipeline 실행을 트리거하는 Amazon EventBridge 규칙과 같은 기타 구성 요소는 테넌트 온보딩 중에 프로비저닝됩니다.

또한 테넌트별 AWS Identity and Access Management(IAM) 정책은 테넌트 온보딩 중에 생성되며 Amazon SageMaker Pipeline Execution Role을 통해서 다른 테넌트의 데이터에 접근하는 것을 방지하는 데 사용됩니다.

그림 2 – 테넌트별 모델을 위한 MLaaS 빌드 아키텍처

다음은 이 아키텍처에 표시된 단계를 세분화하여 보여줍니다.

  1. 테넌트 훈련(training) 데이터가 포함된 파일은 테넌트 전용 Amazon S3 버킷에 업로드됩니다. Amazon S3 버킷 한도를 초과하여 애플리케이션을 확장해야 하는 경우 테넌트별 접두사 접근 방식을 사용하는 것이 좋습니다.
  2. 테넌트별 S3 버킷에 대한 Amazon S3 PUT 이벤트를 수신하면 EventBridge는 동일한 테넌트에만 적용되는 규칙을 트리거합니다.
  3. 테넌트별 규칙은 다음과 같은 테넌트별 파이프라인 파라미터를 전달하여 Amazon SageMaker Pipeline의 실행 인스턴스를 시작합니다.
    • 훈련(training) 데이터 및 결과 모델 아티팩트를 위한 Amazon S3 URI
    • 테넌트 계층 및 교육 데이터 양에 따라 달라질 수 있는 학습 인스턴스 유형 및 크기
    • 테넌트 간 액세스로부터 테넌트의 데이터를 보호하는 IAM 역할.
    • Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결할 리소스 태그
    • Amazon SageMaker 모델 레지스트리의 대상 그룹 이름.
    • 컨테이너 레지스트리의 학습 이미지 URI
  4. 각 테넌트에 대해 Amazon SageMaker Pipeline의 실행 인스턴스가 생성되면, 이 인스턴스는 훈련(training) 데이터를 사전 처리 및 정리하고, Amazon Elastic Container Registry(Amazon ECR)에서 학습 이미지를 검색하고, 테넌트의 Amazon S3 입력 버킷에서 훈련(training) 데이터를 사용하여 모델을 훈련(training)하고, 대상 S3 버킷에 모델을 업로드하고, Amazon SageMaker 모델 레지스트리의 테넌트 모델 그룹에 모델을 게시합니다.

테넌트 격리

SaaS 격리 접근 방식과 관련하여 제안된 파이프라인 아키텍처를 살펴보겠습니다. SaaS 격리에는 사일로, 풀, 브리지로 알려진 각기 다른 유형이 있습니다.

사일로 접근 방식은 테넌트에게 전용 리소스가 제공되는 아키텍처를 말합니다. 파이프라인 정의가 여러 테넌트 간에 공유되더라도 빌드 시 Amazon SageMaker Pipelines 런타임은 작업 처리 및 훈련(training)을 위한 전용 컴퓨팅 리소스를 가동합니다.

다양한 테넌트에 사용되는 인스턴스 유형 및 크기를 제어할 수 있습니다. 완전 전용 컴퓨팅 리소스는 예측 가능한 빌드 기간으로 일관된 성능을 제공하고 Noisy Neighbor 문제를 제거합니다.

테넌트별 IAM 역할도 테넌트 온보딩 중에 생성되며 Amazon S3 버킷에 대한 액세스를 제한하는 작업 처리 및 훈련(training)에 사용됩니다. 이 역할은 테넌트가 다른 테넌트의 데이터에 액세스할 수 없도록 합니다.

확장을 위한 아키텍처 설계

일부 MLaaS 애플리케이션에는 상당한 수의 동시 ML 모델 재학습 작업이 필요하므로 MLaaS 환경에서 확장에 어려움이 따릅니다.

    • ML 훈련(training) 및 처리 작업에 사용할 수 있는 컴퓨팅 타입의 인스턴스의 수 및 유형에는 몇 가지 제한이 있을 수 있습니다.
    • MLaaS 애플리케이션은 다양한 구독 티어로 분류될 수 있습니다. 어드밴스드 티어는 일반적으로 베이직 티어에 비해 훈련(training) 시간이 더 빠릅니다. 이를 위해서는 각 티어별로 전용 처리 Queue를 정의해야 합니다.

그림 3 – 훈련(training) 아키텍처 확장

SaaS MLaaS 아키텍처에서 대규모 훈련(training)을 지원하기 위해 그림 2의 권장 아키텍처를 그림 3에 표시된 다음 구성 요소로 확장할 수 있습니다.

  1. 동시 빌드 실행 수를 제어하려면 훈련(training) 작업 설명을 수신하고 저장하는 Amazon Simple Queue Service(Amazon SQS) Queue를 활용할 수 있습니다. 각 구독 티어마다 별도의 Queue가 있을 수 있습니다.
  2. AWS Lambda 함수는 테넌트에 할당된 구독 티어에 지정된 동시 실행 수준을 초과하지 않는 경우에만 새 Amazon SageMaker Pipelines 실행 인스턴스를 시작합니다. Lambda 함수는 타이머 이벤트(EventBridge 규칙을 통해)를 기반으로 트리거될 수 있으며 해당 API를 사용하여 실행 중인 Amazon SageMaker Pipelines의 상태를 확인할 수 있습니다.
  3. Amazon SageMaker ML 빌드 파이프라인은 AWS Lambda Step로 확장되어 ML 빌드 파이프라인 실행과 관련된 정보를 Amazon DynamoDB 데이터베이스에 저장하여 테넌트 관리 및 보고 목적으로 다른 SaaS 서비스에서 사용할 수 있습니다.

계층형 가격 모델 및 테넌트당 비용 계산

SaaS 제공업체는 각 테넌트에서 발생하는 정확한 비용을 계산할 수 있는 기능을 통해 매력적인 사용량 기반 가격 책정 모델을 제공할 수 있습니다. MLaaS 환경에서 교육 프로세스는 상당한 양의 컴퓨팅 리소스를 소비할 수 있으며 테넌트 지출의 상당 부분을 차지할 수 있습니다.

훈련(training) 비용을 개별 테넌트에 귀속시키려면 테넌트별 값을 파이프라인 파라미터로 전달합니다. 그런 다음 파이프라인 단계에서 이 태그를 사전 처리, 훈련(training) 및 모델 조정 작업에 전달합니다. 이러한 작업을 통해 확장되는 모든 컴퓨팅 리소스에는 자동으로 태그가 지정됩니다. 비용 할당 태그를 활성화해야 비용 탐색기와 비용 할당 보고서에서 해당 태그를 확인할 수 있습니다.

결론

이 게시물에서는 Amazon SageMaker Pipelines을 사용하여 테넌트별 기계 학습(ML) 모델을 구축하는 프로세스를 다루었습니다. 일관된 빌드 기간 및 비용 속성을 통해 테넌트 데이터에 액세스할 수 있는 범위가 지정된 보안 컨텍스트에서 각 빌드가 실행되도록 하는 데 필요한 사용자 지정 단계를 검토했습니다.

ML 모델을 만든 후 다음 단계로 추론 목적으로 사용할 모델을 배포해야 합니다. 이 AWS 블로그 게시물에서 SaaS 애플리케이션의 다양한 추론 아키텍처에 대해 알아보세요.

자세히 알아보려면 다음과 같은 추가 리소스를 검토하는 것이 좋습니다.

AWS SaaS Factory에 대한 정보

AWS SaaS Factory는 SaaS 여정의 모든 단계에서 조직을 지원합니다. 새로운 제품을 구축하거나, 기존 애플리케이션을 마이그레이션하거나, AWS에서 SaaS 솔루션을 최적화하려는 경우 도움을 드릴 수 있습니다. AWS SaaS Factory 인사이트 허브를 방문하여 더 많은 기술 및 비즈니스 콘텐츠와 모범 사례를 살펴보세요.

SaaS 빌더는 계정 담당자에게 연락하여 참여 모델에 대해 문의하고 AWS SaaS Facotry 팀과 협력하는 것이 좋습니다.

지금 등록하여 AWS의 최신 SaaS 뉴스, 리소스 및 이벤트에 대한 최신 정보를 받아보세요.

– Mehran Najafi, PhD, Sr. Solutions Architect, AWS
– Michael Pelts, Sr. Solutions Architect, AWS