Inférence en temps réel à faible latence avec AWS PrivateLink - Amazon SageMaker

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.

Inférence en temps réel à faible latence avec AWS PrivateLink

Amazon SageMaker fournit une faible latence pour les inférences en temps réel tout en maintenant une disponibilité et une résilience élevées grâce au déploiement multi-AZ. La latence des applications comprend deux composants principaux : la latence d'infrastructure ou de surcharge et la latence d'inférence de modèle. La réduction de la latence de surcharge ouvre de nouvelles possibilités, telles que le déploiement de modèles plus complexes, profonds et précis, et la division d'applications monolithiques en modules de microservices évolutifs et gérables. Vous pouvez réduire la latence pour les inférences en temps réel en SageMaker utilisant un AWS PrivateLink déploiement. Avec AWS PrivateLink, vous pouvez accéder en privé à toutes les SageMaker API opérations depuis votre cloud privé virtuel (VPC) de manière évolutive en utilisant les VPC points de terminaison de l'interface. Un point de VPC terminaison d'interface est une interface réseau élastique de votre sous-réseau dotée d'adresses IP privées qui sert de point d'entrée pour tous les SageMaker API appels.

Par défaut, un SageMaker point de terminaison comportant 2 instances ou plus est déployé dans au moins 2 zones de AWS disponibilité (AZs) et les instances de n'importe quelle zone de disponibilité peuvent traiter les appels. Il en résulte un ou plusieurs « sauts » de zone de disponibilité qui contribuent à la latence de surcharge. Un déploiement d' AWS PrivateLink avec l'option privateDNSEnabled définie comme true atténue cela en atteignant deux objectifs :

  • Il conserve tout le trafic d'inférence au sein de votreVPC.

  • Il conserve le trafic d'invocation dans la même zone de disponibilité que le client qui en est à l'origine lors de l'utilisation de SageMaker Runtime. Cela permet d'éviter les « sauts » entre les deux AZs en réduisant le temps de latence.

Les sections suivantes de ce guide montrent comment réduire la latence pour les inférences en temps réel avec le déploiement d' AWS PrivateLink .

Pour le déploiement AWS PrivateLink, créez d'abord un point de terminaison d'interface VPC à partir duquel vous vous connectez aux SageMaker points de terminaison. Suivez les étapes décrites dans Accéder à un AWS service à l'aide d'un point de VPC terminaison d'interface pour créer le point de terminaison d'interface. Lors de la création du point de terminaison, sélectionnez les paramètres suivants dans l'interface de la console :

  • Cochez la case Activer DNS le nom sous Paramètres supplémentaires

  • Sélectionnez les groupes de sécurité et les sous-réseaux appropriés à utiliser avec les points de SageMaker terminaison.

Assurez-vous également que les DNS noms VPC d'hôtes sont activés. Pour plus d'informations sur la façon de modifier DNS les attributs de votreVPC, voir Afficher et mettre à jour DNS les attributs de votre VPC.

Déployer un SageMaker terminal dans un VPC

Pour réduire le temps de latence, créez un SageMaker point de terminaison utilisant les mêmes sous-réseaux que ceux que vous avez spécifiés lors du déploiement AWS PrivateLink. Ces sous-réseaux doivent correspondre à ceux AZs de votre application cliente, comme indiqué dans l'extrait de code suivant.

model_name = '<the-name-of-your-model>' vpc = 'vpc-0123456789abcdef0' subnet_a = 'subnet-0123456789abcdef0' subnet_b = 'subnet-0123456789abcdef1' security_group = 'sg-0123456789abcdef0' create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url }, VpcConfig = { 'SecurityGroupIds': [security_group], 'Subnets': [subnet_a, subnet_b], }, )

L'extrait de code susmentionné suppose que vous avez suivi les étapes figurant dans Avant de commencer.

Appelez le SageMaker point de terminaison

Enfin, spécifiez le client SageMaker Runtime et appelez le SageMaker point de terminaison comme indiqué dans l'extrait de code suivant.

endpoint_name = '<endpoint-name>' runtime_client = boto3.client('sagemaker-runtime') response = runtime_client.invoke_endpoint(EndpointName=endpoint_name, ContentType='text/csv', Body=payload)

Pour plus d'informations sur la configuration du point de terminaison, consultez Déployez des modèles pour une inférence en temps réel.