Créer des règles personnalisées Debugger pour l'analyse des tâches d'entraînement - Amazon SageMaker

Créer des règles personnalisées Debugger pour l'analyse des tâches d'entraînement

Vous pouvez créer des règles personnalisées pour contrôle votre tâche d'entraînement à l'aide des API de règle Debugger et de la bibliothèque Python smdebug open source, qui fournissent des outils pour créer vos propres conteneurs de règles.

Prérequis pour créer des règles personnalisées Debugger

Pour créer des règles personnalisées Debugger, vous avez besoin des prérequis suivants.

Utiliser la bibliothèque client smdebug de Debugger pour créer un script Python personnalisé

L'API de règle smdebug fournit une interface pour configurer vos propres règles personnalisées. Le script python suivant montre comment vous pouvez créer une règle personnalisée, CustomGradientRule. Cette règle personnalisée de didacticiel contrôle si les gradients deviennent trop grands. Le seuil par défaut est 10. La règle personnalisée prend un essai de base créé par un estimateur SageMaker lorsqu'il lance une tâche d'entraînement.

from smdebug.rules.rule import Rule class CustomGradientRule(Rule): def __init__(self, base_trial, threshold=10.0): super().__init__(base_trial) self.threshold = float(threshold) def invoke_at_step(self, step): for tname in self.base_trial.tensor_names(collection="gradients"): t = self.base_trial.tensor(tname) abs_mean = t.reduction_value(step, "mean", abs=True) if abs_mean > self.threshold: return True return False

Vous pouvez ajouter autant de classes de règles personnalisées que vous le souhaitez dans le même script python et les déployer dans n'importe quel essai de tâche d'entraînement en créant des objets de règle personnalisée dans la section suivante.

Utiliser les API Debugger pour exécuter vos propres règles personnalisées

L'exemple de code suivant décrit comment configurer une règle personnalisée avec le kit SDK Python Amazon SageMaker. Cet exemple suppose que le script de règle personnalisé que vous avez créé à l'étape précédente se trouve sous « path/to/my_custom_rule.py ».

from sagemaker.debugger import Rule, CollectionConfig custom_rule = Rule.custom( name='MyCustomRule', image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', instance_type='ml.t3.medium', source='path/to/my_custom_rule.py', rule_to_invoke='CustomGradientRule', collections_to_save=[CollectionConfig("gradients")], rule_parameters={"threshold": "20.0"} )

La liste suivante explique les arguments de l'API Rule.custom Debugger.

  • name (str) : spécifiez un nom de règle personnalisé à votre guise.

  • image_uri (str) : il s'agit de l'image du conteneur dont la logique est de comprendre votre règle personnalisée. Celle-ci approvisionne et évalue les collections de tenseurs spécifiées que vous enregistrez dans la tâche d'entraînement. Vous pouvez trouver la liste des images d'évaluateur de règles SageMaker open source dans URL de registre Amazon SageMaker Debugger pour les évaluateurs de règles personnalisées.

  • instance_type (str) : vous devez spécifier une instance pour créer un conteneur Docker de règles afin d'activer l'instance en parallèle avec un conteneur d'entraînement.

  • source (str) : il s'agit du chemin local ou de l'URI Amazon S3 vers votre script de règle personnalisée.

  • rule_to_invoke (str) : spécifie l'implémentation de la classe de règle particulière dans votre script de règle personnalisée. SageMaker ne prend en charge qu'une seule règle à évaluer à la fois dans une tâche de règle.

  • collections_to_save (str) : spécifie les collections de tenseurs que vous allez enregistrer pour l'exécution de la règle.

  • rule_parameters (dictionnaire) : accepte les entrées de paramètres dans un format de dictionnaire. Vous pouvez ajuster les paramètres que vous avez configurés dans le script de règle personnalisée.

Une fois que vous avez configuré l'objet custom_rule, vous pouvez l'utiliser pour créer un estimateur SageMaker pour n'importe quelle tâche d'entraînement. Spécifiez le point entry_point à votre script d'entraînement. Vous n'avez pas besoin de modifier votre script d'entraînement.

from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( role=sagemaker.get_execution_role(), base_job_name='smdebug-custom-rule-demo-tf-keras', entry_point='path/to/your_training_script.py' train_instance_type='ml.p2.xlarge' ... # debugger-specific arguments below rules = [custom_rule] ) estimator.fit()

Pour plus de variantes et des exemples avancés d'utilisation des règles personnalisées Debugger, consultez les exemples de blocs-notes suivants.