简体   繁体   English

SageMaker Model Package 组无法删除,因为它仍然包含 Model 包

[英]SageMaker Model Package Group cannot be deleted because it still contains Model Packages

I have created a Model Package Group in SageMaker to store different versions in the Model Registry.我在 SageMaker 中创建了一个 Model Package 组,以在 Model 注册表中存储不同的版本。

import boto3

model_package = 'risk-model'
sagemaker_boto_client = boto3.client('sagemaker')

sagemaker_boto_client.list_model_packages(ModelPackageGroupName=model_package)["ModelPackageSummaryList"]
>>> [
 {'ModelPackageGroupName': 'risk-model',
  'ModelPackageVersion': 3,
  'ModelPackageArn': 'some_arn_3',
  'ModelPackageDescription': 'New Model Version 3',
  'CreationTime': datetime.datetime(2022, 4, 5, 15, 9, 3, 800000, tzinfo=tzlocal()),
  'ModelPackageStatus': 'Completed',
  'ModelApprovalStatus': 'PendingManualApproval'},
 {'ModelPackageGroupName': 'risk-model',
  'ModelPackageVersion': 2,
  'ModelPackageArn': 'some_arn_2',
  'ModelPackageDescription': 'New Model Version 2',
  'CreationTime': datetime.datetime(2022, 4, 5, 14, 48, 5, 150000, tzinfo=tzlocal()),
  'ModelPackageStatus': 'Completed',
  'ModelApprovalStatus': 'PendingManualApproval'},
 {'ModelPackageGroupName': 'risk-model',
  'ModelPackageVersion': 1,
  'ModelPackageArn': 'some_arn_1',
  'ModelPackageDescription': 'New Model Version 1',
  'CreationTime': datetime.datetime(2022, 4, 4, 23, 10, 38, 516000, tzinfo=tzlocal()),
  'ModelPackageStatus': 'Completed',
  'ModelApprovalStatus': 'Approved'}]

When I want to delete the Model Package Group当我想删除 Model Package 组时

sagemaker_boto_client.delete_model_package_group(
    ModelPackageGroupName='risk-model'
)

I got the following error我收到以下错误

An error occurred (ValidationException) when calling the DeleteModelPackageGroup operation: Model Package Group cannot be deleted because it still contains Model Packages.

You would need to first delete all the Model Packages in the Model Package Group.您需要首先删除 Model Package 组中的所有 Model 包。 Please see the delete_model_package() boto3 API.请参阅delete_model_package() boto3 API。

Based on @Marc K suggestion the following code snippet works to empty and delete a ModelPackageGroup using boto3根据@Marc K 的建议,以下代码片段可以使用 boto3 清空和删除ModelPackageGroup

import boto3
import time

sagemaker_client = boto3.client('sagemaker')
model_package = 'risk-fraud-model'

empty_and_delete_model_package(sagemaker_client, model_package)

def empty_and_delete_model_package(sagemaker_client, mpg_name):
    mpg = sagemaker_client.list_model_packages(
        ModelPackageGroupName=mpg_name,
    )
    
    # Delete model packages if Group not empty
    model_packages = mpg.get('ModelPackageSummaryList')
    if model_packages:
        for mp in model_packages:
            sagemaker_client.delete_model_package(
                ModelPackageName=mp['ModelPackageArn']
            )
            time.sleep(1)

    # Delete model package group
    sagemaker_client.delete_model_package_group(
        ModelPackageGroupName=mpg_name
    )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM