Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Déployer un modèle depuis le registre avec Python

Mode de mise au point
Déployer un modèle depuis le registre avec Python - Amazon SageMaker AI

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.

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.

Après avoir enregistré une version du modèle et approuvé son déploiement, déployez-la sur un point de terminaison SageMaker AI pour une inférence en temps réel. Vous pouvez déployer votre modèle à l'aide du SDK SageMaker AI ou du AWS SDK for Python (Boto3).

Lorsque vous créez un projet d'opérations d'apprentissage automatique (MLOps) et que vous choisissez un modèle de MLOps projet incluant le déploiement du modèle, les versions du modèle approuvées dans le registre des modèles sont automatiquement déployées en production. Pour plus d'informations sur l'utilisation de MLOps projets d' SageMaker IA, consultezMLOps Automatisation avec des SageMaker projets.

Vous pouvez également permettre à un AWS compte de déployer des versions de modèles créées dans un autre compte en ajoutant une politique de ressources entre comptes. Par exemple, une équipe de votre organisation peut être responsable des modèles d'entraînement et une équipe différente est responsable du déploiement et de la mise à jour des modèles.

Déployer un modèle à partir du registre (SDK SageMaker AI)

Pour déployer une version de modèle à l'aide du SDK Amazon SageMaker Python, utilisez l'extrait de code suivant :

from sagemaker import ModelPackage from time import gmtime, strftime model_package_arn = 'arn:aws:sagemaker:us-east-2:12345678901:model-package/modeltest/1' model = ModelPackage(role=role, model_package_arn=model_package_arn, sagemaker_session=sagemaker_session) model.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge')

Déploiement d'un modèle à partir du registre (Boto3)

Pour déployer une version de modèle à l'aide du AWS SDK for Python (Boto3), procédez comme suit :

  1. L'extrait de code suivant suppose que vous avez déjà créé le client SageMaker AI Boto3 sm_client et une version du modèle dont l'ARN est stocké dans la variable. model_version_arn

    Créez un objet de modèle à partir de la version du modèle en appelant l'opération d'API create_model. Transmettez le nom de ressource Amazon (ARN) de la version du modèle dans le cadre Containers de l'objet du modèle :

    model_name = 'DEMO-modelregistry-model-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print("Model name : {}".format(model_name)) container_list = [{'ModelPackageName': model_version_arn}] create_model_response = sm_client.create_model( ModelName = model_name, ExecutionRoleArn = role, Containers = container_list ) print("Model arn : {}".format(create_model_response["ModelArn"]))
  2. Créez une configuration de point de terminaison en appelant create_endpoint_config. La configuration du point de terminaison spécifie le nombre et le type d' EC2 instances Amazon à utiliser pour le point de terminaison.

    endpoint_config_name = 'DEMO-modelregistry-EndpointConfig-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print(endpoint_config_name) create_endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ProductionVariants=[{ 'InstanceType':'ml.m4.xlarge', 'InitialVariantWeight':1, 'InitialInstanceCount':1, 'ModelName':model_name, 'VariantName':'AllTraffic'}])
  3. Créez le point de terminaison en appelant create_endpoint.

    endpoint_name = 'DEMO-modelregistry-endpoint-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) print("EndpointName={}".format(endpoint_name)) create_endpoint_response = sm_client.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name) print(create_endpoint_response['EndpointArn'])

Déploiement d'une version de modèle à partir d'un compte différent

Vous pouvez autoriser un AWS compte à déployer des versions de modèles créées dans un autre compte en ajoutant une politique de ressources entre comptes. Par exemple, une équipe de votre organisation peut être responsable des modèles d'entraînement et une équipe différente est responsable du déploiement et de la mise à jour des modèles. Lorsque vous créez ces politiques de ressources, vous appliquez la politique à la ressource spécifique à laquelle vous voulez accorder l'accès. 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.

Note

Vous devez 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 permettre le déploiement de modèles entre comptes dans SageMaker AI, vous devez fournir une politique de ressources entre comptes pour le groupe de modèles contenant les versions de modèles que vous souhaitez déployer, le référentiel Amazon ECR où réside l'image d'inférence du groupe de modèles et le compartiment Amazon S3 dans lequel les versions du modèle sont stockées.

Pour pouvoir déployer un modèle créé dans un autre compte, vous devez 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.

L'exemple suivant crée des politiques inter-compte pour ces trois ressources et les applique aux ressources. L'exemple suppose également que vous avez précédemment défini les variables suivantes :

  • bucket— Le compartiment Amazon S3 dans lequel sont stockées les versions des modèles.

  • kms_key_id— La clé KMS utilisée pour chiffrer la sortie d'entraînement.

  • sm_client— Un client SageMaker AI Boto3.

  • model_package_group_name— Le groupe de modèles auquel vous souhaitez accorder un accès entre comptes.

  • model_package_group_arn— L'ARN du groupe de modèles auquel vous souhaitez accorder un accès entre comptes.

import json # The cross-account id to grant access to cross_account_id = "123456789012" # Create the policy for access to the ECR repository ecr_repository_policy = { 'Version': '2012-10-17', 'Statement': [{ 'Sid': 'AddPerm', 'Effect': 'Allow', 'Principal': { 'AWS': f'arn:aws:iam::{cross_account_id}:root' }, 'Action': ['ecr:*'] }] } # 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 = account, repositoryName = 'decision-trees-sample', policyText = ecr_repository_policy ) # Create a policy for accessing the S3 bucket bucket_policy = { 'Version': '2012-10-17', 'Statement': [{ 'Sid': 'AddPerm', 'Effect': 'Allow', 'Principal': { 'AWS': f'arn:aws:iam::{cross_account_id}:root' }, 'Action': 's3:*', 'Resource': f'arn:aws:s3:::{bucket}/*' }] } # Convert the policy from JSON dict to string bucket_policy = json.dumps(bucket_policy) # Set the new policy s3 = boto3.client('s3') response = s3.put_bucket_policy( Bucket = bucket, Policy = bucket_policy) # Create the KMS grant for encryption in the source account to the # Model Registry account Model Group client = boto3.client('kms') response = client.create_grant( GranteePrincipal=cross_account_id, KeyId=kms_key_id Operations=[ 'Decrypt', 'GenerateDataKey', ], ) # 3. Create a policy for access to the Model Group. model_package_group_policy = { 'Version': '2012-10-17', 'Statement': [{ 'Sid': 'AddPermModelPackageGroup', 'Effect': 'Allow', 'Principal': { 'AWS': f'arn:aws:iam::{cross_account_id}:root' }, 'Action': ['sagemaker:DescribeModelPackageGroup'], 'Resource': f'arn:aws:sagemaker:{region}:{account}:model-package-group/{model_package_group_name}' },{ 'Sid': 'AddPermModelPackageVersion', 'Effect': 'Allow', 'Principal': { 'AWS': f'arn:aws:iam::{cross_account_id}:root' }, 'Action': ["sagemaker:DescribeModelPackage", "sagemaker:ListModelPackages", "sagemaker:UpdateModelPackage", "sagemaker:CreateModel"], 'Resource': f'arn:aws:sagemaker:{region}:{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 policy to the Model Group response = sm_client.put_model_package_group_policy( ModelPackageGroupName = model_package_group_name, ResourcePolicy = model_package_group_policy) print('ModelPackageGroupArn : {}'.format(create_model_package_group_response['ModelPackageGroupArn'])) print("First Versioned ModelPackageArn: " + model_package_arn) print("Second Versioned ModelPackageArn: " + model_package_arn2) print("Success! You are all set to proceed for cross-account deployment.")
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.