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 gli artefatti del modello (i pesi addestrati di un modello) e, facoltativamente, il codice di inferenza per il 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 per 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 con Boto3, chiama l’operazione API create_model_package.
Innanzitutto, configura il dizionario dei parametri da passare all’operazione API create_model_package.
# 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, chiama l’operazione API create_model_package passando il dizionario dei parametri 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))
Registrazione di 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, devi aggiungere una politica sulle AWS Identity and Access Management risorse tra account per abilitare quell'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 inAWS, consulta Logica di valutazione delle politiche tra account nella Guida per l'AWS Identity and Access Managementutente.
Per abilitare la rilevabilità multi-account, che consente ad altri account di visualizzare i gruppi di pacchetti di modelli dall’account proprietario di risorse, consulta Rilevabilità multi-account.
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 al quale si desidera concedere l’accesso. -
model_package_group_arn: l’ARN del gruppo di modelli a cui concedere l’accesso multi-account. -
bucket: il bucket Amazon S3 in cui vengono archiviati gli artefatti per l’addestramento dei modelli.
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 AmazonSageMakerFullAccess politica gestita. Per informazioni sulle politiche gestite dall' SageMaker IA, consultaAWSpolitiche 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
Esempio di policy Amazon S3
Esempio di politica AWS KMS
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))