XGBoost algorithme avec Amazon SageMaker AI - Amazon SageMaker AI

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.

XGBoost algorithme avec Amazon SageMaker AI

Le XGBoost(eXtreme Gradient Boosting) est une implémentation open source populaire et efficace de l'algorithme des arbres boostés par le gradient. L'amplification du gradient est un algorithme d'apprentissage supervisé qui tente de prédire avec précision une variable cible en combinant plusieurs estimations issues d'un ensemble de modèles plus simples. L' XGBoost algorithme fonctionne bien dans les concours d'apprentissage automatique pour les raisons suivantes :

  • Sa gestion robuste d'une variété de types de données, de relations et de distributions.

  • La variété d'hyperparamètres que vous pouvez ajuster avec précision.

Vous pouvez l'utiliser XGBoost pour les problèmes de régression, de classification (binaire et multiclasse) et de classement.

Vous pouvez utiliser la nouvelle version de l' XGBoost algorithme comme suit :

  • Un algorithme intégré à Amazon SageMaker AI.

  • Un framework pour exécuter des scripts de formation dans vos environnements locaux.

Cette implémentation présente une empreinte mémoire réduite, une meilleure journalisation, une meilleure validation des hyperparamètres et un ensemble de métriques plus important que les versions d'origine. Il fournit un script de formation XGBoost estimator qui exécute un script de formation dans un XGBoost environnement géré. La version actuelle d' SageMaker AI XGBoost est basée sur les XGBoost versions originales 1.0, 1.2, 1.3, 1.5 et 1.7.

Pour plus d'informations sur l' XGBoost algorithme Amazon SageMaker AI, consultez les articles de blog suivants :

Versions prises en charge

  • Mode framework (open source) : 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1

  • Mode algorithme : 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1

Avertissement

En raison de la capacité de calcul requise, la version 1.7-1 d' SageMaker AI n' XGBoost est pas compatible avec les instances GPU de la famille d'instances P2 à des fins d'entraînement ou d'inférence.

Important

Lorsque vous récupérez l'URI de XGBoost l'image SageMaker AI, n'utilisez pas :latest ou :1 pour la balise URI de l'image. Vous devez spécifier l'un des Versions prises en charge pour choisir le XGBoost conteneur SageMaker géré par l'IA avec la version de XGBoost package native que vous souhaitez utiliser. Pour trouver la version du package migrée vers les XGBoost conteneurs SageMaker AI, consultez les chemins de registre Docker et les exemples de code. Choisissez ensuite votre Région AWS et accédez à la section XGBoost (algorithme).

Avertissement

Les versions XGBoost 0.90 sont obsolètes. La prise en charge des mises à jour de sécurité ou des corrections de bogues pour la version XGBoost 0.90 est interrompue. Nous vous recommandons vivement de passer à l' XGBoostune des versions les plus récentes.

Note

XGBoost La version 1.1 n'est pas prise en charge par SageMaker AI. XGBoost 1.1 n'a pas la capacité d'exécuter une prédiction lorsque l'entrée de test comporte moins de fonctionnalités que les données d'apprentissage contenues dans les entrées LIBSVM. Cette fonctionnalité a été rétablie dans la XGBoost version 1.2. Envisagez d'utiliser SageMaker AI XGBoost 1.2-2 ou version ultérieure.

Note

Vous pouvez utiliser la XGBoost version v1.0-1, mais elle n'est pas officiellement prise en charge.

EC2 recommandation d'instance pour l' XGBoostalgorithme

SageMaker L'IA XGBoost prend en charge l'entraînement et l'inférence du processeur et du GPU. Les recommandations relatives aux instances dépendent des besoins de formation et d'inférence, ainsi que de la version de l' XGBoost algorithme. Choisissez l'une des options suivantes pour plus d'informations :

Entraînement

L' XGBoost algorithme d' SageMaker intelligence artificielle prend en charge l'entraînement du processeur et du processeur graphique.

Entraînement CPU

SageMaker AI XGBoost 1.0-1 ou version antérieure uniquement pour les trains utilisant. CPUs Il s'agit d'un algorithme dépendant de la mémoire (par opposition à un algorithme dépendant du calcul). Par conséquent, une instance de calcul à usage général (par exemple, M5) constitue un meilleur choix qu'une instance optimisée pour le calcul (par exemple, C4). De plus, nous vous recommandons d'avoir suffisamment de mémoire totale dans les instances sélectionnées pour contenir les données d'entraînement. Il prend en charge l'utilisation de l'espace disque pour gérer les données qui ne rentrent pas dans la mémoire principale. Cela est dû à la out-of-core fonctionnalité disponible avec le mode de saisie libsvm. Malgré tout, l'écriture des fichiers de cache sur le disque ralentit le temps de traitement de l'algorithme.

Entraînement GPU

SageMaker XGBoost La version 1.2-2 ou ultérieure de l'IA prend en charge l'entraînement au GPU. Malgré des coûts par instance plus élevés, GPUs entraînez-vous plus rapidement, ce qui les rend plus rentables.

SageMaker XGBoost La version 1.2-2 ou ultérieure d'AI prend en charge les familles d'instances GPU P2, P3, G4dn et G5.

