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 la consommation de mémoire GPU. 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 avez également le choix entre deux profileurs Python : cProfile et Pyinstrument. -
cProfile : profileur Python standard. cProfile collecte des informations pour chaque opérateur Python appelé pendant l'entraînement. Avec cProfile, Debugger économise du temps cumulé et des annotations pour chaque appel de fonction, fournissant des détails complets sur les 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. Bien que vous puissiez profiler chaque appel de fonction exécuté 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 à 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é 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 ralentir le temps global d'entraînement. cProfile profile les opérateurs Python les plus fréquemment appelés à chaque appel, de sorte que le temps de traitement du 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.
-
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