Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 Terraform으로 기계 학습 파이프라인을 배포하고 관리합니다. 수직 검색. 일체 포함.

Amazon SageMaker를 사용하여 Terraform으로 기계 학습 파이프라인 배포 및 관리

AWS 고객은 IaC(Infrastructure as Code)를 사용하여 클라우드 인프라를 설계, 개발 및 관리하고 있습니다. IaC는 개발 운영(DevOps) 영역에서 모범 사례를 따를 수 있는 동시에 고객 인프라와 서비스가 일관되고 확장 가능하며 재현 가능함을 보장합니다.

IaC를 사용하여 AWS 인프라 및 서비스를 관리하는 한 가지 가능한 접근 방식은 다음과 같습니다. 테라 폼, 이를 통해 개발자는 재사용 가능한 코드 모듈로 인프라를 구성할 수 있습니다. 이 측면은 머신 러닝(ML) 영역에서 점점 더 중요해지고 있습니다. Terraform을 IaC로 사용한 교육 및 추론을 포함하여 ML 파이프라인을 개발하고 관리하면 인프라를 처음부터 개발할 필요 없이 여러 ML 사용 사례 또는 지역에 맞게 쉽게 확장할 수 있습니다. 또한 ML 파이프라인의 다양한 구현에서 교육 및 추론을 위한 인프라(예: 인스턴스 유형 및 크기)에 대한 일관성을 제공합니다. 이를 통해 요청 및 수신 트래픽을 다른 아마존 세이지 메이커 끝점.

이 게시물에서는 Terraform 및 Amazon SageMaker를 사용하여 ML 파이프라인을 배포하고 관리하는 방법을 보여줍니다.

솔루션 개요

이 게시물은 코드를 제공하고 Amazon SageMaker를 사용한 모델 교육 및 추론을 위해 Terraform과 함께 ML 파이프라인용 AWS 인프라를 배포하는 데 필요한 단계를 안내합니다. ML 파이프라인은 다음을 통해 관리됩니다. AWS 단계 함수 다음 그림과 같이 ML 파이프라인에서 구현된 다양한 단계를 조정합니다.

단계 기능 단계

Step Functions 시작 AWS 람다 SageMaker 교육 작업을 시작할 때 사용되는 고유한 작업 ID를 생성하는 함수입니다. 또한 Step Functions는 추론에 사용되는 모델, 엔드포인트 구성 및 엔드포인트를 생성합니다. 추가 리소스에는 다음이 포함됩니다.

Docker 이미지를 사용한 학습 및 추론을 위한 ML 관련 코드는 주로 다음의 기존 작업에 의존합니다. GitHub 저장소.

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

아키텍처 다이어그램

다음과 같은 상위 단계를 안내합니다.

  1. Terraform으로 AWS 인프라를 배포하십시오.
  2. Docker 이미지를 Amazon ECR에 푸시합니다.
  3. ML 파이프라인을 실행합니다.
  4. 엔드포인트를 호출합니다.

저장소 구조

이 게시물에 사용된 코드와 데이터가 포함된 저장소는 다음에서 찾을 수 있습니다. GitHub 저장소.

리포지토리에는 다음 디렉터리가 포함됩니다.

  • /terraform – 다음 하위 폴더로 구성됩니다.
    • ./infrastructure – 인프라 배포에 사용하는 변수 선언 외에도 ML 파이프라인 모듈을 호출하는 main.tf 파일을 포함합니다.
    • ./ml-pipeline-module – 재사용할 수 있는 Terraform ML 파이프라인 모듈이 포함되어 있습니다.
  • /src – 다음 하위 폴더로 구성됩니다.
    • ./container – Docker 이미지에 대한 정의가 포함된 교육 및 추론을 위한 예제 코드가 포함되어 있습니다.
    • ./lambda_function – SageMaker 교육 작업의 고유 작업 ID와 같은 구성을 생성하는 Lambda 함수에 대한 Python 코드가 포함되어 있습니다.
  • /data – 다음 파일이 포함되어 있습니다.
    • ./iris.csv – ML 모델 학습을 위한 데이터 포함

