繁体   English   中英

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

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

我在 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'}]

当我想删除 Model Package 组时

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

我收到以下错误

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

您需要首先删除 Model Package 组中的所有 Model 包。 请参阅delete_model_package() boto3 API。

根据@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