Amazon SageMaker 모델 레지스트리 PlatoBlockchain Data Intelligence를 사용하여 교차 계정 MLOps 워크플로를 구축합니다. 수직 검색. 일체 포함.

Amazon SageMaker 모델 레지스트리를 사용하여 교차 계정 MLOps 워크플로 구축

잘 설계된 CI/CD 파이프라인은 모든 소프트웨어 개발 워크플로를 효과적으로 확장하는 데 필수적입니다. 프로덕션 CI/CD 파이프라인을 설계할 때 AWS는 여러 계정을 활용하여 리소스를 격리하고 보안 위협을 포함하며 청구를 단순화할 것을 권장합니다. 데이터 과학 파이프라인도 마찬가지입니다. AWS에서는 MLOps 워크플로를 단순화하기 위해 지속적으로 혁신하고 있습니다.

이 게시물에서는 몇 가지 새로운 교차 계정 기능에 대해 설명합니다. 아마존 세이지 메이커 모델 그룹을 더 잘 공유 및 관리하고 모델 버전을 관리할 수 있습니다. 따라야 할 예시 계정 구조 조직 단위 권장사항 여러 계정에서 SageMaker 엔드포인트를 사용하여 모델을 호스팅하려면 다음을 참조하십시오. MLOps 워크로드 조정자.

솔루션 개요

다음 다이어그램은 공유 모델 레지스트리 아키텍처를 보여줍니다.

이전 아키텍처에서 유의해야 할 몇 가지 사항은 다음과 같습니다.

다음 단계는 다이어그램에 해당합니다.

  1. 데이터 과학자는 데이터 과학 계정의 모델을 공유 서비스 SageMaker 모델 레지스트리에 등록합니다. PendingManualApproval 상태. 모델 아티팩트가 공유 서비스 계정에 생성됩니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷.
  2. 새 모델 버전 등록 시 메트릭스를 기반으로 모델 승인 권한이 있는 사람이 모델을 승인하거나 거부해야 합니다.
  3. 모델이 승인된 후 배포 계정의 CI/CD 파이프라인은 배포 트리거 QA 계정에서 업데이트된 모델 세부 정보를 확인하고 스테이지를 QA로 업데이트합니다.
  4. 테스트 프로세스를 통과하면 CI/CD 프로세스 내에서 수동 승인 단계를 선택하거나 CI/CD 파이프라인이 모델을 프로덕션에 직접 배포하고 단계를 Prod로 업데이트하도록 할 수 있습니다.
  5. 생산 환경은 승인된 모델과 코드를 참조하며, 아마도 프로덕션에서의 A/B 테스트. 감사 또는 모델 관련 문제가 있는 경우 다음을 사용할 수 있습니다. Amazon SageMaker ML 계보 추적. 데이터 준비에서 모델 배포까지 기계 학습(ML) 워크플로의 단계에 대한 정보를 생성하고 저장합니다. 추적 정보를 사용하여 워크플로 단계를 재현하고, 모델 및 데이터 세트 계보를 추적하고, 모델 거버넌스 및 감사 표준을 설정할 수 있습니다.

전체 프로세스에서 공유 모델 레지스트리는 이전 모델 버전을 유지합니다. 이를 통해 팀은 변경 사항을 롤백하거나 호스팅할 수 있습니다. 생산 변형.

사전 조건

다음 전제 조건이 있는지 확인하십시오.

  • 프로비저닝된 다중 계정 구조 – 지침은 다음을 참조하십시오. AWS Organizations의 조직 단위에 대한 모범 사례. 이 블로그의 목적을 위해 다음 계정을 활용하고 있습니다.
    • 데이터 과학 계정 – 데이터 과학자가 교육 데이터에 액세스하고 모델을 생성하는 계정.
    • 공유 서비스 계정 – 여러 워크로드 계정에서 액세스할 모델 아티팩트(아키텍처 다이어그램에 표시됨)를 저장하기 위한 중앙 계정.
    • 배포 계정 – 다양한 계정에 대한 변경 사항 배포를 담당하는 계정.
    • 워크로드 계정 – 일반적으로 소프트웨어 엔지니어가 ML 모델을 사용하는 애플리케이션을 구축할 수 있는 QA 및 프로덕션 환경입니다.
  • 적절한 권한이 있는 배포 계정 – 다중 계정 OU 구조의 모범 사례에 대한 자세한 내용은 다음을 참조하십시오. 배포 OU. 이 계정은 워크로드 계정을 공유 서비스 계정의 모델 레지스트리에서 원하는 모델로 지정하는 역할을 합니다.

