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.
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 for Python (Boto3). Les premières lignes définissent :
sagemaker_client
: un objet client SageMaker IA de bas niveau qui facilite l'envoi et la réception de demandes aux AWS services.sagemaker_role
: variable de chaîne avec le rôle SageMaker AI IAM Amazon Resource Name (ARN).aws_region
: variable de chaîne avec le nom de votre AWS région.
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 XGBoost modèle 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 XGBoost intégrée :
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 avecCreateModel
. 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éemodel_name
).ExecutionRoleArn
: le nom de ressource Amazon (ARN) du rôle IAM qu'Amazon SageMaker AI peut assumer pour accéder aux artefacts du modèle et aux images Docker à des fins de déploiement sur des instances de calcul ML ou pour des 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 CreateModel
description dans le guide de référence des SageMaker API pour obtenir la liste complète des paramètres d'API.
Si vous utilisez un conteneur fourni par l' SageMaker IA, vous pouvez augmenter le délai d'expiration du serveur de modèles et la taille de la charge utile des valeurs par défaut aux maximums pris en charge par le framework en définissant des variables d'environnement au cours de 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 définir les variables d'environnement d'un conteneur d' PyTorch inférence en fonction TorchServe de.
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.
Framework | 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 le MMS) |
'MMS_MAX_REQUEST_SIZE' : '1000000000' 'MMS_MAX_RESPONSE_SIZE' : '1000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT' : '900' |
HuggingFace Conteneur d'inférence (basé sur le MMS) |
'MMS_MAX_REQUEST_SIZE' : '2000000000' 'MMS_MAX_RESPONSE_SIZE' : '2000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT' : '900' |