Liste des règles intégrées Debugger - Amazon SageMaker

Liste des règles intégrées Debugger

Utilisez les règles intégrées Debugger fournies par Amazon SageMaker Debugger et analysez les tenseurs émis lors de l'entraînement de vos modèles. Les règles intégrées de Debugger contrôlent diverses conditions communes qui sont essentielles à la réussite d'une tâche d'entraînement. Vous pouvez appeler les règles intégrées à l'aide du kit SDK Python Amazon SageMaker ou des opérations d'API SageMaker de bas niveau. Selon les cadres de deep learning que vous choisissez, il existe quatre domaines de validité pour les règles intégrées, comme le montre le tableau suivant.

Note

Le nombre maximal de règles intégrées pour une tâche d'entraînement est de 20 pour ProfilerRule et de 20 pour Rule. SageMaker Debugger gère entièrement les règles intégrées et analyse votre tâche d'entraînement en parallèle. Pour de plus amples informations sur la facturation, veuillez consulter la section Amazon SageMaker Studio est disponible sans frais supplémentaires de la page Tarification d'Amazon SageMaker.

Important

Pour utiliser les nouvelles fonctions de Debugger, vous devez mettre à niveau le kit SDK Python SageMaker et la bibliothèque cliente SMDebug. Dans votre noyau iPython, bloc-notes Jupyter ou environnement JupyterLab, exécutez le code suivant pour installer les dernières versions des bibliothèques et redémarrer le noyau.

import sys import IPython !{sys.executable} -m pip install -U sagemaker smdebug IPython.Application.instance().kernel.do_shutdown(True)

Règle de profilage Debugger

Les règles suivantes sont les règles intégrées de Debugger qui peuvent être appelées à l'aide de la méthode de classe ProfilerRule.sagemaker.

Règles intégrées Debugger pour la génération de rapports de profilage
Domaine de validité Règles intégrées
Rapport de profilage pour toute tâche d'entraînement SageMaker
Règles intégrées Debugger pour la surveillance de l'utilisation des ressources matérielles du système (métriques système)
Domaine de validité Règles intégrées
Règles génériques de surveillance système pour toute tâche d'entraînement SageMaker
Règles intégrées Debugger pour le profilage des métriques de cadre
Domaine de validité Règles intégrées
Règles de profilage pour les cadres de deep learning (TensorFlow et PyTorch)

Règle Debugger

Les règles suivantes sont les règles intégrées Debugger qui peuvent être appelées à l'aide de la méthode de classe Rule.sagemaker.

Règles intégrées Debugger pour la génération de rapports d'entraînement
Domaine de validité Règles intégrées
Rapport d'entraînement pour les tâches d'entraînement SageMaker XGBoost
Règles intégrées Debugger pour le débogage des données d'entraînement du modèle (tenseurs de sortie)
Domaine de validité Règles intégrées
Cadres de deep learning (TensorFlow, Apache MXNet et PyTorch)
Cadres de deep learning (TensorFlow, MXNet et PyTorch) et algorithme XGBoost
Applications de deep learning
Algorithme XGBoost

Pour utiliser les règles intégrées avec les valeurs de paramètre par défaut, utilisez le format de configuration suivant :

from sagemaker.debugger import Rule, ProfilerRule, rule_configs rules = [ ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_1()), ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_2()), ... ProfilerRule.sagemaker(rule_configs.BuiltInRuleName_n()), Rule.sagemaker(rule_configs.built_in_rule_name_1()), Rule.sagemaker(rule_configs.built_in_rule_name_2()), ... Rule.sagemaker(rule_configs.built_in_rule_name_n()) ]

Pour utiliser les règles intégrées avec la personnalisation des valeurs des paramètres, utilisez le format de configuration suivant :

from sagemaker.debugger import Rule, ProfilerRule, rule_configs rules = [ ProfilerRule.sagemaker( base_config=rule_configs.BuiltInRuleName(), rule_parameters={ "key": "value" } ) Rule.sagemaker( base_config=rule_configs.built_in_rule_name(), rule_parameters={ "key": "value" } collections_to_save=[ CollectionConfig( name="tensor_collection_name", parameters={ "key": "value" } ) ] ) ]

Pour voir les clés disponibles pour le paramètre rule_parameters, consultez les tables de description des paramètres.

Des exemples de codes de configuration de règle sont fournis pour chaque règle intégrée sous les tables de description des paramètres.

ProfilerReport

La règle ProfilerReport appelle toutes les règles intégrées pour la surveillance et le profilage. Elle crée un rapport de profilage et le met à jour lorsque les règles individuelles sont déclenchées. Vous pouvez télécharger un rapport de profilage complet pendant qu'une tâche d'entraînement est en cours d'exécution ou une fois la tâche d'entraînement finie. Vous pouvez ajuster les valeurs des paramètres de règle pour personnaliser la sensibilité des règles intégrées de surveillance et de profilage. L'exemple de code suivant montre le format de base permettant d'ajuster les paramètres de règle intégrée via la règle ProfilerReport.

rules=[ ProfilerRule.sagemaker( rule_configs.ProfilerReport( <BuiltInRuleName>_<parameter_name> = value ) ) ]

Si vous déclenchez cette règle ProfilerReport sans aucun paramètre personnalisé, comme dans l'exemple de code suivant, la règle ProfilerReport déclenche toutes les règles intégrées pour la surveillance et le profilage avec leurs valeurs de paramètre par défaut.

rules=[ProfilerRule.sagemaker(rule_configs.ProfilerReport())]

L'exemple de code suivant montre comment spécifier et ajuster la le paramètre cpu_threshold de la règle CPUBottleneck et le paramètre threshold de la règle IOBottleneck.

rules=[ ProfilerRule.sagemaker( rule_configs.ProfilerReport( CPUBottleneck_cpu_threshold = 90, IOBottleneck_threshold = 90 ) ) ]

Description des paramètres de la règle OverallSystemUsage
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

<BuiltInRuleName>_<parameter_name>

