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.
Étape 4 : entraîner un modèle
Amazon SageMaker Python SDK
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. Pour des raisons de simplicité, l'algorithme SageMaker Utilisez l'algorithme XGBoost avec Amazon SageMaker intégré est utilisé tout au long de ce didacticiel sans qu'il soit nécessaire de pré-évaluer les modèles.
Astuce
Si vous souhaitez trouver un modèle adapté SageMaker à votre jeu de données tabulaire, 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 SageMaker estimateur pour l'entraînement. Ce didacticiel utilise l'algorithme XGBoost intégré pour l'estimateur SageMaker générique.
Pour exécuter une tâche d'entraînement du modèle
-
Importez Amazon SageMaker Python SDK
et commencez par récupérer les informations de base de votre SageMaker session en cours. import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))
Cela renvoie les informations suivantes :
-
region
— Le courant AWS Région dans laquelle l'instance du SageMaker bloc-notes est exécutée. -
role
— IAM Rôle utilisé par l'instance de bloc-notes.
Note
Vérifiez la SDK version de SageMaker Python en exécutant
sagemaker.__version__
. Ce tutoriel est basé sursagemaker>=2.20
. Si elle SDK n'est plus à jour, installez la dernière version en exécutant la commande suivante :! pip install -qU sagemaker
Si vous exécutez cette installation dans vos instances SageMaker Studio ou Notebook existantes, vous devez actualiser manuellement le noyau pour terminer l'application de la mise à jour de version.
-
-
Créez un XGBoost estimateur à l'aide de la
sagemaker.estimator.Estimator
classe. Dans l'exemple de code suivant, l'XGBoostestimateur est nommé.xgb_model
from sagemaker.debugger import Rule, ProfilerRule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[ Rule.sagemaker(rule_configs.create_xgboost_report()), ProfilerRule.sagemaker(rule_configs.ProfilerReport()) ] )
Pour construire l' SageMaker estimateur, spécifiez les paramètres suivants :
-
image_uri
— Spécifiez l'image du conteneur d'entraînementURI. Dans cet exemple, le conteneur d' SageMaker XGBoostentraînement URI est spécifié à l'aide desagemaker.image_uris.retrieve
. -
role
— Le AWS Identity and Access Management (IAM) rôle SageMaker utilisé pour effectuer des tâches en votre nom (par exemple, lire les résultats de formation, appeler les artefacts du modèle depuis Amazon S3 et écrire les résultats de formation sur Amazon S3). -
instance_count
etinstance_type
— Le type et le nombre d'instances de calcul Amazon EC2 ML à utiliser pour l'entraînement des modèles. Pour cet exercice de formation, vous utilisez uneml.m4.xlarge
instance unique dotée de 4 CPUs ou 16 Go de mémoire, d'un espace de stockage Amazon Elastic Block Store (AmazonEBS) et d'une performance réseau élevée. Pour plus d'informations sur les types d'instances de EC2 calcul, consultez Amazon EC2 Instance Types. Pour plus d'informations sur la facturation, consultez les SageMaker tarifs Amazon . -
volume_size
— La taille, en Go, du volume de EBS stockage à associer à l'instance de formation. Elle doit être suffisamment importante pour stocker des données d'entraînement si vous utilisez le modeFile
(le modeFile
est activé par défaut). Si vous ne spécifiez pas ce paramètre, il est défini par défaut sur 30. -
output_path
— Le chemin d'accès au compartiment S3 où sont SageMaker stockés l'artefact du modèle et les résultats d'entraînement. -
sagemaker_session
— L'objet de session qui gère les interactions avec les SageMaker API opérations et autres AWS service utilisé par le poste de formation. -
rules
— Spécifiez une liste de règles intégrées au SageMaker Debugger. Dans cet exemple, lacreate_xgboost_report()
règle crée un XGBoost rapport qui fournit des informations sur la progression et les résultats de l'entraînement, et laProfilerReport()
règle crée un rapport concernant l'utilisation des ressources EC2 informatiques. Pour de plus amples informations, veuillez consulter SageMaker Rapport de formation du Debugger XGBoost.
Astuce
Si vous souhaitez exécuter un entraînement distribué sur des modèles d'apprentissage profond de grande taille, tels que les réseaux neuronaux convolutifs (CNN) et les modèles de traitement du langage naturel (), utilisez SageMaker Distributed pour le parallélisme des données ou le parallélisme des modèles. NLP Pour de plus amples informations, veuillez consulter Formation distribuée sur Amazon SageMaker.
-
-
Définissez les hyperparamètres de l'XGBoostalgorithme en appelant la
set_hyperparameters
méthode de l'estimateur. Pour une liste complète des XGBoost hyperparamètres, voirHyperparamètres XGBoost.xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )
Astuce
Vous pouvez également régler les hyperparamètres à l'aide de la fonction d'optimisation des SageMaker hyperparamètres. Pour de plus amples informations, veuillez consulter Effectuez le réglage automatique du modèle avec SageMaker.
-
Utilisation de la classe
TrainingInput
pour configurer un flux d'entrée de données pour l'entraînement. L'exemple de code suivant montre comment configurer des objetsTrainingInput
pour 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.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" )
-
Pour démarrer l'entraînement du modèle, appelez la méthode
fit
de l'estimateur avec les jeux de données d'entraînement et de validation. En définissantwait=True
, la méthodefit
affiche les journaux de progression et attend que l'entraînement se termine.xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)
Pour de plus amples informations sur l'entraînement de modèle, veuillez consulter Entraînez un modèle 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 XGBoost formation et un rapport de profilage générés par SageMaker Debugger. Le rapport d'XGBoostentraînement vous donne un aperçu de la progression et des résultats de l'entraînement, tels que la fonction de perte par rapport à l'itération, l'importance des fonctionnalités, la matrice de confusion, les courbes de précision et les autres résultats statistiques de l'entraînement. Par exemple, vous pouvez trouver la courbe de perte suivante dans le rapport d'XGBoostentraînement, qui indique clairement qu'il existe un problème de surajustement.
Exécutez le code suivant pour spécifier le compartiment S3 dans URI lequel les rapports d'entraînement du débogueur sont générés et vérifiez si les rapports existent.
rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive
Téléchargez les rapports de XGBoost formation et de profilage du Debugger dans l'espace de travail actuel :
! aws s3 cp {rule_output_path} ./ --recursive
Exécutez le IPython script suivant pour obtenir le lien vers le fichier du rapport de XGBoost formation :
from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))
Le IPython script suivant renvoie le lien du fichier du rapport de profilage du Debugger qui présente des résumés et des détails sur l'utilisation des ressources de l'EC2instance, les résultats de détection des goulots d'étranglement du système et les résultats du profilage des opérations Python :
profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
Astuce
Si les HTML rapports n'affichent pas de diagrammes 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 des dégradés et les autres problèmes qui empêchent la convergence de votre modèle, utilisez SageMaker Debugger et effectuez des actions automatisées lors du prototypage et de l'entraînement de vos modèles ML. Pour de plus amples informations, veuillez consulter Utiliser Amazon SageMaker Debugger pour déboguer et améliorer les performances du modèle. Pour obtenir une analyse complète des paramètres du modèle, consultez l'exemple de bloc-notes Explainability with Amazon SageMaker Debugger
.
Vous avez maintenant un XGBoost modèle entraîné. SageMaker stocke l'artefact du modèle dans votre compartiment S3. Pour trouver l'emplacement de l'artefact du modèle, exécutez le code suivant pour imprimer l'attribut model_data de l'estimateur xgb_model
:
xgb_model.model_data
Astuce
Pour mesurer les biais qui peuvent survenir à chaque étape du cycle de vie du machine learning (collecte de données, apprentissage et réglage des modèles, surveillance des modèles de machine learning déployés à des fins de prédiction), utilisez SageMaker Clarify. Pour de plus amples informations, veuillez consulter Explicabilité du modèle. Pour un end-to-end exemple, consultez l'exemple de bloc-notes Équité et explicabilité avec SageMaker Clarify