교차 계정 정책 정의

최소 권한 원칙에 따라 먼저 공유 서비스 리소스에 교차 계정 리소스 정책을 추가하여 다른 계정의 액세스 권한을 부여해야 합니다.

모델 아티팩트가 공유 서비스 계정의 S3 버킷에 저장되기 때문에 훈련된 모델을 Amazon S3에 푸시하려면 데이터 과학 계정에 Amazon S3 읽기/쓰기 액세스 권한이 필요합니다. 다음 코드는 이 정책을 보여주지만 아직 공유 서비스 계정에 추가하지 않습니다.

#Data Science account's policy to access Shared Services' S3 bucket
 {
    'Version': '2012-10-17',
    'Statement': [{
        'Sid': 'AddPerm',
        'Effect': 'Allow',
        'Principal': {
            'AWS': 'arn:aws:iam:::root'
        }, 
        "Action": [ 
            's3:PutObject', 
            's3:PutObjectAcl',
            's3:GetObject', 
            's3:GetObjectVersion'
        ], #read/write
        'Resource': 'arn:aws:s3:::/*'
    }]
}

모델 아티팩트를 사용하여 SageMaker 엔드포인트에 배포할 수 있도록 배포 계정에는 S3 버킷에 대한 읽기 액세스 권한만 부여하면 됩니다. 또한 공유 서비스 S3 버킷에 다음 정책을 연결해야 합니다.

#Deployment account's policy to access Shared Services' S3 bucket
 {
    'Version': '2012-10-17',
    'Statement': [{
        'Sid': 'AddPerm',
        'Effect': 'Allow',
        'Principal': {
            'AWS': 'arn:aws:iam:::root'
        },
        'Action': [ 
            's3:GetObject', 
            's3:GetObjectVersion'
        ], #read
        'Resource': 'arn:aws:s3:::/*'
    }]
}

두 정책을 결합하여 다음과 같은 최종 정책을 얻습니다. 적절한 계정 ID를 교체한 후 공유 서비스 계정에서 이 정책을 만듭니다.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AddPerm",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam:::root"    
    },
    "Action": [
      "s3:PutObject",
      "s3:PutObjectAcl",
      "s3:GetObject",
      "s3:GetObjectVersion"    ],
    "Resource": "arn:aws:s3:::/*"  
    },
    {
      "Sid": "AddPermDeployment",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:::root"      
      },
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"      ], 
      "Resource": "arn:aws:s3:::/*"    
    }
  ]
}