Paramètre personnalisable pour ajuster les seuils d'autres règles de surveillance et de profilage intégrées.

Facultatif

Valeur par défaut : None

BatchSize

La règle BatchSize permet de détecter si le GPU est sous-utilisé en raison d'une petite taille de lot. Pour détecter ce problème, cette règle surveille l'utilisation moyenne du CPU, l'utilisation du GPU et l'utilisation de la mémoire GPU. Si l'utilisation du CPU, du GPU et de la mémoire GPU est faible en moyenne, cela peut indiquer que la tâche d'entraînement peut soit s'exécuter sur un type d'instance plus petit, soit s'exécuter avec une taille de lot plus grande. Cette analyse ne fonctionne pas pour les cadres qui surallouent fortement la mémoire. Toutefois, l'augmentation de la taille du lot peut entraîner des goulets d'étranglement dans le traitement ou le chargement des données, car le prétraitement des données est plus long à chaque itération.

Description des paramètres de la règle BatchSize
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

cpu_threshold_p95

Définit le seuil du 95e quantile d'utilisation du CPU en pourcentage.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 70 (en pourcentage)

gpu_threshold_p95

Définit le seuil du 95e quantile d'utilisation du GPU en pourcentage.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 70 (en pourcentage)

gpu_memory_threshold_p95

Définit le seuil du 95e quantile d'utilisation de la mémoire GPU en pourcentage.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 70 (en pourcentage)

patience

Définit le nombre de points de données à ignorer jusqu'à ce que la règle lance l'évaluation. Les premières étapes des tâches d'entraînement affichent généralement un volume élevé de processus de données, c'est pourquoi vous devez faire patienter la règle et l'empêcher d'être invoquée trop tôt en spécifiant un nombre de données de profilage avec ce paramètre.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 100

window

Taille de la fenêtre pour le calcul des quantiles.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 500

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

CPUBottleneck

La règle CPUBottleneck permet de détecter si le GPU est sous-utilisé en raison de goulets d'étranglement du CPU. La règle renvoie la valeur True si le nombre de goulets d'étranglement du CPU dépasse un seuil prédéfini.

Description des paramètres de la règle CPUBottleneck
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold

Définit le seuil de la proportion de temps limité par rapport au temps d'entraînement total. Si la proportion dépasse le pourcentage spécifié pour le paramètre de seuil, le statut de la règle passe à True.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 50 (en pourcentage)

gpu_threshold

Seuil qui définit une faible utilisation du GPU.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 10 (en pourcentage)

cpu_threshold

Seuil qui définit une utilisation élevée du CPU.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 90 (en pourcentage)

patience

Définit le nombre de points de données à ignorer jusqu'à ce que la règle lance l'évaluation. Les premières étapes des tâches d'entraînement affichent généralement un volume élevé de processus de données, c'est pourquoi vous devez faire patienter la règle et l'empêcher d'être invoquée trop tôt en spécifiant un nombre de données de profilage avec ce paramètre.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 100

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

GPUMemoryIncrease

La règle GPUMemoryIncrease permet de détecter une augmentation importante de l'utilisation de la mémoire sur les GPU.

Description des paramètres de la règle GPUMemoryIncrease
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

increase

Définit le seuil pour l'augmentation absolue de la mémoire.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 10 (en pourcentage)

patience

Définit le nombre de points de données à ignorer jusqu'à ce que la règle lance l'évaluation. Les premières étapes des tâches d'entraînement affichent généralement un volume élevé de processus de données, c'est pourquoi vous devez faire patienter la règle et l'empêcher d'être invoquée trop tôt en spécifiant un nombre de données de profilage avec ce paramètre.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 100

window

Taille de la fenêtre pour le calcul des quantiles.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 500

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

IOBottleneck

Cette règle permet de détecter si le GPU est sous-utilisé en raison de goulets d'étranglement des I/O de données. La règle renvoie la valeur True si le nombre de goulets d'étranglement d'I/O dépasse un seuil prédéfini.

Description des paramètres de la règle IOBottleneck
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold Définit le seuil pour que la règle renvoie True.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 50 (en pourcentage)

gpu_threshold

Seuil qui définit quand le GPU est considéré comme sous-utilisé.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 70 (en pourcentage)

io_threshold Seuil qui définit un temps d'attente d'I/O élevé.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 50 (en pourcentage)

patience Définit le nombre de points de données à ignorer jusqu'à ce que la règle lance l'évaluation. Les premières étapes des tâches d'entraînement affichent généralement un volume élevé de processus de données, c'est pourquoi vous devez faire patienter la règle et l'empêcher d'être invoquée trop tôt en spécifiant un nombre de données de profilage avec ce paramètre.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 1000

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

LoadBalancing

La règle LoadBalancing permet de détecter les problèmes d'équilibrage d'application entre plusieurs GPU.

Description des paramètres de la règle LoadBalancing
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold

Définit le pourcentage d'application.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 0.5 (proportion sans unité)

patience

Définit le nombre de points de données à ignorer jusqu'à ce que la règle lance l'évaluation. Les premières étapes des tâches d'entraînement affichent généralement un volume élevé de processus de données, c'est pourquoi vous devez faire patienter la règle et l'empêcher d'être invoquée trop tôt en spécifiant un nombre de données de profilage avec ce paramètre.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 10

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

LowGPUUtilization

La règle LowGPUUtilization permet de détecter si l'utilisation du GPU est faible ou si elle subit des fluctuations. Ceci est vérifié pour chaque GPU sur chaque composant. La règle renvoie True si le 95e quantile est inférieur à threshold_p95, ce qui indique une sous-utilisation. La règle renvoie True si le 95e quantile est supérieur à threshold_p95 et le 5e quantile est inférieur à threshold_p5, ce qui indique des fluctuations.

Description des paramètres de la règle LowGPUUtilization
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold_p95

Seuil pour le 95e quantile au-dessous duquel le GPU est considéré comme sous-utilisé.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 70 (en pourcentage)

