Surveillance du système par défaut et profilage personnalisé du framework avec différentes options de profilage - Amazon SageMaker AI

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.

Surveillance du système par défaut et profilage personnalisé du framework avec différentes options de profilage

Cette section fournit des informations sur les classes de configuration de profilage prises en charge, ainsi qu'un exemple de configuration. Vous pouvez utiliser les classes de configuration de profilage suivantes pour gérer les options de profilage de cadre :

  • DetailedProfilingConfig— Spécifiez une étape ou une plage de temps cible pour profiler les opérations du framework à l'aide des profileurs de framework natifs (TensorFlow profileur et PyTorch profileur). Par exemple, en cas d'utilisation TensorFlow, les hooks Debugger permettent au TensorFlow profileur de collecter des métriques spécifiques au framework 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 GPU la consommation de mémoire. Nous déconseillons d'activer le profilage détaillé pour plus de deux étapes.

  • DataloaderProfilingConfig— Spécifiez une étape ou une plage de temps cible pour profiler les processus du chargeur de données du framework d'apprentissage profond. Debugger collecte chaque événement de chargeur de données des cadres.

    Note

    Le profilage du 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 du chargeur de données pendant plus de deux étapes.

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

  • PythonProfilingConfig— Spécifiez une étape ou une plage de temps cible pour profiler les fonctions Python. Vous pouvez également choisir entre deux profileurs Python : cProfile et Pyinstrument.

    • cProfile— Le profileur Python standard. cProfile collecte des informations pour chaque opérateur Python appelé pendant l'entraînement. Grâce àcProfile, Debugger économise du temps cumulé et des annotations pour chaque appel de fonction, fournissant ainsi des informations complètes sur les fonctions Python. Dans le domaine de l'apprentissage profond, par exemple, les fonctions les plus fréquemment appelées peuvent être les filtres convolutifs et les opérateurs de retour en arrière, ainsi que les cProfile profils de chacun d'entre eux. Pour cProfile cette option, vous pouvez également sélectionner une option de minuterie : durée totale, CPU durée et CPU temps mort. Bien que vous puissiez profiler chaque appel de fonction exécuté sur les processeurs (à la fois CPUGPU) à CPU temps, vous pouvez également identifier les goulots d'étranglement liés aux E/S ou au réseau grâce à l'option « off- time ». CPU La valeur par défaut est le temps total, et le Debugger établit à la fois des profils CPU et des temps morts. CPU AveccProfile, vous pouvez accéder à toutes les fonctions lors de l'analyse des données de profil.

    • Pyinstrument : Pyinstrument est un profileur Python à faible charge 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é par l'horloge murale plutôt que le CPU temps, l'option Pyinstrument peut être un meilleur choix que l'option permettant de réduire le cProfile bruit de profilage (en filtrant les appels de fonctions non pertinents qui sont cumulativement rapides) et de capturer les opérateurs réellement gourmands en calcul (lenteurs cumulées) pour entraîner 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 ralentir le temps d'apprentissage global. cProfile établit le profil des opérateurs Python les plus fréquemment appelés à chaque appel, de sorte que le temps de traitement du profilage augmente en fonction du 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.

L'exemple de configuration suivant montre la structure complète lorsque vous utilisez les différentes options de profilage avec des valeurs spécifiées.

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

Pour plus d'informations sur les options de profilage disponibles DetailedProfilingConfigDataloaderProfilingConfig, consultez, et PythonProfilingConfigdans Amazon SageMaker Python SDK.