다른 계정에서 생성된 모델을 배포할 수 있으려면 사용자에게 SageMaker 작업에 대한 액세스 권한이 있는 역할(예: AmazonSageMakerFullAccess 관리 정책. 인용하다 다른 계정에서 모델 버전 배포 자세한 내용은.

배포하려는 모델 버전이 포함된 모델 그룹을 정의해야 합니다. 또한 데이터 과학 계정에 권한을 부여하려고 합니다. 이는 다음 단계에서 수행할 수 있습니다. 다음과 같이 계정을 참조합니다.

  • shared_services_account_id – 모델 레지스트리가 있는 계정과 모델을 원하는 계정
  • data_science_account_id – 훈련할 계정으로 실제 모델 아티팩트를 생성합니다.
  • 배포_계정_ID – 이 모델의 엔드포인트를 호스팅하려는 계정

먼저 모델 패키지 그룹이 존재하는지 확인해야 합니다. 다음 예제와 같이 Boto3 API를 사용하거나 다음을 사용할 수 있습니다. AWS 관리 콘솔 모델 패키지를 생성합니다. 인용하다 모델 패키지 그룹 생성 자세한 사항은. Boto3가 설치되어 있다고 가정합니다.

model_package_group_name = "cross-account-example-model"
sm_client = boto3.Session().client("sagemaker")

create_model_package_group_response = sm_client.create_model_package_group(
    ModelPackageGroupName=model_package_group_name,
    ModelPackageGroupDescription="Cross account model package group",
    Tags=[
          {
              'Key': 'Name',
              'Value': 'cross_account_test'
          },
      ]

)

print('ModelPackageGroup Arn : {}'.format(create_model_package_group_response['ModelPackageGroupArn']))

이 모델 패키지 그룹에 대한 권한의 경우 다음 코드와 유사한 JSON 문서를 생성할 수 있습니다. 실제 계정 ID와 모델 패키지 그룹 이름을 고유한 값으로 바꿉니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AddPermModelPackageGroupCrossAccount",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:::root"      
      },
      "Action": [
        "sagemaker:DescribeModelPackageGroup"      
        ],
      "Resource": "arn:aws:sagemaker:::model-package-group/"    
    },
    {
      "Sid": "AddPermModelPackageVersionCrossAccount",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:::root"      
      },
      "Action": [
        "sagemaker:DescribeModelPackage",
        "sagemaker:ListModelPackages",
        "sagemaker:UpdateModelPackage",
        "sagemaker:CreateModelPackage",
        "sagemaker:CreateModel"      
      ],
      "Resource": "arn:aws:sagemaker:::model-package//*"    
    }
  ]
}

마지막으로 모델 패키지 그룹에 정책을 적용합니다. 콘솔을 통해 이 정책을 패키지 그룹과 연결할 수 없습니다. SDK가 필요하거나 AWS 명령 줄 인터페이스 (AWS CLI) 액세스. 예를 들어 다음 코드는 Boto3를 사용합니다.

# Convert the policy from JSON dict to string
model_package_group_policy = dict( )
model_package_group_policy = json.dumps(model_package_group_policy)

# Set the new policy
sm_client = boto3.Session().client("sagemaker")
response = sm_client.put_model_package_group_policy(
    ModelPackageGroupName = model_package_group_name,
    ResourcePolicy = model_package_group_policy)

커스텀도 필요합니다 AWS 키 관리 서비스 (AWS KMS) 키를 사용하여 모델을 Amazon S3에 저장하는 동안 암호화합니다. 이 작업은 데이터 과학 계정을 사용하여 수행해야 합니다. AWS KMS 콘솔에서 다음으로 이동합니다. 키 사용 권한 정의 페이지. 에서 다른 AWS 계정 섹션 선택 다른 AWS 계정 추가. 배포 계정의 AWS 계정 번호를 입력합니다. SageMaker 교육 작업에 이 KMS 키를 사용합니다. 교육 작업에 대한 KMS 키를 지정하지 않으면 SageMaker는 기본적으로 Amazon S3 서버 측 암호화 키를 사용합니다. 기본 Amazon S3 서버 측 암호화 키는 다른 AWS 계정과 공유하거나 사용할 수 없습니다.

정책 및 권한은 다음 패턴을 따릅니다.

  • 다음에 지정된 Amazon S3 정책 shared_services_account 데이터 과학 계정 및 배포 계정에 권한을 부여합니다.
  • 다음에 지정된 KMS 키 정책 shared_services_account 데이터 과학 계정 및 배포 계정에 권한을 부여합니다.

공유 서비스 계정 및 배포 계정이 모델 학습에 사용된 Docker 이미지에 액세스할 수 있는지 확인해야 합니다. 이러한 이미지는 일반적으로 AWS 계정에서 호스팅되며 아직 액세스 권한이 없는 경우 계정 관리자가 액세스 권한을 얻는 데 도움을 줄 수 있습니다. 이 게시물에서는 모델을 교육한 후 사용자 지정 Docker 이미지를 생성하지 않으므로 이미지에 대한 특정 Amazon ECR 정책이 필요하지 않습니다.

워크로드 계정(QA 또는 prod)에서 두 개를 생성해야 합니다. AWS 자격 증명 및 액세스 관리 (IAM) 정책은 다음과 유사합니다. 이것들은 인라인 정책, 이는 IAM 자격 증명에 내장되어 있음을 의미합니다. 이렇게 하면 이러한 계정에 모델 레지스트리에 대한 액세스 권한이 부여됩니다.

