Contrôleur de tableau de bord Amazon SageMaker Debugger Insights - Amazon SageMaker

Contrôleur de tableau de bord Amazon SageMaker Debugger Insights

Il existe différents composants du contrôleur Debugger pour la surveillance et le profilage. Dans ce guide, vous allez découvrir les composants du contrôleur Debugger.

Note

Le tableau de bord Studio Debugger Insights exécute une appli Studio sur une instance ml.m5.4xlarge pour traiter et rendre les visualisations. Chaque onglet Debugger Insights exécute une session de noyau Studio. Plusieurs sessions de noyau pour plusieurs onglets Insights de Debugger s'exécutent sur une seule instance. Lorsque vous fermez un onglet Insights de Debugger, la session kernel correspondante se ferme également. L'appli Studio reste active et accumule les frais pour l'utilisation de l'instance ml.m5.4xlarge. Pour plus d'informations sur la tarification, consultez la page Tarification d'Amazon SageMaker.

Important

Lorsque vous avez terminé d'utiliser le tableau de bord Insights de Debugger, arrêtez l'instance ml.m5.4xlarge pour éviter l'accumulation de frais. Pour plus d'informations sur la façon d'arrêter une instance, consultez Arrêter l'instance Amazon SageMaker Debugger Insights.

Interface utilisateur du contrôleur SageMaker Debugger Insights

À l'aide du contrôleur Debugger situé en haut à gauche du tableau de bord Insights, vous pouvez actualiser le tableau de bord, configurer ou mettre à jour les paramètres Debugger pour contrôler les métriques système et les métriques de framework de profilage, arrêter la tâche d'entraînement et télécharger le rapport de profilage Debugger.


                    Contrôleurs du tableau de bord de Debugger Insights
  • Si vous souhaitez actualiser manuellement la page Debug (Déboguer) [nom-de-votre-tâche-d-entraînement], choisissez le bouton d'actualisation (la flèche arrondie en haut à gauche) comme indiqué dans la capture d'écran précédente.

  • La surveillance est activée par défaut pour toutes les tâches d'entraînement SageMaker. En contrôlant votre tâche d'entraînement, Debugger collecte uniquement les métriques système pour détecter les problèmes d'utilisation des ressources, tels que les goulets d'étranglement du CPU et la sous-utilisation du GPU. Pour obtenir la liste complète des problèmes d'utilisation des ressources que Debugger contrôle, consultez Règles intégrées Debugger pour la surveillance de l'utilisation des ressources matérielles du système (métriques système).

  • Pour télécharger un rapport de profilage complet Debugger avec les détails et l'analyse d'une tâche d'entraînement, choisissez Download report (Télécharger le rapport). Pour plus d'informations sur le rapport de profilage Debugger, consultez Rapport de profilage SageMaker Debugger.

Activer et configurer le profilage Debugger pour obtenir des informations détaillées

Lorsque vous activez le profilage, Debugger commence à collecter les métriques de cadre. Les métriques de framework sont des données de modèle collectées à partir des opérations de cadre ML de votre modèle, telles que les processus de transmission vers l'avant, de transmission vers l'arrière, de normalisation par lots et de chargement des données. Debugger met en corrélation les goulets d'étranglement des performances du système avec les opérations de cadre et exécute Règles intégrées Debugger pour le profilage des métriques de cadre.

Note

Une fois que vous avez activé le profilage, Debugger collecte chaque appel d'opération de cadre exécuté à chaque étape : opérations pour convoluer les couches d'entrée vers le bas pendant la transmission vers l'avant, mise à jour des pondérations de millions de neurones pendant la transmission vers l'arrière et processus du chargeur de données. Bien que le profilage vous permet de comprendre les performances du modèle à un niveau plus approfondi, la collecte de métriques du framework peut avoir un impact sur la durée de votre entraînement et ses performances. Nous vous recommandons d'activer le profilage pour inspecter votre modèle jusqu'à deux étapes à la fois. Pour de plus amples informations sur la configuration de Debugger pour le profilage de cadre à l'aide du kit SDK Python Amazon SageMaker, consultez Configurer le profilage du cadre Debugger et Mise à jour de la configuration de la surveillance système et du profilage de cadre de Debugger pendant l'exécution d'une tâche d'entraînement.

