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 SageMaker modello Amazon 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 SageMaker modello 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 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 SageMaker modelli, utilizza i passaggi seguenti.
Argomenti
Registra una versione del modello (Pipelines) SageMaker
Per registrare una versione del modello utilizzando una pipeline di creazione SageMaker del modello, create una RegisterModel
fase nella pipeline. Per ulteriori informazioni sulla creazione di una fase RegisterModel
come parte di una pipeline, consulta Fase 8: Definire un RegisterModel passaggio per creare un pacchetto modello.
Registrazione di una versione del modello (boto3)
Per registrare una versione del modello utilizzando Boto3, chiamate l'operazione. create_model_package
API
Innanzitutto, impostate il dizionario dei parametri da passare all'create_model_package
APIoperazione.
# 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 chiamate l'create_model_package
APIoperazione, inserendo il dizionario dei parametri che avete 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 AWS Identity and Access Management delle 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. Le politiche relative alle IAM risorse vengono create e applicate alla risorsa account specifica a cui si desidera 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 KMS chiave per crittografare l'azione di configurazione dei dati di output durante l'addestramento per la distribuzione del modello su più account.
Per abilitare il registro dei modelli tra account SageMaker, è necessario fornire una politica di risorse per più 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 Boto3. -
model_package_group_name
— Il gruppo di modelli a cui si desidera concedere l'accesso. -
model_package_group_arn
— Il gruppo di modelli ARN a cui si desidera concedere l'accesso a 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 SageMaker azioni, ad esempio un ruolo con la politica gestita. AmazonSageMakerFullAccess
Per informazioni sulle politiche SageMaker gestite, vedereAWS Policy gestite per Amazon SageMaker.
Politiche relative IAM alle risorse 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.
AmazonECR, Amazon S3 e le AWS KMS politiche sono dimostrate nei seguenti esempi di codice.
Esempio di ECR politica Amazon
{ "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
}/*" } ] }
Esempio di AWS KMS politica
{ "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))