threshold_p5 Seuil pour le 5e quantile. La valeur par défaut est 10 %.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 10 (en pourcentage)

patience

Définit le nombre de points de données à ignorer jusqu'à ce que la règle lance l'évaluation. Les premières étapes des tâches d'entraînement affichent généralement un volume élevé de processus de données, c'est pourquoi vous devez faire patienter la règle et l'empêcher d'être invoquée trop tôt en spécifiant un nombre de données de profilage avec ce paramètre.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 1000

window

Taille de la fenêtre pour le calcul des quantiles.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 500

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

OverallSystemUsage

La règle OverallSystemUsage mesure l'utilisation globale du système par composant master. Actuellement, la règle agrège uniquement les valeurs par nœud et calcule leurs percentiles.

Description des paramètres de la règle OverallSystemUsage
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

MaxInitializationTime

La règle MaxInitializationTime permet de détecter si le lancement de l'entraînement prend trop de temps. La règle attend que la première étape soit disponible.

Description des paramètres de la règle MaxInitializationTime
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold

Définit le seuil en minutes à attendre pour que la première étape devienne disponible.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 20 (en minutes)

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

OverallFrameworkMetrics

La règle OverallFrameworkMetrics récapitule le temps passé sur les métriques de cadre, telles que les transmissions vers l'avant et vers l'arrière, et le chargement des données.

Description des paramètres de la règle OverallFrameworkMetrics
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

StepOutlier

La règle StepOutlier permet de détecter les valeurs aberrantes en matière de durées d'étape. Cette règle renvoie True s'il y a des valeurs aberrantes avec des durées d'étape supérieures à stddev sigmas de l'ensemble des durées d'étape dans une plage de temps.

Description des paramètres de la règle StepOutlier
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

stddev

Définit un facteur par lequel multiplier l'écart standard. Par exemple, la règle est invoquée par défaut lorsqu'une durée d'étape est supérieure ou inférieure à 5 fois l'écart standard.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 5 (en minutes)

mode Mode sous lequel les étapes ont été enregistrées et sur lequel la règle doit s'exécuter. La règle par défaut s'exécute sur les étapes de la phase EVAL et TRAIN

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 5 (en minutes)

n_outliers Nombre de valeurs aberrantes à ignorer avant que la règle ne renvoie True

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 10

scan_interval_us

Intervalle de temps pendant lequel les fichiers de chronologie sont analysés.

Facultatif

Valeurs valides : nombre entier

Valeurs par défaut : 60000000 (en microsecondes)

CreateXgboostReport

La règle CreateXgBoostReport collecte les tenseurs de sortie à partir d'une tâche d'entraînement XGBoost et génère automatiquement un rapport d'entraînement complet. Vous pouvez télécharger un rapport de profilage complet pendant qu'une tâche d'entraînement est en cours d'exécution ou une fois la tâche d'entraînement terminée, et vérifier l'avancement de l'entraînement ou le résultat final de la tâche d'entraînement. La règle CreateXgboostReport collecte par défaut les tenseurs de sortie suivants :

  • hyperparameters — Enregistre à la première étape

  • metrics — Enregistre la perte et la précision toutes les 5 étapes

  • feature_importance — Enregistre toutes les 5 étapes

  • predictions — Enregistre toutes les 5 étapes

  • labels — Enregistre toutes les 5 étapes

Description des paramètres de la règle CreateXgboostReport
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

rules=[ Rule.sagemaker( rule_configs.create_xgboost_report() ) ]

DeadRelu

Cette règle détecte les cas où le pourcentage de fonctions d'activation d'unité ReLU (unité linéaire rectifiée) dans un essai est considéré comme mort parce que leur activité d'activation est descendue sous un seuil. Si le pourcentage d'unités ReLU inactives dans une couche est supérieur à la valeur threshold_layer d'unités ReLU inactives, la règle renvoie True.

Description des paramètres de la règle DeadRelu
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : ".*relu_output"

threshold_inactivity

Définit un niveau d'activité sous lequel une unité ReLU est considérée morte. Une unité ReLU peut être active au début d'un essai, puis peut mourir lentement au cours du processus d'entraînement. Si l'unité ReLU est active au-dessous de threshold_inactivity, elle est considérée comme morte.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : 1.0 (en pourcentage)

threshold_layer

Renvoie True si le pourcentage d'unités ReLU inactives dans une couche est supérieur à threshold_layer.

