Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vous pouvez enregistrer un modèle Amazon SageMaker AI en créant une version du modèle qui spécifie le groupe de modèles auquel il appartient. Une version de modèle doit inclure des artefacts de modèle (les poids entraînés d'un modèle) et éventuellement le code d'inférence du modèle.
Un pipeline d'inférence est un modèle d' SageMaker IA composé d'une séquence linéaire de deux à quinze conteneurs qui traitent les demandes d'inférence. Vous enregistrez un pipeline d'inférence en spécifiant les conteneurs et les variables d'environnement associées. Pour plus d'informations sur les pipelines d'inférence, veuillez consulter Pipelines d'inférence dans Amazon AI SageMaker .
Vous pouvez enregistrer un modèle avec un pipeline d'inférence en spécifiant les conteneurs et les variables d'environnement associées. Pour créer une version de modèle avec un pipeline d'inférence en utilisant la console Amazon SageMaker Studio ou en créant une étape dans un pipeline de création de modèles SageMaker AI, procédez comme suit. AWS SDK for Python (Boto3)
Rubriques
Enregistrer une version de modèle (SageMaker AI Pipelines)
Pour enregistrer une version de modèle à l'aide d'un pipeline de création de modèles basé sur l' SageMaker IA, créez une RegisterModel
étape dans votre pipeline. Pour obtenir des informations sur la création d'une étape RegisterModel
dans le cadre d'un pipeline, veuillez consulter Étape 8 : Définition d'une RegisterModel étape pour créer un package modèle.
Enregistrement d'une version de modèle (Boto3)
Pour enregistrer une version de modèle à l'aide de Boto3, appelez l'opération create_model_package
API.
Tout d'abord, vous configurez le dictionnaire de paramètres à transmettre à l'opération create_model_package
d'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)
Vous appelez ensuite l'opération create_model_package
API en transmettant le dictionnaire de paramètres que vous venez de configurer.
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))
Enregistrer une version du modèle (Studio ou Studio Classic)
Pour enregistrer une version de modèle dans la console Amazon SageMaker Studio, suivez les étapes suivantes selon que vous utilisez Studio ou Studio Classic.
-
Ouvrez la console SageMaker Studio en suivant les instructions de la section Lancer Amazon SageMaker Studio.
-
Dans le volet de navigation de gauche, choisissez Modèles dans le menu.
-
Choisissez l'onglet Modèles enregistrés, s'il n'est pas déjà sélectionné.
-
Juste en dessous du libellé de l'onglet Modèles enregistrés, sélectionnez Groupes de modèles et Mes modèles, si ce n'est déjà fait.
-
Choisissez Register (S'inscrire). Cela ouvrira la page du modèle d'enregistrement.
-
Suivez les instructions fournies sur la page du modèle d'enregistrement.
-
Une fois que vous avez passé en revue vos choix, choisissez Enregistrer. Une fois terminé, vous serez redirigé vers la page d'aperçu de la version du modèle.
Enregistrer une version de modèle à partir d'un autre compte
Pour enregistrer des versions de modèles auprès d'un groupe de modèles créé par un autre AWS compte, vous devez ajouter une politique de AWS Identity and Access Management ressources entre comptes pour activer ce compte. Par exemple, un AWS compte de votre organisation est responsable des modèles de formation, tandis qu'un autre compte est responsable de la gestion, du déploiement et de la mise à jour des modèles. Vous créez des politiques de ressources IAM et appliquez les politiques à la ressource de compte spécifique à laquelle vous souhaitez accorder l'accès pour ce cas. Pour plus d'informations sur les politiques de ressources entre comptes dans AWS, voir Logique d'évaluation des politiques entre comptes dans le Guide de l'AWS Identity and Access Management utilisateur.
Pour activer la découvrabilité entre comptes, qui permet à d'autres comptes de visualiser les groupes de packages de modèles à partir du compte du propriétaire de la ressource, voir. Découvrabilité entre comptes
Note
Vous devez également utiliser une clé KMS pour chiffrer l'action de configuration des données de sortie pendant l'entraînement pour le déploiement de modèle entre comptes.
Pour activer le registre des modèles entre comptes dans SageMaker AI, vous devez fournir une politique de ressources entre comptes pour le groupe de modèles qui contient les versions du modèle. L'exemple suivant crée des politiques entre comptes pour le groupe de modèles et applique ces politiques à cette ressource spécifique.
La configuration suivante doit être définie dans le compte source qui enregistre les modèles entre comptes dans un groupe de modèles. Dans cet exemple, le compte source est le compte d'entraînement du modèle qui va entraîner puis enregistrer le modèle entre comptes dans le registre des modèles du compte de registre des modèles.
L'exemple suppose que vous avez préalablement défini les variables suivantes :
-
sm_client
— Un client SageMaker AI Boto3. -
model_package_group_name
— Le groupe de modèles auquel vous souhaitez accorder l'accès. -
model_package_group_arn
— L'ARN du groupe de modèles auquel vous souhaitez accorder un accès entre comptes. -
bucket
— Le compartiment Amazon S3 dans lequel sont stockés les artefacts d'entraînement des modèles.
Pour pouvoir déployer un modèle créé dans un autre compte, l'utilisateur doit disposer d'un rôle ayant accès aux actions de l' SageMaker IA, tel qu'un rôle associé à la politique AmazonSageMakerFullAccess
gérée. Pour plus d'informations sur les politiques gérées par l' SageMaker IA, consultezAWS politiques gérées pour Amazon SageMaker AI.
Politiques de ressources IAM requises
Le diagramme suivant illustre les politiques requises pour permettre l'enregistrement de modèles entre comptes. Comme indiqué, ces politiques doivent être actives pendant l'entraînement du modèle afin d'enregistrer correctement le modèle dans le compte de registre des modèles.

Amazon ECR, Amazon S3 et AWS KMS les politiques sont illustrés dans les exemples de code suivants.
Exemple de politique 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*"
]
}
]
}
Exemple de politique 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
}/*"
}
]
}
Exemple de AWS KMS politique
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{model_registry_account
}:root"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
]
}
Appliquer les politiques de ressources aux comptes
La configuration de politique suivante applique les politiques abordées dans la section précédente et doit être placée dans le compte d'entraînement du modèle.
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 configuration suivante doit être placée dans le compte de registre des modèles où se situe le groupe de modèles.
# 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)
Enfin, utilisez l'action create_model_package
du compte d'entraînement du modèle pour enregistrer le package du modèle dans le compte croisé.
# 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))