Bonnes pratiques d'entraînement de modèle - Amazon Neptune

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.

Bonnes pratiques d'entraînement de modèle

Il y a des choses que vous pouvez faire pour améliorer les performances des modèles Neptune ML.

Choisir la propriété de nœud appropriée

Toutes les propriétés de votre graphe ne sont pas significatives ou pertinentes pour vos tâches de machine learning. Toute propriété non pertinente doit être exclue lors de l'exportation des données.

Voici quelques bonnes pratiques :

  • Faites appel à des experts du domaine pour vous aider à évaluer l'importance des fonctionnalités et la faisabilité de leur utilisation pour les prédictions.

  • Supprimez les fonctionnalités que vous considérez redondantes ou non pertinentes afin de réduire le bruit dans les données et les corrélations superflues.

  • Effectuez une itération au fur et à mesure que vous créez votre modèle. Ajustez les fonctionnalités, les combinaisons de fonctionnalités et les objectifs de réglage au fur et à mesure.

La rubrique Fonctionnalisation du Guide du développeur d'Amazon Machine Learning fournit des instructions supplémentaires relatives à la fonctionnalisation, qui sont pertinentes pour Neptune ML.

Gérer les points de données aberrants

Une aberration est un point de données très différent des autres données. Les données aberrantes peuvent gâcher ou induire en erreur le processus d'entraînement, ce qui peut conduire à un allongement du temps d'entraînement ou à des modèles moins précis. À moins qu'elles soient vraiment importantes, vous devez éliminer les aberrations avant d'exporter les données.

Supprimer les nœuds et les arêtes dupliqués

Les graphes stockés dans Neptune peuvent comporter des doublons de nœuds ou d'arêtes. Ces éléments redondants introduiront du bruit lors de l'entraînement de modèle ML. Éliminez les doublons de nœuds ou d'arêtes avant d'exporter les données.

Régler la structure du graphe

Lorsque le graphe est exporté, vous pouvez modifier la façon dont les fonctionnalités sont traitées et la façon dont le graphe est construit, afin d'améliorer les performances du modèle.

