Registrieren Sie eine Modellversion - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Registrieren Sie eine Modellversion

Sie können ein Amazon- SageMaker Modell registrieren, indem Sie eine Modellversion erstellen, die die Modellgruppe angibt, zu der es gehört. Eine Modellversion muss sowohl die Modellartefakte (die geschulten Gewichte eines Modells) als auch den Inferenzcode für das Modell enthalten.

Eine Inferenz-Pipeline ist ein SageMaker Modell, das aus einer linearen Sequenz von zwei bis fünfzehn Containern besteht, die Inferenzanfragen verarbeiten. Sie registrieren eine Inferenz-Pipeline, indem Sie die Container und die zugehörigen Umgebungsvariablen angeben. Weitere Informationen zu Inferenz-Pipelines finden Sie unter Hostmodelle zusammen mit Vorverarbeitungslogik als serielle Inferenz-Pipeline hinter einem Endpunkt.

Sie können ein Modell bei einer Inferenz-Pipeline registrieren, indem Sie die Container und die zugehörigen Umgebungsvariablen angeben. Gehen Sie wie folgt vor, um eine Modellversion mit einer Inferenz-Pipeline zu erstellenAWS SDK for Python (Boto3), indem Sie entweder die , die Amazon- SageMaker Studio-Konsole oder einen Schritt in einer SageMaker Modellerstellungs-Pipeline verwenden.

Registrieren einer Modellversion (SageMaker-Pipelines)

Um eine Modellversion mithilfe einer SageMaker Modellerstellungs-Pipeline zu registrieren, erstellen Sie einen RegisterModel Schritt in Ihrer Pipeline. Weitere Informationen zum Erstellen eines RegisterModel als Teil einer Pipeline finden Sie unter Schritt 8: Definieren eines RegisterModel Schritts zum Erstellen eines Modellpakets.

Registrieren einer Modellversion (Boto3)

Um eine Modellversion mit Boto3 zu registrieren, rufen Sie die create_model_package-API-Operation auf.

Zuerst richten Sie das Parameterwörterbuch so ein, dass es an den create_model_package-API-Vorgang übergeben wird.

# Specify the model source model_url = "s3://your-bucket-name/model.tar.gz" modelpackage_inference_specification = { "InferenceSpecification": { "Containers": [ { "Image": '257758044811.dkr.ecr.us-east-2.amazonaws.com/sagemaker-xgboost:1.2-1', "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)

Dann rufen Sie die create_model_package -API-Operation auf und übergeben das gerade eingerichtete Parameterwörterbuch.

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

Registrieren einer Modellversion (Konsole)

Um eine Modellversion in der Amazon SageMaker Studio-Konsole zu registrieren, führen Sie die folgenden Schritte aus, je nachdem, ob Sie Studio oder Studio Classic verwenden.