SageMaker XGBoost La version 1.7-1 ou ultérieure d'AI prend en charge les familles d'instances GPU P3, G4dn et G5. Notez qu'en raison des exigences en matière de capacité de calcul, la version 1.7-1 ou ultérieure ne prend pas en charge la famille d'instances P2.

Pour tirer parti de l'entraînement au GPU :

  • Spécifiez le type d'instance comme l'une des instances du GPU (par exemple, P3)

  • Définissez l'tree_methodhyperparamètre sur gpu_hist dans votre script existant XGBoost

Entraînement distribué

SageMaker L'IA XGBoost prend en charge les instances de CPU et de GPU pour la formation distribuée.

Entraînement CPU distribué

Pour exécuter l'entraînement CPU sur plusieurs instances, définissez le paramètre instance_count de l'estimateur sur une valeur supérieure à un. Les données d'entrée doivent être divisées entre le nombre total d'instances.

Division des données d'entrée entre les instances

Divisez les données d'entrée en procédant comme suit :

  1. Décomposez les données d'entrée en fichiers plus petits. Le nombre de fichiers doit être au moins égal au nombre d'instances utilisées pour l'entraînement distribué. L'utilisation de plusieurs fichiers plus petits au lieu d'un seul fichier volumineux réduit également le temps de téléchargement des données pour la tâche d'entraînement.

  2. Lorsque vous créez votre TrainingInput, définissez le paramètre de distribution surShardedByS3Key. Ainsi, chaque instance obtient environ 1/n du nombre de fichiers dans S3 si n instances sont spécifiées dans la tâche de formation.

Entraînement GPU distribué

Vous pouvez utiliser l'entraînement distribué avec des instances à un seul GPU ou multi-GPU.

Entraînement distribué avec des instances à un seul GPU

SageMaker XGBoost Les versions 1.2-2 à 1.3-1 d'AI ne prennent en charge que l'entraînement des instances avec un seul GPU. Cela signifie que même si vous sélectionnez une instance multi-GPU, un seul GPU est utilisé par instance.

Vous devez diviser vos données d'entrée entre le nombre total d'instances si :

  • Vous utilisez XGBoost les versions 1.2-2 à 1.3-1.

  • Il n'est pas nécessaire d'utiliser des instances multi-GPU.

Pour de plus amples informations, veuillez consulter Division des données d'entrée entre les instances.

Note

Les versions 1.2-2 à 1.3-1 d' SageMaker AI XGBoost n'utilisent qu'un seul GPU par instance, même si vous choisissez une instance multi-GPU.

Entraînement distribué avec des instances multi-GPU

À partir de la version 1.5-1, SageMaker AI XGBoost propose une formation distribuée sur le GPU avec Dask. Avec Dask, vous pouvez tout utiliser GPUs lorsque vous utilisez une ou plusieurs instances multi-GPU. Dask fonctionne également lors de l'utilisation d'instances à un seul GPU.

Effectuez l'entraînement avec Dask en procédant comme suit :

  1. Vous pouvez omettre le distribution paramètre dans votre TrainingInputou le définir surFullyReplicated.

  2. Lorsque vous définissez vos hyperparamètres, définissez use_dask_gpu_training sur "true".

Important

L'entraînement distribué avec Dask ne prend en charge que les formats d'entrée CSV et Parquet. Si vous utilisez d'autres formats de données tels que LIBSVM ou PROTOBUF, la tâche d'entraînement échoue.

Pour les données Parquet, assurez-vous que les noms des colonnes sont enregistrés sous forme de chaînes. Les colonnes dotées de noms d'un autre type de données ne seront pas chargées.

Important

L'entraînement distribué avec Dask ne prend pas en charge le mode Pipe. Si le mode Pipe est spécifié, la tâche d'entraînement échoue.

Il y a quelques points à prendre en compte lors de l'entraînement à l' SageMaker IA XGBoost avec Dask. Veillez à diviser vos données en fichiers plus petits. Dask lit chaque fichier Parquet comme une partition. Il existe un Dask Worker pour chaque GPU. Par conséquent, le nombre de fichiers doit être supérieur au nombre total de GPUs (nombre d'instances * nombre de GPUs par instance). Le fait d'avoir un très grand nombre de fichiers peut également dégrader les performances. Pour plus d'informations, consultez Bonnes pratiques relatives à Dask (langue française non garantie).

Variations en sortie

L'tree_methodhyperparamètre spécifié détermine l'algorithme utilisé pour l' XGBoost entraînement. Les méthodes arborescentes approx, hist et gpu_hist sont toutes des méthodes approximatives qui utilisent le traçage de croquis (sketching) pour le calcul des quantiles. Pour plus d'informations, consultez la section Méthodes arborescentes dans la XGBoost documentation. Le traçage de croquis est un algorithme approximatif. Par conséquent, vous pouvez vous attendre à des variations dans le modèle en fonction de facteurs tels que le nombre d'applications de travail choisies pour l'entraînement distribué. L'importance de la variation dépend des données.

Inférence

SageMaker L'IA XGBoost prend en charge les instances de CPU et de GPU à des fins d'inférence. Pour plus d'informations sur les types d'instances à inférer, consultez Amazon SageMaker AI ML Instance Types.