사전 조건

이 연습에서는 다음과 같은 전제 조건이 있어야합니다.

Terraform으로 AWS 인프라 배포

ML 파이프라인을 배포하려면 필요에 따라 몇 가지 변수와 이름을 조정해야 합니다. 이 단계의 코드는 /terraform 디렉토리.

처음 초기화할 때 파일을 엽니다. terraform/infrastructure/terraform.tfvars 변수를 조정하고 프로젝트 _ 이름 변수 외에 프로젝트 이름에 지방 다른 지역에 배포하려는 경우. 훈련 및 추론을 위한 인스턴스 유형과 같은 추가 변수를 변경할 수도 있습니다.

그런 다음 다음 명령을 사용하여 Terraform으로 인프라를 배포합니다.

export AWS_PROFILE=<your_aws_cli_profile_name>
cd terraform/infrastructure
terraform init
terraform plan
terraform apply

출력을 확인하고 계획된 리소스가 올바르게 나타나는지 확인하고 모든 것이 올바른 경우 적용 단계에서 yes로 확인합니다. 그런 다음 Amazon ECR 콘솔로 이동(또는 터미널에서 Terraform의 출력 확인)하고 Terraform을 통해 생성한 ECR 리포지토리의 URL을 가져옵니다.

출력은 ECR 리포지토리 URL을 포함하여 표시된 다음 출력과 유사해야 합니다.

Apply complete! Resources: 19 added, 0 changed, 0 destroyed. Outputs: ecr_repository_url = <account_number>.dkr.ecr.eu-west-1.amazonaws.com/ml-pipeline-terraform-demo

Amazon ECR에 Docker 이미지 푸시

ML 파이프라인 및 SageMaker가 추론을 위해 SageMaker 엔드포인트를 교육 및 프로비저닝하려면 Docker 이미지를 제공하고 Amazon ECR에 저장해야 합니다. 디렉토리에서 예제를 찾을 수 있습니다 src/container. 이전 단계에서 AWS 인프라를 이미 적용했다면 설명된 대로 Docker 이미지를 푸시할 수 있습니다. Docker 이미지가 개발된 후 다음 작업을 수행하여 Amazon ECR에 푸시할 수 있습니다(필요에 따라 Amazon ECR URL 조정).

cd src/container
export AWS_PROFILE=<your_aws_cli_profile_name>
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account_number>.dkr.ecr.eu-west-1.amazonaws.com
docker build -t ml-training .
docker tag ml-training:latest <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>:latest
docker push <account_number>.dkr.ecr.eu-west-1.amazonaws.com/<ecr_repository_name>

Terraform과 함께 AWS 인프라를 이미 적용한 경우 Terraform을 통해 다시 배포하지 않고 코드 및 Docker 이미지의 변경 사항을 Amazon ECR에 직접 푸시할 수 있습니다.

ML 파이프라인 실행

ML 파이프라인을 훈련하고 실행하려면 Step Functions 콘솔로 이동하여 구현을 시작하십시오. 상태 머신의 시각화에서 각 단계의 진행 상황을 확인할 수 있습니다. SageMaker 교육 작업 진행률과 SageMaker 끝점의 상태를 확인할 수도 있습니다.

단계 기능 시작

Step Functions에서 상태 머신을 성공적으로 실행하면 SageMaker 엔드포인트가 생성되었음을 확인할 수 있습니다. SageMaker 콘솔에서 다음을 선택합니다. 추론 탐색 창에서 종점. 상태가 InService로 변경될 때까지 기다려야 합니다.

SageMaker 끝점 상태

엔드포인트 호출

