Considérations relatives à Amazon SageMaker Debugger - Amazon SageMaker

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.

Considérations relatives à Amazon SageMaker Debugger

Tenez compte des points suivants lorsque vous utilisez Amazon SageMaker Debugger.

Considérations relatives à l'entraînement distribué

La liste suivante présente les domaines de validité et les considérations relatives à l'utilisation de Debugger sur les tâches d'entraînement avec des cadres de deep learning et les différentes options d'entraînement distribué.

  • Horovod

    Domaine de validité de l'utilisation de Debugger pour les tâches d'entraînement avec Horovod

    Cadre de deep learning Apache MXNet TensorFlow 1. x TensorFlow 2. x TensorFlow 2.x avec Keras PyTorch
    Surveillance des goulets d'étranglement du système Oui Oui Oui Oui Oui
    Profilage des opérations de cadre Non Non Non Oui Oui
    Débogage des tenseurs de sortie de modèle Oui Oui Oui Oui Oui
  • SageMaker données distribuées en parallèle

    Portée de validité de l'utilisation de Debugger pour des tâches de formation avec des données SageMaker distribuées en parallèle

    Cadre de deep learning TensorFlow 2. x TensorFlow 2.x avec Keras PyTorch
    Surveillance des goulets d'étranglement du système Oui Oui Oui
    Profilage des opérations de cadre Non* Non** Oui
    Débogage des tenseurs de sortie de modèle Oui Oui Oui

    * Le débogueur ne prend pas en charge le profilage du framework pour TensorFlow 2.x.

    ** SageMaker distributed data parallel ne prend pas en charge la version TensorFlow 2.x avec l'implémentation de Keras.

  • SageMaker distributed model parallel : le Debugger ne prend pas en charge l'entraînement en parallèle du modèle SageMaker distribué.

  • Formation distribuée avec SageMaker points de contrôle — Le débogueur n'est pas disponible pour les tâches de formation lorsque l'option de formation distribuée et les points de SageMaker contrôle sont activés. Une erreur semblable à ce qui suit peut s'afficher :

    SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

    Pour utiliser Debugger pour des tâches de formation avec des options de formation distribuées, vous devez désactiver le point de SageMaker contrôle et ajouter des fonctions de pointage manuel à votre script d'entraînement. Pour de plus amples informations sur l'utilisation de Debugger avec des options d'entraînement distribué et des points de contrôle, veuillez consulter Utilisation de données SageMaker distribuées en parallèle avec Amazon SageMaker Debugger et les points de contrôle et Sauvegarde des points de contrôle.

  • Serveur de paramètres – Debugger ne prend pas en charge l'entraînement distribué basé sur le serveur de paramètres.

  • Le profilage des opérations du framework d'entraînement distribué, telles que le AllReduced fonctionnement des opérations en parallèle avec les données SageMaker distribuées et les opérations Horovod, n'est pas disponible.

Considérations relatives à la surveillance des goulets d'étranglement du système et au profilage des opérations de cadre

  • En effet AWS TensorFlow, les métriques du chargeur de données ne peuvent pas être collectées à l'aide du local_path paramètre par défaut de la FrameworkProfile classe. Le chemin doit être configuré manuellement et se terminer par "/". Par exemple :

    FrameworkProfile(local_path="/opt/ml/output/profiler/")
  • En effet AWS TensorFlow, la configuration de profilage du chargeur de données ne peut pas être mise à jour pendant l'exécution d'une tâche de formation.

  • En effet AWS TensorFlow, une NoneType erreur peut se produire lorsque vous utilisez des outils d'analyse et des exemples de blocs-notes avec des tâches de formation TensorFlow 2.3 et l'option de profilage détaillé.

  • Le profilage en Python et le profilage détaillé ne sont pris en charge que pour KerasAPI.

  • Pour accéder à la fonctionnalité de profilage approfondi pour TensorFlow et PyTorch, actuellement, vous devez spécifier les dernières images de conteneur d'apprentissage AWS profond avec CUDA 11. Par exemple, vous devez spécifier l'image spécifique URI dans l' PyTorch estimateur TensorFlow et comme suit :

    • Pour TensorFlow

      image_uri = f"763104351884.dkr.ecr.{region}.amazonaws.com/tensorflow-training:2.3.1-gpu-py37-cu110-ubuntu18.04"
    • Pour PyTorch

      image_uri = f"763104351884.dkr.ecr.{region}.amazonaws.com/pytorch-training:1.6.0-gpu-py36-cu110-ubuntu18.04"

Considérations relatives au débogage des tenseurs de sortie de modèle

  • Évitez d'utiliser API des opérations fonctionnelles. Le débogueur ne peut pas collecter les tenseurs de sortie du modèle à partir de scripts PyTorch d'MXNetentraînement composés d'opérations fonctionnelles. API

    • Le débogueur ne peut pas collecter les tenseurs de sortie du modèle à partir des opérations. torch.nn.functionalAPI Lorsque vous rédigez un script de PyTorch formation, il est recommandé d'utiliser plutôt les torch.nnmodules.

    • Le débogueur ne peut pas collecter les tenseurs de sortie du modèle à partir d'objets MXNet fonctionnels dans des blocs hybrides. Par exemple, les sorties ReLu activation (F.relu) ne peuvent pas être collectées à partir de l'exemple suivant de mxnet.gluon.HybridBlockwith F in the hybrid_forward function.

      import mxnet as mx from mxnet.gluon import HybridBlock, nn class Model(HybridBlock): def __init__(self, **kwargs): super(Model, self).__init__(**kwargs) # use name_scope to give child Blocks appropriate names. with self.name_scope(): self.dense0 = nn.Dense(20) self.dense1 = nn.Dense(20) def hybrid_forward(self, F, x): x = F.relu(self.dense0(x)) return F.relu(self.dense1(x)) model = Model() model.initialize(ctx=mx.cpu(0)) model.hybridize() model(mx.nd.zeros((10, 10), ctx=mx.cpu(0)))