Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Registrazione di una versione del modello
Puoi registrare un modello Amazon SageMaker AI creando una versione del modello che specifica il gruppo di modelli a cui appartiene. Una versione del modello deve includere sia gli artefatti del modello (l’addestramento ponderato di un modello) sia il codice di inferenza del modello.
Una pipeline di inferenza è un modello di SageMaker intelligenza artificiale composto da una sequenza lineare da due a quindici contenitori che elaborano le richieste di inferenza. Una pipeline di inferenza può essere registrata specificando i container e le variabili di ambiente associate. Per ulteriori informazioni sulle pipeline di inferenza, consulta Pipeline di inferenza in Amazon AI SageMaker .
È possibile registrare un modello con una pipeline di inferenza, specificando i container e le variabili di ambiente associate. Per creare una versione del modello con una pipeline di inferenza utilizzando la AWS SDK for Python (Boto3) console Amazon SageMaker Studio o creando una fase in una pipeline di creazione di modelli di SageMaker intelligenza artificiale, utilizza i passaggi seguenti.
Argomenti
Registra una versione del modello (AI Pipelines) SageMaker
Per registrare una versione del modello utilizzando una pipeline di creazione di modelli SageMaker AI, crea una RegisterModel
fase nella pipeline. Per ulteriori informazioni sulla creazione di una fase RegisterModel
come parte di una pipeline, consulta Fase 8: Definire una RegisterModel fase per creare un pacchetto modello.
Registrazione di una versione del modello (boto3)
Per registrare una versione del modello utilizzando Boto3, chiamate l'operazione API. create_model_package
Innanzitutto, impostate il dizionario dei parametri da passare all'operazione create_model_package
API.
# Specify the model source model_url = "s3://
your-bucket-name/model.tar.gz
" modelpackage_inference_specification = { "InferenceSpecification": { "Containers": [ { "Image":image_uri
, "ModelDataUrl":model_url
} ], "SupportedContentTypes": [ "text/csv" ], "SupportedResponseMIMETypes": [ "text/csv" ], } } # Alternatively, you can specify the model source like this: # modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url create_model_package_input_dict = { "ModelPackageGroupName" : model_package_group_name, "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)", "ModelApprovalStatus" : "PendingManualApproval" } create_model_package_input_dict.update(modelpackage_inference_specification)
Quindi chiami l'operazione create_model_package
API, inserendo il dizionario dei parametri che hai appena impostato.
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict) model_package_arn = create_model_package_response["ModelPackageArn"] print('ModelPackage Version ARN : {}'.format(model_package_arn))
Registra una versione del modello (Studio o Studio Classic)
Per registrare una versione del modello nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.
Registrazione di una versione del modello da un account diverso
Per registrare le versioni del modello con un gruppo di modelli creato da un AWS account diverso, è necessario aggiungere una politica di AWS Identity and Access Management risorse tra account per abilitare tale account. Ad esempio, un AWS account dell'organizzazione è responsabile dei modelli di formazione e un altro account è responsabile della gestione, della distribuzione e dell'aggiornamento dei modelli. Crea le policy delle risorse IAM e applicale alla risorsa specifica dell'account a cui desideri concedere l'accesso in questo caso. Per ulteriori informazioni sulle politiche relative alle risorse tra account in AWS, consulta Logica di valutazione delle politiche tra account nella Guida per l'AWS Identity and Access Management utente.
Nota
È inoltre necessario utilizzare una chiave KMS per crittografare l'azione di configurazione dei dati di output durante l'addestramento per la distribuzione del modello tra account.
Per abilitare il registro dei modelli tra account in SageMaker AI, devi fornire una politica delle risorse tra account per il Model Group che contiene le versioni del modello. Di seguito è riportato un esempio che crea policy tra account per il gruppo di modelli e le applica alla specifica risorsa.
La seguente configurazione deve essere impostata nell'account di origine che registra i modelli tra account in un gruppo di modelli. In questo esempio, l'account di origine è l'account di addestramento del modello che addestrerà e, di conseguenza, registrerà l'account incrociato del modello nel registro dei modelli dell'apposito account.
L'esempio presuppone che in precedenza siano state definite le seguenti variabili:
-
sm_client
— Un client SageMaker AI Boto3. -
model_package_group_name
— Il gruppo di modelli a cui si desidera concedere l'accesso. -
model_package_group_arn
— L'ARN del gruppo di modelli a cui si desidera concedere l'accesso su più account. -
bucket
— Il bucket Amazon S3 in cui sono archiviati gli artefatti di addestramento del modello.
Per poter implementare un modello creato in un account diverso, l'utente deve avere un ruolo che abbia accesso alle azioni di SageMaker intelligenza artificiale, ad esempio un ruolo con la politica gestita. AmazonSageMakerFullAccess
Per informazioni sulle politiche gestite dall' SageMaker IA, consultaAWS politiche gestite per Amazon SageMaker AI.
Policy relative alle risorse IAM richieste
Il diagramma seguente illustra le policy necessarie per consentire la registrazione del modello tra più account. Come illustrato, queste policy devono essere attive durante l’addestramento del modello per registrare correttamente il modello nell'account di registrazione dei modelli.

