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.
Utilisation d’un registre Docker privé pour les conteneurs d’inférence en temps réel
L’hébergement Amazon SageMaker AI vous permet d’utiliser des images stockées dans Amazon ECR pour créer vos conteneurs pour une inférence en temps réel par défaut. En option, vous pouvez créer des conteneurs pour une inférence en temps réel à partir d’images dans un registre Docker privé. Le registre privé doit être accessible à partir d’un Amazon VPC de votre compte. Les modèles que vous créez sur la base des images stockées dans votre registre Docker privé doivent être configurés pour se connecter au même VPC que celui où le registre Docker privé est accessible. Pour plus d’informations sur la connexion de votre modèle à un VPC, consultez Donnez aux points de terminaison hébergés par SageMaker IA un accès aux ressources de votre Amazon VPC.
Votre registre Docker doit être sécurisé à l’aide d’un certificat TLS provenant d’une autorité de certification (CA) publique connue.
Note
Votre registre Docker privé doit autoriser le trafic entrant en provenance des groupes de sécurité que vous spécifiez dans la configuration du VPC pour votre modèle, pour que l’hébergement SageMaker AI puisse extraire des images de modèle à partir de votre registre.
SageMaker AI peut extraire des images de modèle à partir de DockerHub s’il existe un chemin d’accès à Internet ouvert à l’intérieur de votre VPC.
Rubriques
Stocker les images dans un registre Docker privé autre que Amazon Elastic Container Registry
Utilisation d’une image provenant d’un registre Docker privé pour une inférence en temps réel
Autoriser SageMaker AI à s’authentifier auprès d’un registre Docker privé
Créer un point de terminaison de VPC d’interface pour Lambda
Stocker les images dans un registre Docker privé autre que Amazon Elastic Container Registry
Pour utiliser un registre Docker privé afin de stocker vos images pour une inférence en temps réel SageMaker AI, créez un registre privé accessible depuis votre Amazon VPC. Pour plus d’informations sur la création d’un registre Docker, consultez Deploy a registry server
-
Le registre doit être un registre Docker Registry HTTP API V2
. -
Le registre Docker doit être accessible depuis le même VPC que celui que vous avez spécifié dans le paramètre
VpcConfiglors de la création de votre modèle.
Utilisation d’une image provenant d’un registre Docker privé pour une inférence en temps réel
Lorsque vous créez un modèle et le déployez sur l’hébergement SageMaker AI, vous pouvez spécifier qu’il utilise une image provenant de votre registre Docker privé pour créer le conteneur d’inférence. Vous spécifiez ceci dans l’objet ImageConfig du paramètre PrimaryContainer que vous passez à un appel à la fonction create_model
Pour utiliser une image stockée dans votre registre Docker privé pour votre conteneur d’inférence
-
Créez l’objet de configuration d’image et spécifiez une valeur de
Vpcpour le champRepositoryAccessMode.image_config = { 'RepositoryAccessMode': 'Vpc' } -
Si votre registre Docker privé nécessite une authentification, ajoutez un objet
RepositoryAuthConfigà l’objet de configuration d’image. Pour le champRepositoryCredentialsProviderArnde l’objetRepositoryAuthConfig, spécifiez l’Amazon Resource Name (ARN) d’une fonction AWS Lambda qui fournit des informations d’identification permettant à SageMaker AI de s’authentifier auprès de votre Registre Docker privé. Pour plus d’informations sur la création de la fonction Lambda pour fournir une authentification, consultez Autoriser SageMaker AI à s’authentifier auprès d’un registre Docker privé.image_config = { 'RepositoryAccessMode': 'Vpc', 'RepositoryAuthConfig': { 'RepositoryCredentialsProviderArn': 'arn:aws:lambda:Region:Acct:function:FunctionName' } } -
Créez l’objet de conteneur principal que vous voulez passer à
create_modelen utilisant l’objet de configuration d’image que vous avez créé à l’étape précédente.Fournissez votre image sous forme digest
. Si vous fournissez votre image à l’aide de la balise :latest, il existe un risque que SageMaker AI récupère une version plus récente de l’image que prévu. L’utilisation de la forme digest garantit que SageMaker AI extrait la version d’image souhaitée.primary_container = { 'ContainerHostname': 'ModelContainer', 'Image': 'myteam.myorg.com/docker-local/my-inference-image:<IMAGE-TAG>', 'ImageConfig': image_config } -
Indiquez le nom du modèle et le rôle d’exécution que vous voulez passer à
create_model.model_name = 'vpc-model' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole' -
Spécifiez un ou plusieurs groupes et sous-réseaux de sécurité pour la configuration VPC de votre modèle. Votre registre Docker privé doit autoriser le trafic entrant provenant des groupes de sécurité que vous spécifiez. Les sous-réseaux que vous spécifiez doivent se trouver dans le même VPC que votre registre Docker privé.
vpc_config = { 'SecurityGroupIds': ['sg-0123456789abcdef0'], 'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1'] } -
Obtenez un client SageMaker AI Boto3.
import boto3 sm = boto3.client('sagemaker') -
Créez le modèle en appelant
create_model, en utilisant les valeurs que vous avez spécifiées dans les étapes précédentes pour les paramètresPrimaryContaineretVpcConfig.try: resp = sm.create_model( ModelName=model_name, PrimaryContainer=primary_container, ExecutionRoleArn=execution_role_arn, VpcConfig=vpc_config, ) except Exception as e: print(f'error calling CreateModel operation: {e}') else: print(resp) -
Enfin, appelez create_endpoint_config
et create_endpoint pour créer le point de terminaison d’hébergement à l’aide du modèle que vous avez créé à l’étape précédente. endpoint_config_name = 'my-endpoint-config' sm.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { 'VariantName': 'MyVariant', 'ModelName': model_name, 'InitialInstanceCount': 1, 'InstanceType': 'ml.t2.medium' }, ], ) endpoint_name = 'my-endpoint' sm.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name, ) sm.describe_endpoint(EndpointName=endpoint_name)
Autoriser SageMaker AI à s’authentifier auprès d’un registre Docker privé
Pour extraire une image d’inférence à partir d’un registre Docker privé nécessitant une authentification, créez une fonction AWS Lambda qui fournit des informations d’identification, et fournissez l’Amazon Resource Name (ARN) de la fonction Lambda lorsque vous appelez create_modelcreate_model, il appelle la fonction Lambda que vous avez spécifiée pour obtenir les informations d’identification nécessaires à l’authentification auprès de votre registre Docker.
Créer la fonction Lambda
Créez une fonction AWS Lambda qui renvoie une réponse sous la forme suivante :
def handler(event, context): response = { "Credentials": {"Username": "username", "Password": "password"} } return response
Selon la façon dont vous configurez l’authentification pour votre registre Docker privé, les informations d’identification renvoyées par votre fonction Lambda peuvent signifier deux choses différentes :
-
Si vous configurez votre registre Docker privé de manière à utiliser l’authentification de base, fournissez les informations d’identification de connexion requises pour vous authentifier auprès du registre.
-
Si vous configurez votre registre Docker privé de manière à utiliser l’authentification par jeton porteur, les informations d’identification de connexion sont envoyées à votre serveur d’autorisation, qui renvoie un jeton porteur utilisable ensuite pour vous authentifier auprès du registre Docker privé.
Donner l’autorisation de votre rôle d’exécution à Lambda
Le rôle d’exécution que vous utilisez pour appeler create_model doit avoir les autorisations nécessaires pour appeler les fonctions AWS Lambda. Ajoutez les éléments suivants à la politique d’autorisation de votre rôle d’exécution.
{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*myLambdaFunction*" ] }
Où myLambdaFunction est le nom de votre fonction Lambda. Pour plus d’informations sur la modification d’une politique d’autorisations de rôle, consultez Modification d’une stratégie d’autorisations de rôle (console) dans le Guide de l’utilisateur Gestion des identités et des accès AWS.
Note
Un rôle d’exécution auquel la politique gérée AmazonSageMakerFullAccess est attachée a l’autorisation d’appeler toute fonction Lambda dont le nom contient SageMaker.
Créer un point de terminaison de VPC d’interface pour Lambda
Créez un point de terminaison d’interface pour que votre Amazon VPC puisse communiquer avec votre fonction AWS Lambda sans envoyer de trafic sur Internet. Pour plus d’informations sur la procédure à suivre, consultez Configuration de points de terminaison de VPC d’interface pour Lambda dans le Guide du développeur AWS Lambda.
L’hébergement SageMaker AI envoie une requête à lambda. via votre VPC pour appeler votre fonction Lambda. Si vous choisissez un nom DNS privé lorsque vous créez votre point de terminaison d’interface, Amazon Route 53 achemine l’appel vers le point de terminaison d’interface Lambda. Si vous utilisez un fournisseur de DNS différent, veillez à mapper region.amazonaws.comlambda. à votre point de terminaison d’interface Lambda.region.amazonaws.com