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.
Entraînement d’un modèle
Dans cette étape, vous choisissez un algorithme d’entraînement et exécutez une tâche d’entraînement pour le modèle. Le SDK Amazon SageMaker Python
Choisir l’algorithme d’entraînement
Pour choisir le bon algorithme pour votre jeu de données, vous devez généralement évaluer différents modèles afin de trouver les modèles les plus adaptés à vos données. Par souci de simplicité, l'algorithme Algorithme XGBoost avec Amazon AI SageMaker intégré à l' SageMaker IA est utilisé tout au long de ce didacticiel sans évaluation préalable des modèles.
Astuce
Si vous souhaitez que l' SageMaker IA trouve un modèle approprié pour votre ensemble de données tabulaires, utilisez Amazon SageMaker Autopilot qui automatise une solution d'apprentissage automatique. Pour de plus amples informations, veuillez consulter SageMaker Pilote automatique.
Créer et exécuter une tâche d’entraînement
Après avoir déterminé le modèle à utiliser, commencez à créer un poste de formation. Ce didacticiel utilise l'algorithme intégré XGBoost.
Pour exécuter une tâche d’entraînement du modèle
-
Importez le SDK Amazon SageMaker Python
et commencez par récupérer les informations de base de votre session d' SageMaker IA en cours. from sagemaker.core.helper.session_helper import Session, get_execution_role sagemaker_session = Session() region = sagemaker_session.boto_region_name print(f"AWS Region: {region}") role = get_execution_role() print(f"RoleArn: {role}")Note
Vérifiez la version du SDK SageMaker Python en exécutant
sagemaker.__version__. Ce tutoriel est basé sursagemaker>=3.0. Si le kit SDK est obsolète, installez la dernière version en exécutant la commande suivante :! pip install -qU sagemakerSi vous exécutez cette installation sur vos instances SageMaker Studio ou Notebook existantes, vous devez actualiser manuellement le noyau pour terminer l'application de la mise à jour de version.
Cela renvoie les informations suivantes :
-
region— La AWS région actuelle dans laquelle l'instance de bloc-notes SageMaker AI est exécutée. -
role: le rôle IAM utilisé par l’instance de bloc-notes.
-
-
Créez une configuration d'entraînement et définissez des hyperparamètres pour l'algorithme XGBoost.
Créez un
ModelTraineren utilisant lasagemaker.train.ModelTrainerclasse avec des hyperparamètres transmis directement dans le constructeur. Dans l'exemple de code suivant, le ModelTrainer est nomméxgb_model_trainer.from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, OutputDataConfig from sagemaker.core import image_uris s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container = image_uris.retrieve("xgboost", region, "1.2-1") print(container) compute = Compute( instance_type='ml.m4.xlarge', instance_count=1, volume_size_in_gb=5 ) xgb_model_trainer = ModelTrainer( training_image=container, role=role, compute=compute, output_data_config=OutputDataConfig(s3_output_path=s3_output_location), hyperparameters={ "max_depth": "5", "eta": "0.2", "gamma": "4", "min_child_weight": "6", "subsample": "0.7", "objective": "binary:logistic", "num_round": "1000" } )Pour construire l' SageMaker IA
ModelTrainer, spécifiez les paramètres suivants :-
training_image: spécifiez l’URI de l’image du conteneur d’entraînement. Dans cet exemple, l' SageMaker URI du conteneur de formation AI XGBoost est spécifié à l'aide de.image_uris.retrieve -
role— Le rôle Gestion des identités et des accès AWS (IAM) que l' SageMaker IA utilise pour effectuer des tâches en votre nom (par exemple, lire les résultats de formation, appeler des artefacts de modèle depuis Amazon S3 et écrire des résultats de formation sur Amazon S3). -
compute— Objet deComputeconfiguration qui spécifie le type et le nombre d'instances de calcul Amazon EC2 ML à utiliser pour l'apprentissage des modèles. Dans le cadre de cet exercice d'entraînement, vous utilisez une instanceml.m4.xlargeunique, qui dispose de 4 processeurs, de 16 Go de mémoire, d'un stockage Amazon Elastic Block Store (Amazon EBS) et de performances réseau élevées. Pour plus d’informations sur les types d’instance de calcul EC2 pris en charge, consultez Types d’instance Amazon EC2. Pour plus d'informations sur la facturation, consultez la section SageMaker Tarification Amazon . -
hyperparameters— Un dictionnaire des hyperparamètres pour l'algorithme d'entraînement. Toutes les valeurs doivent être des chaînes.
Astuce
Si vous souhaitez exécuter un entraînement distribué sur des modèles d'apprentissage profond de grande taille, tels que des modèles de réseaux neuronaux convolutifs (CNN) et de traitement du langage naturel (NLP), utilisez SageMaker AI Distributed pour le parallélisme des données ou le parallélisme des modèles. Pour de plus amples informations, veuillez consulter Formation distribuée dans Amazon SageMaker AI.
Astuce
Vous pouvez également régler les hyperparamètres à l'aide de la fonction d'optimisation des hyperparamètres SageMaker AI. Pour de plus amples informations, veuillez consulter Réglage automatique du modèle avec SageMaker IA.
-
-
Configurez la saisie des données pour l'entraînement.
Utilisation de la classe
InputDatapour configurer un flux d'entrée de données pour l'entraînement. L'exemple de code suivant montre comment configurer des objetsInputDatapour utiliser les jeux de données d'entraînement et de validation que vous avez chargés sur Amazon S3 dans la section Diviser le jeu de données en jeux de données d'entraînement, de validation et de test.from sagemaker.train.configs import InputData train_input = InputData( channel_name="train", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/train.csv") ) validation_input = InputData( channel_name="validation", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv") ) -
Commencez la formation sur les modèles.
Pour démarrer l'entraînement des modèles, appelez la
trainméthode du formateur avec les ensembles de données d'entraînement et de validation. Par défaut, latrainméthode affiche les journaux de progression et attend la fin de l'entraînement.xgb_model_trainer.train(input_data_config=[train_input, validation_input])Pour plus d’informations sur l’entraînement des modèles, consultez Entraînez un mannequin avec Amazon SageMaker. Cette tâche d'entraînement de tutoriel peut prendre jusqu'à 10 minutes.
Une fois la formation terminée, vous pouvez télécharger un rapport de formation XGBoost et un rapport de profilage générés par SageMaker Debugger. Le rapport d'entraînement XGBoost vous offre des informations sur la progression et les résultats de l'entraînement, telles que la fonction de perte en lien avec l'itération, l'importance de la fonction, la matrice de confusion, les courbes de précision et d'autres résultats statistiques de l'entraînement. Par exemple, vous pouvez trouver la courbe de perte suivante à partir du rapport d’entraînement XGBoost qui indique clairement qu’il y a un problème de surajustement.
Exécutez le code suivant pour spécifier l’URI du compartiment S3 dans lequel les rapports d’entraînement de Debugger sont générés et vérifiez si les rapports existent.
training_job = xgb_model_trainer._latest_training_job rule_output_path = training_job.output_data_config.s3_output_path + "/" + training_job.training_job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursiveTéléchargez les rapports d'entraînement et de profilage Debugger XGBoost dans l'espace de travail actuel :
! aws s3 cp {rule_output_path} ./ --recursiveExécutez le script IPython suivant pour obtenir le lien de fichier du rapport d'entraînement XGBoost :
from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))Le script IPython suivant renvoie le lien de fichier du rapport de profilage Debugger qui affiche les résumés et les détails de l'utilisation des ressources d'instance EC2, des résultats de détection de goulot d'étranglement système et des résultats de profilage d'opération de Python :
# Note: In V3, debugger rule outputs can be accessed via the SageMaker console # or the boto3 DescribeTrainingJob API (DebugRuleEvaluationStatuses field). # Example using boto3: # import boto3 # sm = boto3.client("sagemaker") # resp = sm.describe_training_job(TrainingJobName=training_job.training_job_name) # rule_statuses = resp["DebugRuleEvaluationStatuses"] profiler_report_name = "ProfilerReport-1234567890" display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))Astuce
Si les rapports HTML n'affichent pas de graphiques dans la JupyterLab vue, vous devez sélectionner Trust HTML en haut des rapports.
Pour identifier les problèmes d'entraînement, tels que le surajustement, la disparition de dégradés et d'autres problèmes qui empêchent la convergence de votre modèle, utilisez SageMaker Debugger et prenez des mesures automatisées lors du prototypage et de la formation de vos modèles de machine learning. Pour de plus amples informations, veuillez consulter SageMaker Débogueur Amazon. Pour obtenir une analyse complète des paramètres du modèle, consultez l'exemple de bloc-notes Explainability with Amazon SageMaker Debugger
.
Vous disposez désormais d'un modèle XGBoost entraîné. SageMaker AI stocke le modèle d'artefact dans votre compartiment S3. Pour trouver l'emplacement de l'artefact du modèle, exécutez le code suivant pour imprimer l'model_dataattribut :
xgb_model_trainer._latest_training_job.model_artifacts.s3_model_artifacts
Astuce
Pour mesurer les biais qui peuvent survenir à chaque étape du cycle de vie du machine learning (collecte de données, formation et réglage des modèles, et surveillance des modèles ML déployés à des fins de prédiction), utilisez SageMaker Clarify. Pour de plus amples informations, veuillez consulter Explicabilité du modèle. Pour un exemple de bout en bout, consultez le bloc-notes d'