Amazon ECR, Amazon S3 AWS KMS e le policy sono dimostrate nei seguenti esempi di codice.
Esempio di policy Amazon ECR
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{
model_registry_account
}:root" }, "Action": [ "ecr:BatchGetImage", "ecr:Describe*" ] } ] }
Esempio di policy Amazon S3
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{
model_registry_account
}:root" }, "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetObjectAcl" ], "Resource": "arn:aws:s3:::{bucket
}/*" } ] }
Politica di esempio AWS KMS
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{
model_registry_account
}:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" } ] }
Applicazione di policy relative alle risorse agli account
La seguente configurazione delle policy, che applica le policy discusse nella sezione precedente, deve essere inserita nell'account di addestramento del modello.
import json # The Model Registry account id of the Model Group model_registry_account = "
111111111111
" # The model training account id where training happens model_training_account = "222222222222
" # 1. Create a policy for access to the ECR repository # in the model training account for the Model Registry account Model Group ecr_repository_policy = {"Version": "2012-10-17", "Statement": [{"Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": f"arn:aws:iam::{model_registry_account}:root" }, "Action": [ "ecr:BatchGetImage", "ecr:Describe*" ] }] } # Convert the ECR policy from JSON dict to string ecr_repository_policy = json.dumps(ecr_repository_policy) # Set the new ECR policy ecr = boto3.client('ecr') response = ecr.set_repository_policy( registryId = model_training_account, repositoryName = "decision-trees-sample", policyText = ecr_repository_policy ) # 2. Create a policy in the model training account for access to the S3 bucket # where the model is present in the Model Registry account Model Group bucket_policy = {"Version": "2012-10-17", "Statement": [{"Sid": "AddPerm", "Effect": "Allow", "Principal": {"AWS": f"arn:aws:iam::{model_registry_account}:root" }, "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetObjectAcl" ], "Resource": [ "arn:aws:s3:::{bucket
}/*", "Resource: arn:aws:s3:::{bucket
}" ] }] } # Convert the S3 policy from JSON dict to string bucket_policy = json.dumps(bucket_policy) # Set the new bucket policy s3 = boto3.client("s3") response = s3.put_bucket_policy( Bucket =bucket
, Policy = bucket_policy) # 3. Create the KMS grant for the key used during training for encryption # in the model training account to the Model Registry account Model Group client = boto3.client("kms") response = client.create_grant( GranteePrincipal=model_registry_account, KeyId=kms_key_id Operations=[ "Decrypt", "GenerateDataKey", ], )
La seguente configurazione deve essere inserita nell'account di registrazione del modello in cui esiste il gruppo di modelli.
# The Model Registry account id of the Model Group model_registry_account = "
111111111111
" # 1. Create policy to allow the model training account to access the ModelPackageGroup model_package_group_policy = {"Version": "2012-10-17", "Statement": [ { "Sid": "AddPermModelPackageVersion", "Effect": "Allow", "Principal": {"AWS": f"arn:aws:iam::{model_training_account
}:root"}, "Action": ["sagemaker:CreateModelPackage"], "Resource": f"arn:aws:sagemaker:{region}:{model_registry_account}:model-package/{model_package_group_name
}/*" } ] } # Convert the policy from JSON dict to string model_package_group_policy = json.dumps(model_package_group_policy) # Set the new policy response = sm_client.put_model_package_group_policy( ModelPackageGroupName =model_package_group_name
, ResourcePolicy = model_package_group_policy)
Infine, utilizza l'azione create_model_package
dell’account di addestramento del modello per registrare il pacchetto di modelli tra account.
# Specify the model source model_url = "s3://{
bucket
}/model.tar.gz" #Set up the parameter dictionary to pass to the create_model_package API operation modelpackage_inference_specification = { "InferenceSpecification": { "Containers": [ { "Image": f"{model_training_account
}.dkr.ecr.us-east-2.amazonaws.com/decision-trees-sample:latest", "ModelDataUrl": model_url } ], "SupportedContentTypes": [ "text/csv" ], "SupportedResponseMIMETypes": [ "text/csv" ], } } # Alternatively, you can specify the model source like this: # modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url create_model_package_input_dict = { "ModelPackageGroupName" :model_package_group_arn
, "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)", "ModelApprovalStatus" : "PendingManualApproval" } create_model_package_input_dict.update(modelpackage_inference_specification) # Create the model package in the Model Registry account create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict) model_package_arn = create_model_package_response["ModelPackageArn"] print('ModelPackage Version ARN : {}'.format(model_package_arn))