Création d'un modèle - Amazon SageMaker AI

Création d'un modèle

L'exemple suivant illustre la création d'un groupe de modèles à l'aide du kit AWS SDK pour Python (Boto3). Les premières lignes définissent :

  • sagemaker_client : un objet client SageMaker AI de bas niveau qui facilite l’envoi et la réception de demandes à des services AWS.

  • sagemaker_role : une variable de chaîne avec l’Amazon Resource Name (ARN) du rôle IAM SageMaker AI.

  • aws_region : une variable de chaîne portant le nom de votre région AWS.

import boto3 # Specify your AWS Region aws_region='<aws_region>' # Create a low-level SageMaker service client. sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Role to give SageMaker permission to access AWS services. sagemaker_role= "arn:aws:iam::<account>:role/*"

Ensuite, spécifiez l'emplacement du modèle pré-entraîné stocké dans Amazon S3. Dans cet exemple, nous utilisons un modèle XGBoost préentraîné nommé demo-xgboost-model.tar.gz. L'URI Amazon S3 complet est stocké dans une variable de chaîne model_url :

#Create a variable w/ the model S3 URI s3_bucket = '<your-bucket-name>' # Provide the name of your S3 bucket bucket_prefix='saved_models' model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz" #Specify S3 bucket w/ model model_url = f"s3://{s3_bucket}/{model_s3_key}"

Spécifiez un conteneur principal. Pour les conteneurs primaires, vous spécifiez l'image Docker contenant le code d'inférence, les artefacts (des entraînements précédents) et une carte d'environnement personnalisée que le code d'inférence utilise lorsque vous déployez le modèle pour les prédictions.

Dans cet exemple, nous spécifions une image de conteneur d'algorithme intégré XGBoost :

from sagemaker import image_uris # Specify an AWS container image. container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')

Créez un modèle dans Amazon SageMaker AI avec CreateModel. Spécifiez les paramètres suivants :

  • ModelName : nom de votre modèle (dans cet exemple, il est stocké sous la forme d'une variable de chaîne appelée model_name).

  • ExecutionRoleArn : l’Amazon Resource Name (ARN) du rôle IAM qu’Amazon SageMaker AI peut endosser pour accéder aux artefacts de modèle et aux images Docker pour le déploiement sur les instances de calcul ML ou pour les tâches de transformation par lots.

  • PrimaryContainer : l'emplacement de l'image Docker principale contenant le code d'inférence, les artefacts associés et les cartes d'environnement personnalisées que le code d'inférence utilise lorsque le modèle est déployé pour les prédictions.

model_name = '<The_name_of_the_model>' #Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url, })

Consultez la description CreateModel dans le Guide de références des API SageMaker pour obtenir la liste complète des paramètres d’API.

Si vous utilisez un conteneur fourni par SageMaker AI, vous pouvez modifier les valeurs par défaut en augmentant les tailles de données utiles et le délai d’expiration du serveur de modèle jusqu’aux valeurs maximales prises en charge par le cadre en définissant les variables d’environnement dans cette étape. Il se peut que vous ne puissiez pas tirer parti du délai d'expiration maximal et des tailles de charge utile maximales pris en charge par l'inférence asynchrone si vous ne définissez pas explicitement ces variables. L'exemple suivant montre comment vous pouvez définir les variables d'environnement pour un conteneur d'inférence PyTorch basé sur TorchServe.

model_name = '<The_name_of_the_model>' #Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url, 'Environment': { 'TS_MAX_REQUEST_SIZE': '100000000', 'TS_MAX_RESPONSE_SIZE': '100000000', 'TS_DEFAULT_RESPONSE_TIMEOUT': '1000' }, })

Une fois que vous avez terminé de créer votre point de terminaison, vous devez vérifier que vous avez correctement défini les variables d'environnement en les imprimant depuis votre script inference.py. Le tableau suivant répertorie les variables d'environnement pour plusieurs frameworks, que vous pouvez définir pour modifier les valeurs par défaut.

Cadre Variables d’environnement

PyTorch 1.8 (basé sur TorchServe)

'TS_MAX_REQUEST_SIZE' : '100000000'

'TS_MAX_RESPONSE_SIZE' : '100000000'

'TS_DEFAULT_RESPONSE_TIMEOUT' : '1000'

PyTorch 1.4 (basé sur MMS)

'MMS_MAX_REQUEST_SIZE' : '1000000000'

'MMS_MAX_RESPONSE_SIZE' : '1000000000'

'MMS_DEFAULT_RESPONSE_TIMEOUT' : '900'

Conteneur d'inférence Hugging Face (basé sur MMS)

'MMS_MAX_REQUEST_SIZE' : '2000000000'

'MMS_MAX_RESPONSE_SIZE' : '2000000000'

'MMS_DEFAULT_RESPONSE_TIMEOUT' : '900'