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.
Déploiement du modèle sur Amazon EC2
Pour obtenir des prévisions, déployez votre modèle sur Amazon EC2 à l'aide d'Amazon SageMaker AI.
Rubriques
Déployez le modèle sur les services d'hébergement SageMaker AI
Pour héberger un modèle via Amazon EC2 à l'aide d'Amazon SageMaker AI, déployez le modèle sur lequel vous avez suivi une formation. Créer et exécuter une tâche d’entraînement
Utilisez la ModelBuilder classe pour créer et déployer votre modèle. ModelBuilderprend en charge le chaînage des ressources, afin que vous puissiez transmettre ModelTrainer directement les informations entraînées à la création et au déploiement de votre modèle.
from sagemaker.serve import ModelBuilder # Build and deploy using resource chaining from the trained model model_builder = ModelBuilder( model=xgb_model_trainer, role_arn=role, instance_type='ml.t2.medium' ) # Build creates a SageMaker Model resource model = model_builder.build() # Deploy creates a SageMaker Endpoint resource endpoint = model_builder.deploy(endpoint_name="xgboost-endpoint")
-
model— L'ModelTrainerobjet entraîné.ModelBuilderchaîne automatiquement les résultats de la formation au déploiement. -
instance_type(str) – Type d'instances que vous souhaitez pour utiliser votre modèle déployé.
Le build() procédé crée une ressource de modèle d' SageMaker IA et deploy() crée une ressource de point de terminaison d' SageMaker IA. Pour plus d'informations, consultez l'SageMaker IA ModelBuilder
endpoint.endpoint_name
Ce point de terminaison reste actif dans l’instance de ML et vous pouvez effectuer des prédictions instantanées à tout moment, sauf si vous l’arrêtez ultérieurement. Copiez le nom de ce point de terminaison et enregistrez-le pour le réutiliser et effectuer des prévisions en temps réel ailleurs dans les instances SageMaker Studio ou SageMaker AI Notebook.
Astuce
Pour en savoir plus sur la compilation et l’optimisation de votre modèle pour le déploiement vers des instances Amazon EC2 ou des appareils en périphérie, consultez Compiler et déployer des modèles avec Neo.
(Facultatif) Réutiliser ou invoquer un point de terminaison existant
Après avoir déployé le modèle sur un terminal, vous pouvez l'invoquer depuis n'importe quel autre bloc-notes ou application à l'aide de la Endpoint classe de sagemaker-core. L'exemple de code suivant montre comment obtenir un point de terminaison existant et faire des prédictions. Re-use le nom du terminal obtenu lors de l'étape de déploiement ci-dessus.
from sagemaker.core.resources import Endpoint endpoint = Endpoint.get(endpoint_name="xgboost-endpoint") # Make a prediction response = endpoint.invoke( body=test_data, content_type="text/csv" ) result = response.body.read().decode('utf-8')
(Facultatif) Faire une prédiction avec la transformation par lots
Au lieu d'héberger un terminal en production, vous pouvez exécuter une tâche d'inférence par lots ponctuelle pour faire des prédictions sur un ensemble de données de test à l'aide de la transformation par lots SageMaker AI. Une fois l'apprentissage de votre modèle terminé, vous pouvez utiliser le transformateur par lots pour lire les données d'entrée d'un compartiment S3 spécifié et effectuer des prédictions.
Pour exécuter une tâche de transformation par lots
Exécutez le code suivant pour convertir les colonnes de fonctions du jeu de données de test en fichier CSV et les télécharger dans le compartiment S3 :
X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')Spécifiez les URI du compartiment S3 d'entrée et de sortie pour la tâche de transformation par lots comme indiqué ci-dessous :
# The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)Créez et exécutez une tâche de transformation par lots.
# Build a model from the trained ModelTrainer model_builder = ModelBuilder(model=xgb_model_trainer, role_arn=role) model = model_builder.build(model_name="xgboost-batch-model") # Create and run the batch transform job from sagemaker.core.resources import TransformJob transform_job = TransformJob.create( model_name=model.model_name, transform_input={ "data_source": { "s3_data_source": { "s3_data_type": "S3Prefix", "s3_uri": batch_input } }, "content_type": "text/csv", "split_type": "Line" }, transform_output={ "s3_output_path": batch_output }, transform_resources={ "instance_type": "ml.m4.xlarge", "instance_count": 1 } ) transform_job.wait()Une fois la tâche de transformation par lots terminée, SageMaker AI crée les données de
test.csv.outprédiction enregistrées dans lebatch_outputchemin, qui doivent être au format suivant :s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. Exécutez la commande suivante AWS CLI pour télécharger les données de sortie de la tâche de transformation par lots :! aws s3 cp {batch_output} ./ --recursiveCela doit créer le fichier
test.csv.outdans le répertoire de travail actuel. Vous pouvez voir les valeurs flottantes qui sont prédites en fonction de la régression logistique de la tâche d’entraînement XGBoost.