첫 번째 인라인 정책은 역할이 모델 아티팩트가 포함된 공유 서비스 계정의 Amazon S3 리소스에 액세스하도록 허용합니다. S3 버킷의 이름과 모델을 제공합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::/sagemaker//output/model.tar.gz"
        }
    ]
}

두 번째 인라인 정책은 나중에 생성하는 역할이 공유 서비스 계정에서 KMS 키를 사용하도록 허용합니다. 공유 서비스 계정의 계정 ID 및 KMS 키 ID를 지정합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUseOfTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1::key/{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
            ]
        }
    ]
}

마지막으로, 우리는 IAM 역할 생성 SageMaker용. 이 역할은 AmazonSageMakerFullAccess 첨부된 정책입니다. 그런 다음 이 두 인라인 정책을 생성한 역할에 연결합니다. 기존 SageMaker 실행 역할을 사용하는 경우 이 두 정책을 해당 역할에 연결합니다. 지침은 다음을 참조하십시오. 역할 생성 및 정책 연결(콘솔).

이제 각 계정의 정책을 정의했으므로 예를 사용하여 실제로 적용되는 것을 살펴보겠습니다.

SageMaker 파이프라인을 사용하여 모델 구축 및 교육

먼저 데이터 처리, 모델 교육 및 평가를 수행하기 위해 데이터 과학 계정에 SageMaker 파이프라인을 생성합니다. 우리는 StatLib 라이브러리에서 얻은 캘리포니아 주택 데이터 세트를 사용합니다. 다음 코드 스니펫에서는 사용자 지정 전처리 스크립트를 사용합니다. preprocess.py 다음을 사용하여 생성할 수 있는 기능 스케일링과 같은 몇 가지 간단한 기능 변환을 수행합니다. 수첩. 또한 이 스크립트는 데이터 세트를 교육 및 테스트 데이터 세트로 분할합니다.

우리는 SKLearnProcessor 이 사전 처리 스크립트를 실행하는 개체입니다. SageMaker 파이프라인에서 처리 단계(ProcessingStep)를 사용하여 처리 코드를 실행하려면 SKLearnProcessor. 이 처리 코드는 SageMaker 파이프라인이 초기화될 때 호출됩니다. 생성하는 코드 SKLearnProcessorProcessingStep 다음 코드에 표시됩니다. 이 섹션의 모든 코드는 데이터 과학 계정에서 실행됩니다.

# Useful SageMaker variables - Create a Pipeline session which will lazy init resources
session = PipelineSession()

framework_version = "0.23-1"

# Create SKlearn processor object,
# The object contains information about what instance type to use, the IAM role to use etc.
# A managed processor comes with a preconfigured container, so only specifying version is required.
sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    role=role,
    instance_type=processing_instance_type,
    instance_count=1,
    base_job_name="tf2-california-housing-processing-job",
    sagemaker_session=session
)

# Use the sklearn_processor in a SageMaker pipelines ProcessingStep
step_preprocess_data = ProcessingStep(
    name="Preprocess-California-Housing-Data",
    processor=sklearn_processor,
    inputs=[
        ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test"),
    ],
    code="preprocess.py",
)

모델을 Amazon S3에 저장하는 동안 암호화하려면 사용자 지정 KMS 키가 필요합니다. 다음 코드를 참조하십시오.

kms_client = boto3.client('kms')
response = kms_client.describe_key(
    KeyId='alias/sagemaker/outkey',
)
key_id = response['KeyMetadata']['KeyId']

모델을 훈련하기 위해 TensorFlow estimator 객체를 생성합니다. 교육 스크립트와 함께 KMS 키 ID를 전달합니다. train.py, 훈련 인스턴스 유형 및 개수. 우리는 또한 TrainingStep 파이프라인에 추가하고 TensorFlow estimator를 여기에 추가합니다. 다음 코드를 참조하십시오.

model_path = f"s3://{bucket}/{prefix}/model/"

hyperparameters = {"epochs": training_epochs}
tensorflow_version = "2.4.1"
python_version = "py37"