Renvoie False si le pourcentage d'unités ReLU inactives dans une couche est inférieur à threshold_layer.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : 50.0 (en pourcentage)

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.dead_relu(), rule_parameters={ "tensor_regex": ".*relu_output|.*ReLU_output", "threshold_inactivity": "1.0", "threshold_layer": "50.0" } collections_to_save=[ CollectionConfig( name="custom_relu_collection", parameters={ "include_regex: ".*relu_output|.*ReLU_output", "save_interval": "500" } ) ] ) ]

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Cette règle n'est pas disponible pour l'algorithme XGBoost.

ExplodingTensor

Cette règle détecte si les tenseurs émis pendant l'entraînement ont des valeurs non finies, infinies ou non numériques (NaN, Not a Number). Si une valeur non finie est détectée, la règle renvoie True.

Description des paramètres de la règle ExplodingTensor
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : String

Valeur par défaut : None

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : String

Valeur par défaut : None

only_nan

True pour surveiller les tenseurs base_trial uniquement pour les valeurs NaN et non pour l'infini.

False pour traiter les valeurs NaN et l'infini comme des valeurs explosives, et pour les surveiller.

Facultatif

Valeur par défaut : False

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.exploding_tensor(), rule_parameters={ "tensor_regex": ".*gradient", "only_nan": "False" } collections_to_save=[ CollectionConfig( name="gradients", parameters={ "save_interval": "500" } ) ] ) ]

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Cette règle n'est pas disponible pour l'algorithme XGBoost.

PoorWeightInitialization

Cette règle détecte si les paramètres de votre modèle ont été mal initialisés.

Une bonne initialisation rompt la symétrie des pondérations et des gradients dans un réseau neuronal, et maintient des variances d'activation proportionnelles entre les couches. Sinon, le réseau neuronal n'apprend pas efficacement. Des initialiseurs comme Xavier visent à maintenir une variance constante entre les activations, ce qui est particulièrement pertinent dans le cadre de l'entraînement de réseaux neuronaux très profonds. Une trop petite initialisation peut conduire à des gradients disparaissant. Une trop grande initialisation peut conduire à des gradients explosifs. Cette règle vérifie la variance des entrées d'activation entre les couches, la distribution des gradients et la convergence des pertes pour les étapes initiales afin de déterminer si un réseau neuronal a été mal initialisé.

Description des paramètres de la règle PoorWeightInitialization
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

activation_inputs_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : String

Valeur par défaut : ".*relu_input"

threshold

Si le rapport entre les variances minimale et maximale des pondérations par couche dépasse threshold à une étape, la règle renvoie True.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 10.0

distribution_range

Si la différence minimale entre le 5e et le 95e centiles de la distribution des gradients est inférieure à distribution_range, la règle renvoie True.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.001

patience

Nombre d'étapes qu'il convient d'attendre jusqu'à ce que la perte ne soit plus considérée comme décroissante.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 5

steps

Nombre d'étapes analysées par cette règle. En général, vous n'avez besoin de vérifier que les premières itérations.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 10

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.poor_weight_initialization(), rule_parameters={ "activation_inputs_regex": ".*relu_input|.*ReLU_input", "threshold": "10.0", "distribution_range": "0.001", "patience": "5", "steps": "10" }, collections_to_save=[ CollectionConfig( name="custom_relu_collection", parameters={ "include_regex": ".*relu_input|.*ReLU_input", "save_interval": "500" } ) ] ) ]

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Cette règle n'est pas disponible pour l'algorithme XGBoost.

SaturatedActivation

Cette règle détecte si les couches d'activation tanh et sigmoïde deviennent saturées. Une couche d'activation est saturée lorsque l'entrée de la couche est proche du maximum ou du minimum de la fonction d'activation. Le minimum et le maximum des fonctions d'activation tanh et sigmoïde sont définis par leurs valeurs min_threshold et max_thresholds respectives. Si l'activité d'un nœud descend en dessous du pourcentage threshold_inactivity, il est considéré saturé. Si un pourcentage supérieur à threshold_layer des nœuds sont saturés, la règle renvoie True.

Description des paramètres de la règle SaturatedActivation
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : String

Valeur par défaut : ".*tanh_input|.*sigmoid_input".

threshold_tanh_min

Seuils minimum et maximum qui définissent les extrêmes d'entrée d'une fonction d'activation tanh, définis comme : (min_threshold, max_threshold). Les valeurs par défaut sont déterminées en fonction d'un seuil de gradient disparaissant de 0,0000001.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : -9.4999

threshold_tanh_max

Seuils minimum et maximum qui définissent les extrêmes d'entrée d'une fonction d'activation tanh, définis comme : (min_threshold, max_threshold). Les valeurs par défaut sont déterminées en fonction d'un seuil de gradient disparaissant de 0,0000001.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : 9.4999

threshold_sigmoid_min

Seuils minimum et maximum qui définissent les extrêmes d'entrée d'une fonction d'activation sigmoïde, définis comme : (min_threshold, max_threshold). Les valeurs par défaut sont déterminées en fonction d'un seuil de gradient disparaissant de 0,0000001.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : -23

threshold_sigmoid_max

Seuils minimum et maximum qui définissent les extrêmes d'entrée d'une fonction d'activation sigmoïde, définis comme : (min_threshold, max_threshold). Les valeurs par défaut sont déterminées en fonction d'un seuil de gradient disparaissant de 0,0000001.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : 16.99999

threshold_inactivity

Pourcentage d'inactivité sous lequel la couche d'activation est considérée comme saturée. L'activation peut être active au début d'un essai, puis devenir lentement moins active au cours du processus d'entraînement.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : 1.0

threshold_layer

Renvoie True si le nombre d'activations saturées dans une couche est supérieur au pourcentage threshold_layer.

Renvoie False si le nombre d'activations saturées dans une couche est inférieur au pourcentage threshold_layer.

Facultatif

Valeurs valides : valeur flottante

Valeurs par défaut : 50.0

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.saturated_activation(), rule_parameters={ "tensor_regex": ".*tanh_input|.*sigmoid_input", "threshold_tanh_min": "-9.4999", "threshold_tanh_max": "9.4999", "threshold_sigmoid_min": "-23", "threshold_sigmoid_max": "16.99999", "threshold_inactivity": "1.0", "threshold_layer": "50.0" }, collections_to_save=[ CollectionConfig( name="custom_activations_collection", parameters={ "include_regex": ".*tanh_input|.*sigmoid_input" "save_interval": "500" } ) ] ) ]

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Cette règle n'est pas disponible pour l'algorithme XGBoost.

VanishingGradient

Cette règle détecte si les gradients d'un essai deviennent extrêmement faibles ou atteignent une grandeur nulle. Si la moyenne des valeurs absolues des gradients descend en dessous d'un threshold spécifié, la règle renvoie True.

Description des paramètres de la règle VanishingGradient
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold Valeur à laquelle le gradient est considéré comme disparaissant.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.0000001.

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.vanishing_gradient(), rule_parameters={ "threshold": "0.0000001" }, collections_to_save=[ CollectionConfig( name="gradients", parameters={ "save_interval": "500" } ) ] ) ]

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Cette règle n'est pas disponible pour l'algorithme XGBoost.

WeightUpdateRatio

Cette règle assure le suivi du rapport entre les mises à jour et les pondérations pendant l'entraînement et détecte si ce rapport devient trop grand ou trop petit. Si le rapport entre les mises à jour et les pondérations est supérieur à large_threshold value ou s'il est inférieur à small_threshold, la règle renvoie True.