Si vous souhaitez activer le profilage pendant l'exécution de votre tâche d'entraînement, procédez comme suit pour démarrer le profilage.

  1. Dans Studio, activez Profiling (Profilage) pour activer le profilage de framework Debugger. Une page de configuration de surveillance et de profilage Debugger s'ouvre.

    
                            Activer le Profiling (Profilage) à l'aide de l'interface utilisateur du contrôleur du tableau de bord Insights de Debugger
  2. Dans Configure Debugger monitoring and profiling (Configurer la surveillance et le profilage Debugger), les champs S3 bucket URI (URI du compartiment S3) et Collect monitoring data every (Collecter les données de surveillance toutes les) sont déjà définis sur les valeurs par défaut.

    Vous pouvez choisir de modifier l'intervalle de surveillance à l'aide de la liste déroulante. Sélectionnez parmi les options disponibles suivantes : 100 millisecondes, 200 millisecondes, 500 millisecondes (par défaut), 1 seconde, 5 secondes et 1 minute.

    
                            debugger-studio-insight-mockup

    Indiquez des valeurs pour les champs suivants :

    • S3 bucket URI (URI du compartiment S3) : spécifiez l'URI du compartiment S3 de base.

    • Collect monitoring data every (Collecter les données de surveillance toutes les) : sélectionnez un intervalle de temps pour la collecte des métriques système.

      Note

      Si vous choisissez l'un des intervalles de temps les plus faibles, vous augmentez la granularité des métriques du système de surveillance. Il vous permet de capturer les pics et les anomalies avec une résolution temporelle plus élevée. Cependant, à mesure que la taille des métriques système à traiter augmente proportionnellement, cela peut avoir un impact sur la durée globale d'entraînement et de traitement.

  3. Dans Advanced settings for profiling (Paramètres avancés pour le profilage), configurez les options de profilage des métriques de cadre. Spécifiez Start step (Étape de démarrage) (ou Start time [Heure de début]) et Number of steps to profile (Nombre d'étapes à profiler) (ou Time duration to profile [Durée de profilage]) pour profiler. Vous pouvez également laisser les champs de saisie vides. Les valeurs par défaut sont automatiquement configurées pour utiliser l'étape en cours et pour une durée d'une étape.

    
                            debugger-studio-insight-mockup
    • Detailed profiling (Profilage détaillé) : spécifie une étape cible ou une plage de temps pour profiler les opérations de cadre à l'aide des profileurs de framework natifs (TensorFlow et PyTorch). Par exemple, si vous utilisez TensorFlow, les hooks Debugger permettent au profileur TensorFlow de collecter des métriques de framework spécifiques à TensorFlow. Le profilage détaillé vous permet de profiler tous les opérateurs de cadre à une étape préalable (avant la première étape), dans et entre les étapes d'une tâche d'entraînement.

      Note

      Le profilage détaillé peut augmenter considérablement la consommation de mémoire GPU. Nous déconseillons d'activer le profilage détaillé pendant plus de deux étapes.

    • Python profiling (Profilage Python) : spécifie une étape cible ou une plage de temps pour profiler les fonctions Python. Vous avez également le choix entre deux profileurs Python : cProfile et Pyinstrument.

      • cProfile : profileur Python standard. cProfile collecte pour chaque opérateur Python appelé pendant l'entraînement. Avec cProfile, Debugger permet d'économiser l'accumulation de temps et l'annotation de chaque appel de fonction, en fournissant le détail complet des fonctions Python. Dans le deep learning, par exemple, les fonctions les plus fréquemment appelées peuvent être les filtres convolutifs et les opérateurs de transmission vers l'arrière. cProfile profile chacun d'entre elles. Pour l'option cProfile, vous pouvez sélectionner une option de minuterie : temps total, temps CPU et temps hors CPU. Si vous pouvez profiler tous les appels de fonction exécutés sur des processeurs (CPU et GPU) en temps CPU, vous pouvez également identifier les goulets d'étranglement d'I/O ou de réseau avec l'option de temps hors CPU. La valeur par défaut est le temps total, et Debugger profile à la fois le temps CPU et le temps hors CPU. Avec cProfile, vous pouvez explorer en détail toutes les fonctions lors de l'analyse des données de profil.

      • Pyinstrument : Pyinstrument est un profileur Python sans frais généraux importants qui fonctionne sur la base de l'échantillonnage. Avec l'option Pyinstrument, Debugger échantillonne les événements de profilage toutes les millisecondes. Étant donné que Pyinstrument mesure le temps écoulé au lieu du temps CPU, l'option Pyinstrument peut être plus appropriée par rapport à l'option cProfile pour réduire le bruit de profilage (filtrage des appels de fonction non pertinents qui s'accumulent rapidement) et capturer les opérateurs qui sont en fait exigeants en calcul (s'accumulent lentement) pour l'entraînement de votre modèle. Avec Pyinstrument, vous pouvez voir une arborescence d'appels de fonctions et mieux comprendre la structure et la cause racine de la lenteur.

      Note

      L'activation du profilage Python peut entraîner un ralentissement de la durée d'entraînement globale. Dans le cas de cProfile, les opérateurs Python les plus fréquemment appelés sont profilés à chaque appel, de sorte que la durée de traitement sur le profilage augmente par rapport au nombre d'appels. Dans le cas de Pyinstrument, le temps de profilage cumulé augmente par rapport au temps en raison de son mécanisme d'échantillonnage.

    • Dataloader profiling (Profilage de chargeur de données) : spécifiez une étape ou une plage de temps cible pour profiler les processus du chargeur de données du framework de deep learning. Debugger collecte chaque événement de chargeur de données des cadres.

      Note

      Le profilage de chargeur de données peut réduire les performances d'entraînement lors de la collecte d'informations auprès des chargeurs de données. Nous déconseillons d'activer le profilage de chargeur de données pendant plus de deux étapes.

      Debugger est préconfiguré pour annoter les processus de chargeur de données uniquement pour les conteneurs AWS Deep Learning Containers. Debugger ne peut pas profiler les processus de chargeur de données sur d'autres conteneurs personnalisés ou externes.

  4. Choisissez Confirm (Confirmer) pour terminer votre configuration de profilage. Lorsque la configuration est mise à jour avec succès, vous devriez pouvoir voir le message de confirmation Debugger configuration updated successfully (Configuration de Debugger mise à jour avec succès), comme illustré dans l'image suivante.

    
                            debugger-studio-insight-mockup