tf2_estimator = TensorFlow(
    source_dir="code",
    entry_point="train.py",
    instance_type=training_instance_type,
    instance_count=1,
    framework_version=tensorflow_version,
    role=role,
    base_job_name="tf2-california-housing-train",
    output_path=model_path,
    output_kms_key=key_id,
    hyperparameters=hyperparameters,
    py_version=python_version,
    sagemaker_session=session
)

# Use the tf2_estimator in a SageMaker pipelines ProcessingStep.
# NOTE how the input to the training job directly references the output of the previous step.
step_train_model = TrainingStep(
    name="Train-California-Housing-Model",
    estimator=tf2_estimator,
    inputs={
        "train": TrainingInput(
            s3_data=step_preprocess_data.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
        "test": TrainingInput(
            s3_data=step_preprocess_data.properties.ProcessingOutputConfig.Outputs[
                "test"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
    },
)

교육 외에도 모델 평가를 수행해야 하며 이 예제에서는 평균 제곱 오차(MSE)를 메트릭으로 사용합니다. 그만큼 이전 노트북 또한 생성 evaluate.py, MSE를 사용하여 모델을 평가하는 데 사용합니다. 우리는 또한 ProcessingStep 다음을 사용하여 모델 평가 스크립트를 초기화합니다. SKLearnProcessor 물체. 다음 코드는 이 단계를 생성합니다.

from sagemaker.workflow.properties import PropertyFile

# Create SKLearnProcessor object.
# The object contains information about what container to use, what instance type etc.
evaluate_model_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=1,
    base_job_name="tf2-california-housing-evaluate",
    role=role,
    sagemaker_session=session
)

# Create a PropertyFile
# A PropertyFile is used to be able to reference outputs from a processing step, for instance to use in a condition step.
# For more information, visit https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html
evaluation_report = PropertyFile(
    name="EvaluationReport", output_name="evaluation", path="evaluation.json"
)

# Use the evaluate_model_processor in a SageMaker pipelines ProcessingStep.
step_evaluate_model = ProcessingStep(
    name="Evaluate-California-Housing-Model",
    processor=evaluate_model_processor,
    inputs=[
        ProcessingInput(
            source=step_train_model.properties.ModelArtifacts.S3ModelArtifacts,
            destination="/opt/ml/processing/model",
        ),
        ProcessingInput(
            source=step_preprocess_data.properties.ProcessingOutputConfig.Outputs[
                "test"
            ].S3Output.S3Uri,
            destination="/opt/ml/processing/test",
        ),
    ],
    outputs=[
        ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
    ],
    code="evaluate.py",
    property_files=[evaluation_report],
)

모델 평가 후 모델 성능이 요구 사항을 충족하는 경우 모델 레지스트리에 모델을 등록하는 단계도 필요합니다. 이는 다음 코드에서 RegisterModel 단계. 여기에서 공유 서비스 계정에서 선언한 모델 패키지를 지정해야 합니다. 지역, 계정 및 모델 패키지를 해당 값으로 바꿉니다. 여기에 사용된 모델명은 modeltest, 그러나 원하는 이름을 사용할 수 있습니다.

# Create ModelMetrics object using the evaluation report from the evaluation step
# A ModelMetrics object contains metrics captured from a model.
model_metrics = ModelMetrics(
    model_statistics=MetricsSource(
        s3_uri=evaluation_s3_uri,
        content_type="application/json",
    )
)

# Create a RegisterModel step, which registers the model with SageMaker Model Registry.
model = Model(
    image_uri=tf2_estimator.training_image_uri(),
    model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
    source_dir=tf2_estimator.source_dir,
    entry_point=tf2_estimator.entry_point,
    role=role_arn,
    sagemaker_session=session
)

model_registry_args = model.register(
    content_types=['text/csv'],
    response_types=['application/json'],
    inference_instances=['ml.t2.medium', 'ml.m5.xlarge'],
    transform_instances=['ml.m5.xlarge'],
    model_package_group_name=model_package_group_name,
    approval_status='PendingManualApproval',
    model_metrics=model_metrics
)

 step_register_model= ModelStep(
    name='RegisterModel',
    step_args=model_registry_args
)

또한 다른 계정을 사용하여 배포할 수 있도록 모델 아티팩트를 생성해야 합니다. 모델 생성을 위해 CreateModelStep, 다음 코드와 같이

from sagemaker.inputs import CreateModelInput 
from sagemaker.workflow.model_step import ModelStep 
step_create_model = ModelStep( 
    name="Create-California-Housing-Model", 
    step_args=model.create(instance_type="ml.m5.large",accelerator_type="ml.eia1.medium"),
 )

파이프라인에 조건을 추가하는 작업은 ConditionStep. 이 경우 새 모델이 정확도 조건을 충족하는 경우에만 새 모델 버전을 모델 레지스트리에 등록하려고 합니다. 다음 코드를 참조하십시오.

from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import (
    ConditionStep,
    JsonGet,
)

# Create accuracy condition to ensure the model meets performance requirements.
# Models with a test accuracy lower than the condition will not be registered with the model registry.
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step=step_evaluate_model,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value",
    ),
    right=accuracy_mse_threshold,
)