Les conditions d'entraînement sont les meilleures lorsque les mises à jour sont proportionnelles aux gradients. Des mises à jour excessivement grandes peuvent éloigner les pondérations des valeurs optimales, et des mises à jour très petites entraînent une convergence très lente. Cette règle exige que les pondérations soient disponibles pour deux étapes d'entraînement. Le paramètre train.save_interval doit donc être égal à num_steps.

Description des paramètres de la règle WeightUpdateRatio
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

num_steps

Nombre d'étapes dans lesquelles la règle vérifie si le tenseur a changé.

Nombre d'étapes dans lesquelles vous souhaitez comparer les rapports de pondération. Si vous ne transmettez aucune valeur, la règle s'exécute par défaut sur l'étape actuelle et l'étape enregistrée immédiatement avant. Si vous remplacez la valeur par défaut en passant une valeur pour ce paramètre, la comparaison est effectuée entre les pondérations à l'étape s et à une étape >= s - num_steps.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : None

large_threshold

Valeur maximale que le rapport entre les mises à jour et la pondération peut prendre avant que la règle renvoie True.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 10.0

small_threshold

Valeur minimale que le rapport entre les mises à jour et la pondération peut prendre sous laquelle la règle renvoie True.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.00000001

epsilon

Petite constante utilisée pour s'assurer que Debugger ne divise pas par zéro lors du calcul du rapport entre les mises à jour et la pondération.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.000000001

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.weight_update_ratio(), rule_parameters={ "num_steps": "100", "large_threshold": "10.0", "small_threshold": "0.00000001", "epsilon": "0.000000001" }, collections_to_save=[ CollectionConfig( name="weights", parameters={ "train.save_interval": "100" } ) ] ) ]

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Cette règle n'est pas disponible pour l'algorithme XGBoost.

AllZero

Cette règle détecte si la totalité ou un pourcentage spécifié des valeurs dans les tenseurs sont nulles.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost. Vous devez spécifier le paramètre collection_names ou tensor_regex. Si les deux paramètres sont spécifiés, la règle inspecte l'union des tenseurs à partir des deux ensembles.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle AllZero
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : None

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : None

threshold

Spécifie le pourcentage des valeurs du tenseur qui doivent être nulles pour que cette règle soit invoquée.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 100 (en pourcentage)

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.all_zero(), rule_parameters={ "tensor_regex": ".*", "threshold": "100" }, collections_to_save=[ CollectionConfig( name="all", parameters={ "save_interval": "500" } ) ] ) ]

ClassImbalance

Cette règle mesure les déséquilibres d'échantillonnage entre les classes et génère des erreurs si le déséquilibre dépasse un seuil ou si trop d'erreurs de prédiction pour les classes sous-représentées se produisent en raison du déséquilibre.

Les modèles de classification exigent des classes bien équilibrées dans le jeu de données d'entraînement ou une pondération/un échantillonnage correct des classes pendant l'entraînement. La règle effectue les vérifications suivantes :

  • Elle compte les occurrences par classe. Si le rapport des nombres d'échantillons entre la plus petite classe et la plus grande classe est supérieur à threshold_imbalance, une erreur est levée.

  • Elle vérifie la précision des prédictions par classe. Si le rééchantillonnage ou la pondération n'ont pas été appliqués correctement, le modèle peut atteindre une grande précision pour la classe avec de nombreux échantillons d'entraînement mais une faible précision pour les classes avec peu d'échantillons d'entraînement. Si une fraction de fausses prédictions pour une certaine classe dépasse threshold_misprediction, une erreur est générée.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle ClassImbalance
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold_imbalance

Déséquilibre acceptable entre le nombre d'échantillons dans la catégorie la plus petite et dans la catégorie la plus grande. Le dépassement de cette valeur de seuil génère une erreur.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 10

threshold_misprediction

Limite de la fraction de fausses prédictions permise pour chaque classe. Le dépassement de ce seuil génère une erreur. Les classes sous-représentées risquent le plus de franchir ce seuil.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.7

samples

Nombre d'étiquettes à traiter avant qu'un déséquilibre soit évalué. La règle peut ne pas être déclenchée tant qu'elle n'a pas vu suffisamment d'échantillons dans plusieurs étapes. Plus votre jeu de données contient de classes, plus le nombre sample doit être grand.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 500 (dans l'hypothèse d'un jeu de données comme MNIST avec 10 classes)

argmax

Si True, np.argmax est appliqué au tenseur de prédiction. Obligatoire lorsque vous avez un vecteur de probabilités pour chaque classe. Il est utilisé pour déterminer quelle classe a la probabilité la plus élevée.

Conditionnel

Valeurs valides : booléen

Valeur par défaut : False

labels_regex

Nom du tenseur qui contient les étiquettes.

Facultatif

Valeurs valides : String

Valeur par défaut : ".*labels"

predictions_regex

Nom du tenseur qui contient les prédictions.

Facultatif

Valeurs valides : String

Valeur par défaut : ".*predictions"

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.class_imbalance(), rule_parameters={ "threshold_imbalance": "10", "threshold_misprediction": "0.7", "samples": "500", "argmax": "False", "labels_regex": ".*labels", "predictions_regex": ".*predictions" }, collections_to_save=[ CollectionConfig( name="custom_output_collection", parameters={ "include_regex": ".*labels|.*predictions", "save_interval": "500" } ) ] ) ]

LossNotDecreasing

Cette règle détecte lorsque la perte ne diminue pas en valeur à un taux adéquat. Ces pertes doivent être des scalaires.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost. Vous devez spécifier le paramètre collection_names ou tensor_regex. Si les deux paramètres sont spécifiés, la règle inspecte l'union des tenseurs à partir des deux ensembles.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle LossNotDecreasing
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : None

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : None

use_losses_collection

Si ce paramètre a pour valeur True, il recherche les pertes dans la collection nommée « pertes » lorsque cette collection est présente.

Facultatif

Valeurs valides : booléen

Valeur par défaut : True

num_steps