Studio
  1. Öffnen Sie die SageMaker Studio-Konsole, indem Sie den Anweisungen unter Amazon SageMaker Studio starten folgen.

  2. Wählen Sie im linken Navigationsbereich Modelle aus dem Menü aus.

  3. Wählen Sie die Registerkarte Registrierte Modelle aus, sofern noch nicht ausgewählt.

  4. Wählen Sie unmittelbar unter der Registerkarte Registrierte Modelle die Option Modellgruppen aus, sofern noch nicht ausgewählt.

  5. Wählen Sie Registrieren und dann Modellversion aus.

  6. Geben Sie im Formular Modellversion registrieren die folgenden Informationen ein:

    • Wählen Sie in der Dropdownliste Modellgruppenname den Namen der Modellgruppe aus, zu der Ihre Version gehört.

    • (Optional) Geben Sie eine Beschreibung für Ihre Modellversion ein.

    • Wählen Sie in der Dropdownliste Status der Modellgenehmigung den Status der Versionsgenehmigung aus.

    • (Optional) Wählen Sie im Feld Benutzerdefinierte Metadaten die Option + Neu hinzufügen und fügen Sie benutzerdefinierte Tags als Schlüssel-Wert-Paare hinzu.

  7. Wählen Sie Weiter aus.

  8. Geben Sie im Formular Inferenzspezifikation die folgenden Informationen ein:

    • Geben Sie unter Inferenzbildposition (ECR) Ihren ECR-Inferenzbildspeicherort ein.

    • Geben Sie unter Speicherort des Modellartefakts (S3) den Amazon S3-Bucket-Speicherort Ihrer Modelldatenartefakte ein.

    • Um die Konfiguration und Eingabe von Daten oder Umgebungsvariablen anzugeben, wählen Sie Zusätzliche Konfiguration und geben Sie diese Informationen ein.

    • Um weitere Container hinzuzufügen, wählen Sie + Container hinzufügen aus.

    • Geben Sie unter Instance-Typ der Echtzeit-Inferenz den Instance-Typ ein, der für die Echtzeit-Inferenz verwendet werden soll.

    • Geben Sie unter Transformieren des Inferenz-Instance-Typs den Instance-Typ ein, der für Batch-Transformationen verwendet werden soll.

    • Geben Sie unter Unterstützte Inhaltstypen Ihre Eingabe-MIME-Typen ein.

    • Geben Sie unter Unterstützte Antwortinhaltstypen Ihre Ausgabe-MIME-Typen ein.

  9. Wählen Sie Weiter aus.

  10. Geben Sie im optionalen Formular Inferenzempfehlung die folgenden Informationen ein:

    • Wählen Sie für Geschäftsproblem die Anwendung aus, die auf Ihr Modell zutrifft.

    • Wählen Sie für Aufgabe den Problemtyp aus, der für Ihr Modell gilt.

    • Geben Sie für S3-Bucket-Adresse den Amazon S3-Bucket-Speicherort Ihrer Beispielnutzlast ein.

    • Geben Sie für den ersten Container die folgenden Informationen ein:

      • Geben Sie für Modellname den Modellnamen ein, wie er in Modellzoos verwendet wird.

      • Wählen Sie für Framework ein Framework aus.

      • Geben Sie für Framework-Version eine Framework-Version ein.

    • Wiederholen Sie den vorherigen Schritt für alle Container.

  11. Wählen Sie Weiter aus.

  12. Aktivieren Sie das Kontrollkästchen neben einer oder mehreren der angezeigten Modellmetriken.

  13. Wählen Sie Weiter aus.

  14. Stellen Sie sicher, dass die angezeigten Einstellungen korrekt sind, und wählen Sie Modellversion registrieren aus. Wenn Sie anschließend ein modales Fenster mit einer Fehlermeldung sehen, wählen Sie Ansicht (neben der Meldung), um die Ursache des Fehlers anzuzeigen.

  15. Vergewissern Sie sich, dass Ihre neue Modellversion auf der Seite der übergeordneten Modellgruppe angezeigt wird.

Studio Classic
  1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter Starten von Amazon SageMaker Studio Classic.

  2. Wählen Sie im linken Navigationsbereich das Symbol Home ( ).

  3. Wählen Sie Modelle und dann Modellverzeichnis.

  4. Öffnen Sie das Formular Version registrieren. Dafür stehen Ihnen zwei Optionen zur Verfügung:

    • Wählen Sie Aktionen und dann Flow-Protokoll erstellen aus.

    • Wählen Sie den Namen der Modellgruppe aus, für die Sie eine Modellversion erstellen möchten, und wählen Sie dann Modellversion erstellen.

  5. Geben Sie im Formular Modellversion registrieren die folgenden Informationen ein:

    • Wählen Sie in der Dropdownliste Name der Modellpaketgruppe den Namen der Modellgruppe aus.

    • (Optional) Geben Sie eine Beschreibung für Ihre Modellversion ein.

    • Wählen Sie in der Dropdownliste Status der Modellgenehmigung den Status der Versionsgenehmigung aus.

    • (Optional) Fügen Sie im Feld Benutzerdefinierte Metadaten benutzerdefinierte Tags als Schlüssel-Wert-Paare hinzu.

  6. Wählen Sie Weiter aus.

  7. Geben Sie im Formular Inferenzspezifikation die folgenden Informationen ein:

    • Geben Sie den Speicherort Ihres Inferenzbilds ein.

    • Geben Sie den Speicherort Ihrer Modelldatenartefakte ein.

    • (Optional) Geben Sie Informationen zu Bildern ein, die für Transformations- und Echtzeit-Inferenzaufträge verwendet werden sollen, sowie unterstützte Eingabe- und Ausgabe-MIME-Typen.

  8. Wählen Sie Weiter aus.

  9. (Optional) Geben Sie Details an, um Empfehlungen für Endgeräte zu geben.

  10. Wählen Sie Weiter aus.

  11. (Optional) Wählen Sie Modellmetriken aus, die Sie einbeziehen möchten.

  12. Wählen Sie Weiter aus.

  13. Stellen Sie sicher, dass die angezeigten Einstellungen korrekt sind, und wählen Sie Modellversion registrieren aus. Wenn Sie anschließend ein modales Fenster mit einer Fehlermeldung sehen, wählen Sie Ansicht (neben der Meldung), um die Ursache des Fehlers anzuzeigen.

  14. Vergewissern Sie sich, dass Ihre neue Modellversion auf der Seite der übergeordneten Modellgruppe angezeigt wird.

