Considérations relatives à Amazon SageMaker Debugger - Amazon SageMaker

Considérations relatives à Amazon SageMaker Debugger

Tenez compte des éléments 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
  • Parallélisme des données distribuées de SageMaker

    Étendue de validité de l'utilisation de Debugger pour les tâches d'entraînement avec le parallélisme des données distribuées de SageMaker
    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

    *Debugger ne prend pas en charge le profilage de cadre pour TensorFlow 2.x.

    **Le parallélisme des données distribuées de SageMaker ne prend pas en charge TensorFlow 2.x avec l'implémentation Keras.

  • Parallélisme des modèles distribués de SageMaker – Debugger ne prend pas en charge le parallélisme des modèles distribués de SageMaker.

  • Entraînement distribué avec les points de contrôle de SageMaker – Debugger n'est pas disponible pour les tâches d'entraînement lorsque l'option d'entraînement distribué et les points de contrôle de SageMaker 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 les tâches d'entraînement avec des options d'entraînement distribué, vous devez désactiver la configuration des points de contrôle SageMaker et ajouter des fonctions de configuration manuelle de points de contrôle à 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 parallèles distribuées dans Amazon SageMaker avec Debugger et les points de contrôle SageMaker 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 de cadre d'entraînement distribué, telles que l'opération AllReduced de parallélisme des données distribuées de SageMaker 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

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

    FrameworkProfile(local_path="/opt/ml/output/profiler/")
  • Pour AWS TensorFlow, la configuration de profilage de chargeur de données ne peut pas être mise à jour pendant qu'une tâche d'entraînement est en cours d'exécution.

  • Pour AWS TensorFlow, une erreur NoneType peut se produire lorsque vous utilisez des outils d'analyse et des exemples de bloc-notes avec les tâches d'entraînement TensorFlow 2.3 et l'option de profilage détaillé.

  • Le profilage Python et le profilage détaillé ne sont pris en charge que pour l'API Keras.

  • Actuellement, pour accéder à la fonction de profilage de deep learning pour TensorFlow et PyTorch, vous devez spécifier les dernières images des conteneurs AWS Deep Learning Containers avec CUDA 11. Par exemple, vous devez spécifier l'URI d'image spécifique dans l'estimateur TensorFlow et PyTorch 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 des opérations d'API fonctionnelles. Debugger ne peut pas collecter les tenseurs de sortie de modèle à partir de scripts d'entraînement PyTorch et MxNet composés d'opérations d'API fonctionnelles.

    • Debugger ne peut pas collecter les tenseurs de sortie de modèle à partir des opérations d'API torch.nn.functional. Lorsque vous écrivez un script d'entraînement PyTorch, nous vous recommandons d'utiliser les modèles torch.nn à la place.

    • Debugger ne peut pas collecter de tenseurs de sortie de modèle à partir d'objets fonctionnels MxNet dans des blocs hybrides. Par exemple, les sorties d'activation ReLu (F.relu) ne peuvent pas être collectées à partir de l'exemple suivant de mxnet.gluon.HybridBlock avec F dans la fonction hybrid_forward.

      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)))