Nombre minimal d'étapes après lesquelles la règle vérifie si la perte a diminué. L'évaluation de la règle se produit toutes les étapes num_steps. La règle compare la perte pour cette étape avec la perte à une étape qui se trouve au moins num_steps étapes derrière l'étape actuelle. Par exemple, supposons que la perte soit enregistrée toutes les trois étapes, mais que le paramètre num_steps soit défini sur 10. À l'étape 21, la perte pour l'étape 21 est comparée à la perte pour l'étape 9. L'étape suivante à laquelle la perte est vérifiée est l'étape 33, car dix étapes après l'étape 21, il y a l'étape 31, et aux étapes 31 et 32, la perte n'est pas enregistrée.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 10

diff_percent

Différence minimale en pourcentage par laquelle la perte devrait diminuer entre num_steps.

Facultatif

Valeurs valides : 0.0 < valeur flottante < 100

Valeur par défaut : 0.1 (en pourcentage)

increase_threshold_percent

Pourcentage maximal de perte autorisé en cas d'augmentation de la perte

Facultatif

Valeurs valides : 0 < valeur flottante < 100

Valeur par défaut : 5 (en pourcentage)

mode

Nom du mode Debugger d'interrogation des valeurs de tenseur pour la vérification des règles. Si la vérification n'a pas abouti, la règle vérifie par défaut et dans cet ordre les valeurs mode.EVAL, puis mode.TRAIN, puis mode.GLOBAL.

Facultatif

Valeurs valides : Chaîne (EVAL, TRAIN ou GLOBAL)

Valeur par défaut : GLOBAL

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.loss_not_decreasing(), rule_parameters={ "tensor_regex": ".*", "use_losses_collection": "True", "num_steps": "10", "diff_percent": "0.1", "increase_threshold_percent": "5", "mode": "GLOBAL" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

Overfit

Cette règle détecte si votre modèle est surajusté aux données d'entraînement en comparant les pertes de validation et d'entraînement.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Une façon standard d'éviter le surajustement est de régulariser votre modèle.

Description des paramètres de la règle Overfit
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

start_step

Étape à partir de laquelle commencer à comparer la perte de validation et d'entraînement.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 0

patience

Nombre d'étapes pour lesquelles ratio_threshold est autorisé à dépasser la valeur définie avant que le modèle ne soit considéré comme surajusté.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 1

ratio_threshold

Rapport maximal entre la différence entre la perte moyenne de validation et la perte moyenne d'entraînement, et la perte moyenne d'entraînement. Si ce seuil est dépassé pour un nombre d'étapes égal à patience, le modèle est surajusté et la règle renvoie True.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.1

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.overfit(), rule_parameters={ "tensor_regex": ".*", "start_step": "0", "patience": "1", "ratio_threshold": "0.1" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "100", "eval.save_interval": "10" } ) ] ) ]

Overtraining