Registrieren Sie eine Modellversion von einem anderen Konto aus

Um Modellversionen für eine Modellgruppe zu registrieren, die mit einem anderen AWS Konto erstellt wurde, müssen Sie eine kontoübergreifende AWS Identity and Access Management Ressourcenrichtlinie hinzufügen, um dieses Konto zu aktivieren. Beispielsweise ist ein AWS Konto in Ihrer Organisation für Schulungsmodelle zuständig, und ein anderes Konto ist für die Verwaltung, Bereitstellung und Aktualisierung von Modellen verantwortlich. Sie erstellen IAM-Ressourcenrichtlinien und wenden die Richtlinien auf die spezifische Kontoressource an, der Sie in diesem Fall Zugriff gewähren möchten. Weitere Informationen zu kontenübergreifenden Ressourcenrichtlinien in AWS, finden Sie unter Bewertungslogik für kontenübergreifende Richtlinien im AWS Identity and Access Management Benutzerhandbuch.

Anmerkung

Sie müssen außerdem einen KMS-Schlüssel verwenden, um die Aktion zur Konfiguration der Ausgabedaten während der Schulung für die kontenübergreifende Bereitstellung zu verschlüsseln.

Um die kontoübergreifende Modellregistrierung in zu aktivieren SageMaker, müssen Sie eine kontoübergreifende Ressourcenrichtlinie für die Modellgruppe bereitstellen, die die Modellversionen enthält. Im Folgenden finden Sie ein Beispiel, das kontenübergreifende Richtlinien für die Modellgruppe erstellt und diese Richtlinien auf diese spezifische Ressource anwendet.

Die folgende Konfiguration muss für das Quellkonto festgelegt werden, das kontenübergreifende Modelle in einer Modellgruppe registriert. In diesem Beispiel ist das Quellkonto das Modellschulungskonto, das das Modellkonto schult und anschließend in der Modellregistrierung des Modellregistrierungskontos registriert.

Das Beispiel geht davon aus, dass Sie zuvor die folgenden Variablen definiert haben:

  • sm_client – Ein SageMaker Boto3-Client.

  • model_package_group_name – Die Modellgruppe, der Sie Zugriff gewähren möchten.

  • model_package_group_arn – Der Modellgruppen-ARN, für den Sie kontoübergreifenden Zugriff gewähren möchten.

  • bucket – Der Amazon S3-Bucket, in dem die Modelltrainingsartefakte gespeichert sind.

Um ein Modell bereitstellen zu können, das in einem anderen Konto erstellt wurde, muss der Benutzer über eine Rolle verfügen, die Zugriff auf - SageMaker Aktionen hat, z. B. eine Rolle mit der AmazonSageMakerFullAccess verwalteten Richtlinie. Weitere Informationen zu SageMaker -verwalteten Richtlinien finden Sie unter AWS Verwaltete Richtlinien für Amazon SageMaker.

Erforderliche IAM-Ressourcenrichtlinien

Das folgende Diagramm zeigt die Richtlinien, die für die Registrierung eines kontenübergreifenden Modells erforderlich sind. Wie gezeigt, müssen diese Richtlinien während der Modellschulung aktiv sein, damit das Modell ordnungsgemäß im Model Registry-Konto registriert werden kann.

Die Richtlinien, die erforderlich sind, um Modelle kontenübergreifend zu registrieren.

Amazon ECR, Amazon S3 und AWS KMS Richtlinien werden in den folgenden Codebeispielen demonstriert.

Beispiel für eine Amazon ECR-Richtlinie

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{model_registry_account}:root" }, "Action": [ "ecr:BatchGetImage", "ecr:Describe*" ] } ] }

Beispiel für eine Amazon S3-Richtlinie

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

Beispiel für eine AWS KMS Richtlinie

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{model_registry_account}:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" } ] }

Wenden Sie Ressourcenrichtlinien auf Konten an

Die folgende Richtlinienkonfiguration wendet die im vorherigen Abschnitt erläuterten Richtlinien an und muss in das Modellschulungskonto aufgenommen werden.

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", ], )

Die folgende Konfiguration muss in das Model Registry-Konto übernommen werden, in dem sich die Modellgruppe befindet.

# 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)

Verwenden Sie abschließend die create_model_package Aktion aus dem Modellschulungskonto, um das Modellpaket im Cross-Konto zu registrieren.

# 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))