# Create a SageMaker Pipelines ConditionStep, using the preceding condition.
# Enter the steps to perform if the condition returns True / False.
step_cond = ConditionStep(
    name="MSE-Lower-Than-Threshold-Condition",
    conditions=[cond_lte],
    if_steps=[step_register_model, step_create_model],
    else_steps=[step_higher_mse_send_email_lambda],
)

마지막으로 파이프라인을 초기화할 수 있도록 모든 파이프라인 단계를 조정하려고 합니다.

from sagemaker.workflow.pipeline import Pipeline

# Create a SageMaker Pipeline.
# Each parameter for the pipeline must be set as a parameter explicitly when the pipeline is created.
# Also pass in each of the preceding steps.
# Note that the order of execution is determined from each step's dependencies on other steps,
# not on the order they are passed in.
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_type,
        training_instance_type,
        input_data,
        training_epochs,
        accuracy_mse_threshold,
        endpoint_instance_type,
    ],
    steps=[step_preprocess_data, step_train_model, step_evaluate_model, step_cond],
)

다른 계정에서 모델 버전 배포

이제 모델이 공유 서비스 계정에 등록되었으므로 배포 계정에서 CI/CD 파이프라인을 사용하여 워크로드 계정에 배포해야 합니다. 이전 단계에서 이미 역할과 정책을 구성했습니다. 모델 패키지 ARN을 사용하여 모델 레지스트리에서 모델을 배포합니다. 다음 코드는 배포 계정에서 실행되며 승인된 모델을 QA 및 제품에 배포하는 데 사용됩니다.

from sagemaker import ModelPackage
from time import gmtime, strftime

sagemaker_session = sagemaker.Session(boto_session=sess)

model_package_arn = 'arn:aws:sagemaker:::/modeltest/version_number'
model = ModelPackage(role=role, 
                     model_package_arn=model_package_arn, 
                     sagemaker_session=sagemaker_session)
model.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge')

결론

이 게시물에서는 최소 권한 원칙에 따라 ML에 대한 다중 계정 설정에 필요한 정책을 설정하는 방법을 시연했습니다. 그런 다음 데이터 과학 계정에서 모델을 구축하고 교육하는 과정을 보여주었습니다. 마지막으로 배포 계정에서 CI/CD 파이프라인을 사용하여 승인된 모델의 최신 버전을 QA 및 프로덕션 계정에 배포했습니다. 또한 다음을 수행할 수 있습니다. 모델의 배포 기록 보기빌드 트리거 in AWS 코드빌드.

이 게시물의 개념을 확장하여 모델을 호스팅할 수 있습니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 또는 Amazon Elastic Kubernetes 서비스 (Amazon EKS) 뿐만 아니라 배치 추론 파이프라인을 구축합니다.

AWS에서 ML 모델을 구축하는 별도의 계정 보유에 대해 자세히 알아보려면 다음을 참조하십시오. AWS Organizations의 조직 단위에 대한 모범 사례생산 중인 모델을 안전하게 업데이트.


저자에 관하여