엔드포인트를 호출하려면(이 예에서는 iris 데이터세트에 대해) 다음 Python 스크립트를 다음과 함께 사용할 수 있습니다. Python 용 AWS SDK (Boto3). SageMaker 노트북에서 이 작업을 수행하거나 Lambda 함수에 다음 코드 조각을 포함할 수 있습니다.

import boto3
from io import StringIO
import pandas as pd client = boto3.client('sagemaker-runtime') endpoint_name = 'Your endpoint name' # Your endpoint name.
content_type = "text/csv"   # The MIME type of the input data in the request body. payload = pd.DataFrame([[1.5,0.2,4.4,2.6]])
csv_file = StringIO()
payload.to_csv(csv_file, sep=",", header=False, index=False)
payload_as_csv = csv_file.getvalue() response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType=content_type,
Body=payload_as_csv
) label = response['Body'].read().decode('utf-8')
print(label)

정리

terraform destroy 명령을 사용하여 Terraform에서 생성한 인프라를 파괴할 수 있지만 먼저 S3 버킷의 데이터와 파일을 삭제해야 합니다. 또한 SageMaker 엔드포인트(또는 여러 번 실행되는 경우 여러 SageMaker 엔드포인트)는 Step Functions를 통해 생성되며 Terraform을 통해 관리되지 않습니다. 즉, Step Functions로 ML 파이프라인을 실행할 때 배포가 발생합니다. 따라서 불필요한 비용을 피하기 위해 Step Functions ML 파이프라인을 통해 생성된 SageMaker 엔드포인트도 삭제해야 합니다. 다음 단계를 완료하십시오.

  1. Amazon S3 콘솔에서 S3 교육 버킷의 데이터 세트를 삭제합니다.
  2. Amazon S3 콘솔 또는 AWS CLI를 통해 S3 모델 버킷의 ML 파이프라인을 통해 교육한 모든 모델을 삭제합니다.
  3. Terraform을 통해 생성된 인프라를 파괴합니다.
    cd terraform/infrastructure
    terraform destroy

  4. SageMaker 콘솔 또는 AWS CLI를 통해 Step Functions를 통해 생성된 SageMaker 엔드포인트, 엔드포인트 구성 및 모델을 삭제합니다.

결론

축하합니다! Terraform과 함께 SageMaker를 사용하여 ML 파이프라인을 배포했습니다. 이 예제 솔루션은 재사용 가능한 방식으로 ML 파이프라인용 AWS 인프라 및 서비스를 쉽게 배포할 수 있는 방법을 보여줍니다. 이를 통해 여러 사용 사례 또는 리전에 맞게 확장할 수 있으며 일관된 방식으로 클릭 한 번으로 ML 모델을 교육 및 배포할 수 있습니다. 또한 새 데이터를 사용할 수 있거나 알고리즘 코드를 변경하려는 경우와 같이 ML 파이프라인을 여러 번 실행할 수 있습니다. 요청이나 트래픽을 다른 SageMaker 끝점으로 라우팅하도록 선택할 수도 있습니다.

귀하의 요구 사항과 잠재적인 회사 표준에 따라 보안 기능을 추가하고 보안 모범 사례를 채택하는 방법을 살펴보시기 바랍니다. 또한 이 솔루션을 CI/CD 파이프라인에 포함하면 요구 사항에 따라 DevOps 모범 사례 및 표준을 채택하고 설정하는 데 추가 기능이 제공됩니다.


저자에 관하여

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 Terraform으로 기계 학습 파이프라인을 배포하고 관리합니다. 수직 검색. 일체 포함.올리버 졸리코퍼 Amazon Web Services의 데이터 과학자입니다. 그는 글로벌 엔터프라이즈 고객이 기계 학습 모델을 구축, 교육 및 배포하고 MLOps를 사용하여 ML 모델 수명 주기를 관리할 수 있도록 지원합니다. 또한 그는 관련 클라우드 솔루션을 구축하고 설계합니다.

타임 스탬프 :

더보기 AWS 기계 학습