Voici quelques bonnes pratiques :

  • Lorsqu'une propriété d'arête a la signification de catégories d'arête, il est parfois utile de la transformer en types d'arête.

  • La politique de normalisation par défaut utilisée pour une propriété numérique est min-max, mais dans certains cas, d'autres politiques de normalisation fonctionnent mieux. Vous pouvez prétraiter la propriété et modifier la politique de normalisation comme expliqué dans Éléments d'un fichier model-HPO-configuration.json.

  • Le processus d'exportation génère automatiquement des types de fonctionnalité en fonction des types de propriété. Par exemple, il traite les propriétés String comme des fonctionnalités catégorielles et les propriétés Float et Int comme des fonctionnalités numériques. Si nécessaire, vous pouvez modifier le type de fonctionnalité après l'exportation (voir Éléments d'un fichier model-HPO-configuration.json).

Régler les plages d'hyperparamètres et les valeurs par défaut

L'opération de traitement de données déduit des plages de configuration des hyperparamètres à partir du graphe. Si les plages d'hyperparamètres et les valeurs par défaut du modèle généré ne fonctionnent pas correctement pour vos données de graphe, vous pouvez modifier le fichier de configuration HPO afin de créer votre propre stratégie de réglage des hyperparamètres.

Voici quelques bonnes pratiques :

  • Lorsque le graphe devient grand, la taille de la dimension masquée par défaut peut ne pas être suffisante pour contenir toutes les informations. Vous pouvez modifier l'hyperparamètre num-hidden pour contrôler la taille de la dimension masquée.

  • Pour les modèles d'intégration de graphe de connaissances (KGE), vous souhaiterez peut-être modifier le modèle spécifique utilisé en fonction de votre structure de graphe et de votre budget.

    Les modèles TrainsE ont de la difficulté à traiter les relations un-à-plusieurs (1-N), plusieurs-à-un (N-1) et plusieurs-à-plusieurs (N-N). Les modèles DistMult ont du mal à gérer les relations symétriques. RotatE est bon pour modéliser toutes sortes de relations, mais s'avère plus coûteux que TrainsE et DistMult pendant l'entraînement.

  • Dans certains cas, quand l'identification du nœud et les informations sur les fonctionnalités du nœud sont importantes, vous devez utiliser `concat-node-embed` pour indiquer au modèle Neptune ML d'obtenir la représentation initiale d'un nœud en concaténant ses fonctionnalités avec ses intégrations initiales.

  • Lorsque vous obtenez des performances relativement bonnes sur certains hyperparamètres, vous pouvez ajuster l'espace de recherche des hyperparamètres en fonction de ces résultats.

Arrêt anticipé du processus d'entraînement de modèle dans Neptune ML

L'arrêt anticipé peut réduire de manière significative le temps d'entraînement de modèle et les coûts associés sans dégrader les performances de modèle. Il empêche également le surajustement du modèle aux données d'entraînement.

L'arrêt anticipé dépend de mesures régulières des performances du jeu de validation. Initialement, les performances s'améliorent au fur et à mesure de l'entraînement, mais lorsque le modèle commence à être surajusté, elles commencent à décliner à nouveau. La fonctionnalité d'arrêt anticipé identifie le point où le modèle commence à être surajusté et interrompt l'entraînement de modèle à ce stade.

Neptune ML surveille les appels des métriques de validation et compare la métrique de validation la plus récente à la moyenne des métriques de validation des n dernières évaluations, où n est un nombre défini à l'aide du paramètre window-for-early-stop. Dès que la métrique de validation est inférieure à cette moyenne, Neptune ML arrête l'entraînement du modèle et enregistre le meilleur modèle à ce stade.

Vous pouvez contrôler l'arrêt anticipé à l'aide des paramètres suivants :

  • window-for-early-stop : la valeur de ce paramètre est un entier qui spécifie le nombre de scores de validation récents à moyenner pour décider d'un arrêt anticipé. La valeur par défaut est 3.

  • enable-early-stop : utilisez ce paramètre booléen pour désactiver la fonctionnalité d'arrêt anticipé. Par défaut, cette valeur est true.

Arrêt anticipé du processus HPO dans Neptune ML

La fonctionnalité d'arrêt anticipé dans Neptune ML arrête également les tâches d'entraînement qui ne fonctionnent pas correctement par rapport aux autres tâches d'entraînement, à l'aide de la fonctionnalité de démarrage à chaud HPO de SageMaker. Cela peut également réduire les coûts et améliorer la qualité de l'optimisation des hyperparamètres (HPO).

Consultez Exécution d'une tâche de réglage des hyperparamètres avec démarrage à chaud pour obtenir une description de son fonctionnement.

Le démarrage à chaud permet de transmettre les informations apprises à partir des tâches d'entraînement précédentes aux tâches d'entraînement suivantes et offre deux avantages distincts :

  • Tout d'abord, les résultats des tâches d'entraînement précédentes sont utilisés pour sélectionner de bonnes combinaisons d'hyperparamètres à examiner dans la nouvelle tâche de réglage.

  • Ensuite, il permet un arrêt anticipé pour accéder à un plus grand nombre d'exécutions de modèle, ce qui réduit le temps de réglage.

Cette fonctionnalité est activée automatiquement dans Neptune ML et vous permet de trouver un équilibre entre le temps d'entraînement de modèle et ses performances. Si vous êtes satisfait des performances du modèle actuel, vous pouvez utiliser ce modèle. Dans le cas contraire, vous pouvez exécuter davantage d'optimisations HPO démarrées à chaud avec les résultats des exécutions précédentes, afin de découvrir un meilleur modèle.

Bénéficier de services d'assistance professionnels

AWS propose des services de support professionnels pour vous aider à résoudre les problèmes liés à vos projets de machine learning dans Neptune. Si vous êtes bloqué, contactez AWS Support.