Cette règle détecte si un modèle est surentraîné. Après un certain nombre d'itérations d'entraînement sur un modèle performant (les pertes d'entraînement et de validation diminuent), le modèle s'approche d'un minimum de la fonction de perte et ne s'améliore plus. Si le modèle poursuit l'entraînement, il peut arriver que la perte de validation commence à augmenter, car le modèle commence à se surajuster. Cette règle définit des seuils et des conditions pour déterminer si le modèle ne s'améliore pas, et empêche les problèmes de surajustement dus à un surentraînement.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Note

Le surentraînement peut être évité par un arrêt anticipé. Pour de plus amples informations sur l'arrêt anticipé, veuillez consulter Arrêter de manière précoce des tâches d'entraînement. Pour obtenir un exemple décrivant l'utilisation de l'entraînement Spot avec Debugger, veuillez consulter Enable Spot Training with Amazon SageMaker Debugger.

Description des paramètres de la règle Overtraining
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

patience_train

Nombre d'étapes à attendre avant que la perte d'entraînement soit considérée comme ne s'améliorant plus.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 5

patience_validation Nombre d'étapes à attendre avant que la perte de validation soit considérée comme ne s'améliorant plus.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 10

delta

Seuil minimal correspondant à l'ampleur par laquelle l'erreur devrait s'améliorer avant qu'elle soit considérée comme une erreur optimale.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.01

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.overtraining(), rule_parameters={ "patience_train": "5", "patience_validation": "10", "delta": "0.01" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

SimilarAcrossRuns

Cette règle compare les tenseurs collectés à partir d'un essai de base à ceux issus d'un autre essai.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle SimilarAcrossRuns
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

other_trial

Nom de tâche d'entraînement terminée dont vous souhaitez comparer les tenseurs à ceux collectés à partir de l'essai actuel base_trial.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.similar_across_runs(), rule_parameters={ "other_trial": "<specify-another-job-name>", "collection_names": "losses", "tensor_regex": ".*" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

StalledTrainingRule

StalledTrainingRule détecte si la tâche d'entraînement ne présente pas de progrès. Cette dernière s'arrête si la règle se déclenche. Cette règle exige que les tenseurs soient enregistrés périodiquement dans un intervalle de temps défini par son paramètre threshold. Elle continue de contrôler les nouveaux tenseurs, et si aucun nouveau tenseur n'a été émis pour la règle d'intervalle de seuil, elle est déclenchée.

Description des paramètres de la règle StalledTrainingRule
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold

Seuil qui définit le temps en secondes pendant lequel la règle attend une sortie de tenseur avant de déclencher un problème de blocage d'entraînement. La valeur par défaut est 1 800 secondes.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 1800

stop_training_on_fire

Si la règle est définie sur True, elle surveille si la tâche d'entraînement de base génère des tenseurs en « threshold » secondes.

Facultatif

Valeurs valides : booléen

Valeur par défaut : False

training_job_name_prefix

Préfixe du nom de la tâche d'entraînement de base. Si la valeur de stop_training_on_fire est true, la règle recherche les tâches d'entraînement SageMaker avec ce préfixe dans le même compte. Si une inactivité est détectée, la règle prend une action StopTrainingJob. Notez que si plusieurs tâches ont été trouvées avec le même préfixe, la règle ignore l'arrêt. Il est important que chaque tâche d'entraînement ait un préfixe unique.

Facultatif

Valeurs valides : String

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ "threshold": "1800", "stop_training_on_fire": "True", "training_job_name_prefix": "<specify-training-base-job-name>" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

TensorVariance

Cette règle détecte si vous avez des tenseurs avec des variances très élevées ou très faibles. Des variances très élevées ou faibles dans un tenseur peuvent conduire à une saturation neuronale et réduire la capacité d'apprentissage du réseau neuronal. Une variance très élevée dans les tenseurs peut aussi éventuellement conduire à l'explosion des tenseurs. Utilisez cette règle pour détecter rapidement ces problèmes.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost. Vous devez spécifier le paramètre collection_names ou tensor_regex. Si les deux paramètres sont spécifiés, la règle inspecte l'union des tenseurs à partir des deux ensembles.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle TensorVariance
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

max_threshold

Seuil pour la limite supérieure de la variance des tenseurs.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : aucune

min_threshold

Seuil pour la limite inférieure de la variance des tenseurs.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : aucune

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.tensor_variance(), rule_parameters={ "collection_names": "weights", "max_threshold": "10", "min_threshold": "0.00001", }, collections_to_save=[ CollectionConfig( name="weights", parameters={ "save_interval": "500" } ) ] ) ]

UnchangedTensor

Cette règle détecte si un tenseur ne change plus d'une étape à l'autre.

Cette règle exécute la méthode numpsy.allclose pour vérifier si le tenseur ne change pas.

Cette règle peut être appliquée à l'un des cadres de deep learning pris en charge (TensorFlow, MxNet et PyTorch) ou à l'algorithme XGBoost. Vous devez spécifier le paramètre collection_names ou tensor_regex. Si les deux paramètres sont spécifiés, la règle inspecte l'union des tenseurs à partir des deux ensembles.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle UnchangedTensor
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

collection_names

Liste des noms de collection dont la règle inspecte les tenseurs.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : aucune

num_steps

Nombre d'étapes dans lesquelles la règle vérifie si le tenseur a changé.

Les num_steps dernières étapes disponibles sont vérifiées. Elles n'ont pas besoin d'être consécutives. Si num_steps a pour valeur 2, à l'étape s, la règle ne vérifie pas nécessairement s-1 ni s. Si s-1 n'est pas disponible, la règle vérifie la dernière étape disponible ainsi que s. Dans ce cas, elle vérifie la dernière étape disponible avec l'étape actuelle.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 3

rtol

Paramètre de tolérance relative à transmettre à la méthode numpy.allclose.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 1e-05

atol

Paramètre de tolérance absolue à transmettre à la méthode numpy.allclose.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 1e-08

equal_nan

S'il convient de comparer les valeurs NaN en tant qu'égales. Si True, les valeurs NaN du tableau d'entrée a sont considérées comme égales aux valeurs NaN du tableau d'entrée b dans le tableau de sortie. Ce paramètre est transmis à la méthode numpy.allclose.

Facultatif

Valeurs valides : booléen

Valeur par défaut : False

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.unchanged_tensor(), rule_parameters={ "collection_names": "losses", "tensor_regex": "", "num_steps": "3", "rtol": "1e-05", "atol": "1e-08", "equal_nan": "False" }, collections_to_save=[ CollectionConfig( name="losses", parameters={ "save_interval": "500" } ) ] ) ]

CheckInputImages

Cette règle vérifie si les images d'entrée ont été correctement normalisées. Plus précisément, elle détecte si la moyenne des données d'échantillonnage diffère de plus d'une valeur seuil par rapport à zéro. De nombreux modèles de vision par ordinateur exigent que les données d'entrée aient une variance unitaire et moyenne nulle.

Cette règle s'applique aux applications de deep learning.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle CheckInputImages
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold_mean

Seuil qui définit la marge selon laquelle la moyenne des données en entrée peut différer de 0.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.2

threshold_samples

Nombre d'images qui doivent être échantillonnées avant qu'une erreur puisse être générée. Si la valeur est trop faible, l'estimation de la moyenne du jeu de données est inexacte.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 500

regex

Nom du tenseur de données en entrée.

Facultatif

Valeurs valides : String

Valeur par défaut : ".*hybridsequential0_input_0" (nom du tenseur d'entrée pour les modèles Apache MXNet utilisant HybridSequential)

channel

Position du canal de couleur dans le tableau de forme du tenseur d'entrée.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 1 (par exemple, MXNet attend des données d'entrée sous la forme (batch_size, channel, height, width))

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.check_input_images(), rule_parameters={ "threshold_mean": "0.2", "threshold_samples": "500", "regex": ".*hybridsequential0_input_0", "channel": "1" }, collections_to_save=[ CollectionConfig( name="custom_inputs_collection", parameters={ "include_regex": ".*hybridsequential0_input_0" "save_interval": "500" } ) ] ) ]

NLPSequenceRatio

Cette règle calcule le rapport de jetons spécifiques compte tenu du reste de la séquence d'entrée qui est utile pour optimiser les performances. Par exemple, vous pouvez calculer le pourcentage de jetons de fin de phrase (EOS) de remplissage dans votre séquence d'entrée. Si le nombre de jetons EOS est trop élevé, une autre stratégie de compartimentage doit être appliquée. Vous pouvez également calculer le pourcentage de jetons inconnus dans votre séquence d'entrée. Si le nombre de mots inconnus est trop élevé, un autre vocabulaire peut être utilisé.

Cette règle s'applique aux applications de deep learning.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle NLPSequenceRatio
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

tensor_regex

Liste de modèles regex utilisés pour limiter la comparaison à des tenseurs à valeur scalaire spécifiques. La règle inspecte uniquement les tenseurs qui correspondent aux modèles regex spécifiés dans la liste. Si aucun modèle n'est transmis, la règle compare par défaut tous les tenseurs collectés dans les essais. Seuls les tenseurs à valeur scalaire peuvent être mis en correspondance.