Amazon SageMaker 모델 레지스트리 PlatoBlockchain Data Intelligence를 사용하여 교차 계정 MLOps 워크플로를 구축합니다. 수직 검색. 일체 포함.산디프 베르마 AWS의 수석 프로토타이핑 설계자입니다. 그는 고객의 문제를 깊이 파고들고 고객이 혁신을 가속화할 수 있도록 프로토타입을 만드는 것을 즐깁니다. 그는 New Knowledge의 창립자이자 AI/ML에 대한 배경 지식을 가지고 있으며 일반적으로 기술에 열정적입니다. 여가 시간에는 가족과 함께 여행과 스키를 즐깁니다.

마니 카누 자  마니 카누 자 Amazon Web Services (AWS)의 인공 지능 및 기계 학습 전문가 SA입니다. 그녀는 기계 학습을 사용하는 고객이 AWS를 사용하여 비즈니스 과제를 해결하도록 돕습니다. 그녀는 대부분의 시간을 컴퓨터 비전, 자연어 처리, 예측, 엣지에서의 ML 등과 관련된 AI / ML 프로젝트에 대해 심층적으로 설명하고 고객을 가르치는 데 보냅니다. 그녀는 엣지에서 ML에 대한 열정이있어서 자율 주행 키트와 프로토 타입 제조 생산 라인을 갖춘 자신의 실험실을 만들어 여가 시간을 많이 보냅니다.

Amazon SageMaker 모델 레지스트리 PlatoBlockchain Data Intelligence를 사용하여 교차 계정 MLOps 워크플로를 구축합니다. 수직 검색. 일체 포함.사미트라 비크람 Amazon SageMaker 팀의 소프트웨어 개발자이며 인도 첸나이에 있습니다. 업무 외에는 달리기, 트레킹, 모터바이크를 타고 히말라야 산맥을 넘는 시간을 보내는 것을 좋아합니다.

Amazon SageMaker 모델 레지스트리 PlatoBlockchain Data Intelligence를 사용하여 교차 계정 MLOps 워크플로를 구축합니다. 수직 검색. 일체 포함.스리데비 스리니바산 AWS SageMaker의 엔지니어링 리더입니다. 그녀는 일상 생활을 변화시킬 플랫폼으로 ML을 활성화하는 데 열정적이고 흥분됩니다. 그녀는 현재 SageMaker Feature Store에 집중하고 있습니다. 여가 시간에는 가족과 함께 시간을 보내는 것을 좋아합니다.

Amazon SageMaker 모델 레지스트리 PlatoBlockchain Data Intelligence를 사용하여 교차 계정 MLOps 워크플로를 구축합니다. 수직 검색. 일체 포함. 루피더 그레왈 AWS의 Sr Ai/ML 전문가 솔루션 아키텍트입니다. 그는 현재 SageMaker에서 모델 및 MLOps 서비스에 중점을 두고 있습니다. 이 역할을 하기 전에는 머신 러닝 엔지니어로 모델을 구축하고 호스팅하는 일을 했습니다. 일 외에는 테니스를 치고 산길에서 자전거를 타는 것을 즐깁니다.

Amazon SageMaker 모델 레지스트리 PlatoBlockchain Data Intelligence를 사용하여 교차 계정 MLOps 워크플로를 구축합니다. 수직 검색. 일체 포함.파룩 사비르 AWS의 수석 인공 지능 및 기계 학습 전문가 솔루션 설계자입니다. 오스틴에 있는 텍사스 대학교에서 전기 공학 박사 및 석사 학위를, 조지아 공과 대학에서 컴퓨터 과학 석사 학위를 받았습니다. AWS에서 그는 고객이 데이터 과학, 기계 학습, 컴퓨터 비전, 인공 지능, 수치 최적화 및 관련 도메인에서 비즈니스 문제를 공식화하고 해결하도록 돕습니다. 그는 16년 이상의 업무 경험을 가지고 있으며 달라스에 있는 텍사스 대학교의 겸임 교수로서 응용 기계 학습에 대한 대학원 과정을 가르치고 있습니다. 텍사스 달라스에 거주하는 그와 그의 가족은 여행과 장거리 자동차 여행을 좋아합니다.

타임 스탬프 :

더보기 AWS 기계 학습