Registrazione di una versione del modello - Amazon SageMaker

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 Modelli host insieme alla logica di pre-elaborazione come pipeline di inferenza seriale dietro un endpoint.

È 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.

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: Definizione di una RegisterModel fase per la creazione di un Model Package.

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 (console)

Per registrare una versione del modello nella console Amazon SageMaker Studio, completa i seguenti passaggi a seconda che utilizzi Studio o Studio Classic.

Studio
  1. Apri la console SageMaker Studio seguendo le istruzioni in Launch Amazon SageMaker Studio.

  2. Nel riquadro di navigazione a sinistra, scegli Modelli dal menu.

  3. Scegli la scheda Modelli registrati, se non è già selezionata.

  4. Immediatamente sotto l'etichetta della scheda Modelli registrati, scegli Gruppi di modelli, se non è già selezionato.

  5. Scegli Registra, quindi scegli la versione del modello.

  6. Nel modulo Registra versione del modello, inserisci le seguenti informazioni:

    • Nel menu a discesa Nome del gruppo di modelli, seleziona il nome del gruppo di modelli a cui appartiene la tua versione.

    • (Facoltativo) Inserisci una descrizione per la versione del modello.

    • Nel menu a discesa Stato di approvazione del modello, seleziona lo stato di approvazione della versione.

    • (Facoltativo) Nel campo Metadati personalizzati, scegliete + Aggiungi nuovi tag e aggiungi tag personalizzati come coppie chiave-valore.

  7. Seleziona Avanti.

  8. Nel modulo Specifica di inferenza, inserisci le seguenti informazioni:

    • In Posizione dell'immagine di inferenza (ECR), inserisci la posizione dell'immagine di inferenza ECR.

    • In Model artifact location (S3), inserisci la posizione del bucket Amazon S3 degli artifact di dati del modello.

    • Per specificare e inserire le variabili di configurazione dei dati o di ambiente, scegli Configurazione aggiuntiva e inserisci queste informazioni.

    • Per aggiungere altri contenitori, scegli + Aggiungi contenitore.

    • Nel Tipo di istanza di inferenza in tempo reale, inserisci il tipo di istanza da utilizzare per l'inferenza in tempo reale.

    • In Tipo di istanza di inferenza Transform, inserisci il tipo di istanza da utilizzare per le trasformazioni batch.

    • In Tipi di contenuto supportati, inserisci i tipi MIME di input.

    • In Tipi di contenuto di risposta supportati, inserisci i tipi MIME di output.

  9. Seleziona Successivo.

  10. Nel modulo opzionale di raccomandazione di inferenza, inserisci le seguenti informazioni:

    • Per problemi aziendali, scegli l'applicazione che si applica al tuo modello.

    • Per Task, scegli il tipo di problema che si applica al tuo modello.

    • Per l'indirizzo del bucket S3, inserisci la posizione del bucket Amazon S3 del payload di esempio.

    • Per il primo contenitore, inserisci le seguenti informazioni:

      • Per Nome modello, inserisci il nome del modello usato negli zoo dei modelli.

      • Per Framework, scegliete un framework.

      • Per la versione del Framework, inserisci una versione del framework.

    • Ripetere il passaggio precedente per tutti i contenitori.

  11. Seleziona Successivo.

  12. Seleziona la casella di controllo accanto a una o più metriche del modello visualizzate.

  13. Seleziona Avanti.

  14. Assicurati che le impostazioni visualizzate siano corrette e scegli Registra versione del modello. Se, successivamente, viene visualizzata una finestra modale con un messaggio di errore, scegli Visualizza (accanto al messaggio) per visualizzare l'origine dell'errore.

  15. Conferma che la nuova versione del modello sia visualizzata nella pagina del gruppo di modelli principale.

Studio Classic
  1. Accedi ad Amazon SageMaker Studio Classic. Per ulteriori informazioni, consulta Launch Amazon SageMaker Studio Classic.

  2. Nel riquadro di navigazione a sinistra, scegli l’icona Home ( ).

  3. Scegli Modelli, quindi Registro dei modelli.

  4. Apri il modulo Registra versione. Ci sono due modi per farlo:

    • Seleziona Azioni e scegli Crea versione del modello.

    • Seleziona il nome del gruppo di modelli per il quale desideri creare una versione del modello, quindi scegli Crea versione del modello.

  5. Nel modulo Registra versione del modello, inserisci le seguenti informazioni:

    • Nel menu a discesa Nome del gruppo del pacchetto di modelli, seleziona il nome del gruppo di modelli.

    • (Facoltativo) Inserisci una descrizione per la versione del modello.

    • Nel menu a discesa Stato di approvazione del modello, seleziona lo stato di approvazione della versione.

    • (Facoltativo) Nel campo Metadati personalizzati, aggiungi tag personalizzati come coppie chiave-valore.

  6. Seleziona Avanti.

  7. Nel modulo Specifica di inferenza, inserisci le seguenti informazioni:

    • Immetti la posizione dell'immagine di inferenza.

    • Immetti la posizione degli artefatti dei dati del modello.

    • (Facoltativo) Immettete le informazioni sulle immagini da utilizzare per i lavori di trasformazione e inferenza in tempo reale e sui tipi MIME di input e output supportati.

  8. Seleziona Avanti.

  9. (Facoltativo) Inserisci ulteriori dettagli per ricevere migliori raccomandazioni sugli endpoint.

  10. Seleziona Avanti.

  11. (Facoltativo) Scegli le metriche del modello che desideri includere.

  12. Seleziona Avanti.

  13. Assicurati che le impostazioni visualizzate siano corrette e scegli Registra versione del modello. Se, successivamente, viene visualizzata una finestra modale con un messaggio di errore, scegli Visualizza (accanto al messaggio) per visualizzare l'origine dell'errore.

  14. Conferma che la nuova versione del modello sia visualizzata nella pagina del gruppo di modelli principale.

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 SageMaker, è necessario fornire una politica delle risorse tra account per il gruppo di modelli 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— 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 SageMaker azioni, ad esempio un ruolo con la politica gestita. AmazonSageMakerFullAccess Per informazioni sulle policy gestite SageMaker , consulta AWS Policy gestite per Amazon SageMaker.

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.

Le politiche necessarie per registrare i modelli tra gli account.

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}/*" }] } # 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))