Facultatif

Valeurs valides : liste de chaînes ou chaîne séparée par des virgules

Valeur par défaut : ".*embedding0_input_0" (en supposant une intégration en tant que couche initiale du réseau)

token_values

Chaîne d'une liste des valeurs numériques des jetons. Par exemple, « 3, 0 ».

Facultatif

Valeurs valides : chaîne de valeurs numériques séparées par des virgules

Valeur par défaut : 0

token_thresholds_percent

Chaîne d'une liste de seuils (pourcentages) correspondant à chaque valeur token_values. Par exemple, "50.0, 50.0".

Facultatif

Valeurs valides : chaîne de valeurs flottantes séparées par des virgules

Valeur par défaut : "50"

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.nlp_sequence_ratio(), rule_parameters={ "tensor_regex": ".*embedding0_input_0", "token_values": "0", "token_thresholds_percent": "50" }, collections_to_save=[ CollectionConfig( name="custom_inputs_collection", parameters={ "include_regex": ".*embedding0_input_0" } ) ] ) ]

Confusion

Cette règle évalue la validité d'une matrice de confusion pour un problème de classification.

Elle crée une matrice de taille category_no*category_no et la remplit avec des données provenant de paires (labels, predictions). Pour chaque paire (labels, predictions), le nombre dans confusion[labels][predictions] est incrémenté de 1. Lorsque la matrice est entièrement remplie, le rapport entre les valeurs sur la diagonale et les valeurs hors diagonale est évalué comme suit :

  • Pour les éléments sur la diagonale : confusion[i][i]/sum_j(confusion[j][j])>=min_diag

  • Pour les éléments hors diagonale : confusion[j][i])/sum_j(confusion[j][i])<=max_off_diag

Cette règle peut être appliquée à l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle Confusion
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

category_no

Nombre de catégories.

Facultatif

Valeurs valides : nombre entier ≥2

Valeur par défaut : "None"

labels

Collection de tenseurs labels ou un vecteur 1-d des étiquettes true.

Facultatif

Valeurs valides : String

Valeur par défaut : "labels"

predictions

Collection de tenseurs predictions ou un vecteur 1-d des étiquettes estimées.

Facultatif

Valeurs valides : String

Valeur par défaut : "predictions"

labels_collection

La règle inspecte les tenseurs de cette collection pour labels.

Facultatif

Valeurs valides : String

Valeur par défaut : "labels"

predictions_collection

La règle inspecte les tenseurs de cette collection pour predictions.

Facultatif

Valeurs valides : String

Valeur par défaut : "predictions"

min_diag

Seuil minimal du rapport des données sur la diagonale.

Facultatif

Valeurs valides : 0≤valeur flottante≤1

Valeur par défaut : 0.9

max_off_diag

Seuil maximal du rapport des données hors diagonale.

Facultatif

Valeurs valides : 0≤valeur flottante≤1

Valeur par défaut : 0.1

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.confusion(), rule_parameters={ "category_no": "10", "labels": "labels", "predictions": "predictions", "labels_collection": "labels", "predictions_collection": "predictions", "min_diag": "0.9", "max_off_diag": "0.1" }, collections_to_save=[ CollectionConfig( name="labels", parameters={ "save_interval": "500" } ), CollectionConfig( name="predictions", parameters={ "include_regex": "500" } ) ] ) ]
Note

Cette règle déduit des valeurs par défaut pour les paramètres facultatifs si leurs valeurs ne sont pas spécifiées.

FeatureImportanceOverweight

Cette règle accumule les pondérations des n valeurs les plus élevées d'importance de la fonction par étape et garantit qu'elles ne dépassent pas le seuil. Par exemple, vous pouvez définir le seuil pour les trois premières fonctions de manière à ce qu'elles ne contiennent pas plus de 80 % des pondérations totales du modèle.

Cette règle n'est valide que pour l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle FeatureImportanceOverweight
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

threshold

Définit le seuil de la proportion de la somme cumulée des n fonctions les plus grandes. Le nombre n est défini par le paramètre nfeatures.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 0.8

nfeatures

Nombre de fonctions les plus grandes.

Facultatif

Valeurs valides : nombre entier

Valeur par défaut : 3

tensor_regex

L'expression régulière (regex) du tenseur nomme la règle à analyser.

Facultatif

Valeurs valides : String

Valeur par défaut : ".*feature_importance/weight"

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.feature_importance_overweight(), rule_parameters={ "threshold": "0.8", "nfeatures": "3", "tensor_regex": ".*feature_importance/weight" }, collections_to_save=[ CollectionConfig( name="feature_importance", parameters={ "save_interval": "500" } ) ] ) ]

TreeDepth

Cette règle mesure la profondeur des arbres dans un modèle XGBoost. XGBoost rejette les fractionnements s'ils n'améliorent pas la perte. Cela régularise l'entraînement. Par conséquent, l'arbre peut ne pas pousser aussi profondément que cela est défini par le paramètre depth.

Cette règle n'est valide que pour l'algorithme XGBoost.

Pour obtenir un exemple de configuration et de déploiement d'une règle intégrée, veuillez consulter Configuration des règles intégrées de Debugger.

Description des paramètres de la règle TreeDepth
Nom du paramètre Description
base_trial

Nom de la tâche d'entraînement d'essai de base. Ce paramètre est automatiquement défini sur la tâche d'entraînement actuelle par Amazon SageMaker Debugger.

Obligatoire

Valeurs valides : String

depth

Profondeur de l'arbre. La profondeur de l'arbre est obtenue en calculant le logarithme en base 2 du plus grand ID de nœud.

Facultatif

Valeurs valides : valeur flottante

Valeur par défaut : 4

built_in_rules = [ Rule.sagemaker( base_config=rule_configs.tree_depth(), rule_parameters={ "depth": "4" }, collections_to_save=[ CollectionConfig( name="tree", parameters={ "save_interval": "500" } ) ] ) ]