Reputation: 1978
Given Model Registry name, e.g. model-registry-name
, or Model Group Name, e.g. model-group-name
, how to get the model name of the latest approved model?
To CreateaTransformJob, one needs to provide a model name. This isn't Model Registry Name, nor Model Package Group name, nor Model Package name. What I used to do was to pull lots of script strings and parse s3 path, i.e.
import boto3
sm = boto3.client("sagemaker")
model_packages = sm.list_model_packages(
ModelPackageGroupName='model-group-name', SortBy"CreationTime", SortOrder="Descending")
model_package = [pk for pk in model_packages["ModelPackageSummaryList"]
if pk["ModelApprovalStatus"] == "Approved"][0]
model_package = sm.describe_model_package(ModelPackageName=model_package["ModelPackageArn"])
model_data = model_package["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]
model_name = model_data.rsplit("/", 3)[1]
which would typically end up something like pipelines-{uid1}-{trimmedStepNa}-{uid2}
.
I've seen that there's a similar StackOverflow question, i.e. Retrieve Sagemaker Model from Model Registry in Sagemaker Pipelines, but 1) we already have an existing model, and 2) this pipeline is purely for transforming data.
Upvotes: 0
Views: 1258
Reputation: 602
A better way to do this would be with SageMaker's search API.
Your code will be the same up to the point that you find the latest approved model package, then you'll search for models that were created from that model package ARN:
import boto3
sm = boto3.client("sagemaker")
model_packages = sm.list_model_packages(
ModelPackageGroupName='model-group-name', SortBy"CreationTime", SortOrder="Descending")
model_package = [pk for pk in model_packages["ModelPackageSummaryList"]
if pk["ModelApprovalStatus"] == "Approved"][0]
model_package_arn = model_package["ModelPackageArn"]
models = sm.search(
Resource='Model',
SearchExpression={
'Filters': [
{
'Name': 'Model.Containers.ModelPackageName',
'Operator': 'Equals',
'Value': model_package_arn
},
]
}
)["Results"]
model_name = models[0]["Model"]["Model"]["ModelName"]
Upvotes: 2