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 é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 HorovodCadre 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 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 SageMakerCadre 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 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 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 classeFrameworkProfile
. 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 demxnet.gluon.HybridBlock
avec F
dans la fonctionhybrid_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)))
-