Exécution de tâches d’entraînement PyTorch avec SageMaker Training Compiler - 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.

Exécution de tâches d’entraînement PyTorch avec SageMaker Training Compiler

Vous pouvez utiliser n’importe quelle interface SageMaker AI pour exécuter une tâche d’entraînement avec SageMaker Training Compiler : Amazon SageMaker Studio Classic, instances de bloc-notes Amazon SageMaker, AWS SDK pour Python (Boto3) ou AWS Command Line Interface.

Utilisation du kit SDK SageMaker Python

SageMaker Training Compiler pour PyTorch est actuellement disponible via les classes d’estimateur des cadres SageMaker AI PyTorch et HuggingFace. Pour activer SageMaker Training Compiler, ajoutez le paramètre compiler_config aux estimateurs SageMaker AI. Importez la classe TrainingCompilerConfig et transmettez-en une instance au paramètre compiler_config. Les exemples de code suivants montrent la structure des classes d’estimateur SageMaker AI avec SageMaker Training Compiler activé.

Astuce

Pour commencer à utiliser les modèles prédéfinis fournis par PyTorch ou Transformers, essayez d’utiliser les tailles de lot fournies dans le tableau de référence figurant dans Modèles testés.

Note

La prise en charge PyTorch native est disponible dans le kit SageMaker Python SDK v2.121.0 et ultérieures. Assurez-vous de mettre à jour le kit SageMaker Python SDK en conséquence.

Note

À partir de PyTorch v1.12.0, les conteneurs SageMaker Training Compiler pour PyTorch sont disponibles. Notez que les conteneurs SageMaker Training Compiler pour PyTorch ne sont pas pré-conçus avec Hugging Face Transformers. Si vous devez installer la bibliothèque dans le conteneur, assurez-vous d’ajouter le fichier requirements.txt dans le répertoire source lorsque vous soumettez une tâche d’entraînement.

Pour PyTorch v1.11.0 et antérieures, utilisez les versions précédentes des conteneurs SageMaker Training Compiler pour Hugging Face et PyTorch.

Pour obtenir la liste complète des versions de cadre et des informations sur les conteneurs correspondants, consultez Cadres pris en charge.

Pour obtenir des informations adaptées à votre cas d’utilisation, consultez l’une des options suivantes.

PyTorch v1.12.0 and later

Pour compiler et entraîner un modèle PyTorch, configurez un estimateur SageMaker AI PyTorch avec SageMaker Training Compiler, comme illustré dans l’exemple de code suivant.

Note

Cette prise en charge PyTorch native est disponible dans le kit SageMaker AI Python SDK v2.120.0 et ultérieures. Assurez-vous de mettre à jour le kit SageMaker AI Python SDK.

from sagemaker.pytorch import PyTorch, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_estimator=PyTorch( entry_point='train.py', source_dir='path-to-requirements-file', # Optional. Add this if need to install additional packages. instance_count=1, instance_type='ml.p3.2xlarge', framework_version='1.13.1', py_version='py3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_estimator.fit()
Hugging Face Transformers with PyTorch v1.11.0 and before

Pour compiler et entraîner un modèle de transformeur avec PyTorch, configurez un estimateur SageMaker AI Hugging Face avec SageMaker Training Compiler, comme illustré dans l’exemple de code suivant.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', pytorch_version='1.11.0', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()

Pour préparer votre script d’entraînement, consultez les pages suivantes.

Pour trouver des exemples de bout en bout, consultez les blocs-notes suivants :

PyTorch v1.12

Pour PyTorch v1.12, vous pouvez exécuter un entraînement distribué avec SageMaker Training Compiler en ajoutant l’option pytorch_xla spécifiée pour le paramètre distribution de la classe d’estimateur SageMaker AI PyTorch.

Note

Cette prise en charge PyTorch native est disponible dans le kit SageMaker AI Python SDK v2.121.0 et ultérieures. Assurez-vous de mettre à jour le kit SageMaker AI Python SDK.

from sagemaker.pytorch import PyTorch, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_estimator=PyTorch( entry_point='your_training_script.py', source_dir='path-to-requirements-file', # Optional. Add this if need to install additional packages. instance_count=instance_count, instance_type=instance_type, framework_version='1.13.1', py_version='py3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), distribution ={'pytorchxla' : { 'enabled': True }}, disable_profiler=True, debugger_hook_config=False ) pytorch_estimator.fit()
Astuce

Pour préparer votre script d’entraînement, consultez PyTorch

Transformers v4.21 with PyTorch v1.11

Pour PyTorch v1.11 et versions ultérieures, SageMaker Training Compiler est disponible pour l’entraînement distribué avec l’option pytorch_xla spécifiée pour le paramètre distribution.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_huggingface_estimator=HuggingFace( entry_point='your_training_script.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', pytorch_version='1.11.0', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), distribution ={'pytorchxla' : { 'enabled': True }}, disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()
Astuce

Pour préparer votre script d’entraînement, consultez les pages suivantes.

Transformers v4.17 with PyTorch v1.10.2 and before

Pour la version prise en charge de PyTorch v1.10.2 ou version antérieure, SageMaker Training Compiler nécessite un autre mécanisme pour lancer une tâche d’entraînement distribué. Pour exécuter un entraînement distribué, SageMaker Training Compiler exige que vous transmettiez un script de lancement d’entraînement distribué SageMaker AI à l’argument entry_point et que vous transmettiez votre script d’entraînement à l’argument hyperparameters. L’exemple de code suivant montre comment configurer un estimateur SageMaker AI Hugging Face en appliquant les modifications requises.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count training_script="your_training_script.py" hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate, "training_script": training_script # Specify the file name of your training script. } pytorch_huggingface_estimator=HuggingFace( entry_point='distributed_training_launcher.py', # Specify the distributed training launcher script. instance_count=instance_count, instance_type=instance_type, transformers_version='4.17.0', pytorch_version='1.10.2', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()

Le script de lancement devrait ressembler à l’exemple suivant. Il enveloppe votre script d’entraînement et configure l’environnement d’entraînement distribué en fonction de la taille de l’instance d’entraînement de votre choix.

# distributed_training_launcher.py #!/bin/python import subprocess import sys if __name__ == "__main__": arguments_command = " ".join([arg for arg in sys.argv[1:]]) """ The following line takes care of setting up an inter-node communication as well as managing intra-node workers for each GPU. """ subprocess.check_call("python -m torch_xla.distributed.sm_dist " + arguments_command, shell=True)
Astuce

Pour préparer votre script d’entraînement, consultez les pages suivantes.

La liste suivante est l’ensemble minimal de paramètres requis pour exécuter une tâche d’entraînement SageMaker avec le compilateur.

Note

Lorsque vous utilisez l’estimateur SageMaker AI Hugging Face, vous devez spécifier les paramètres transformers_version, pytorch_version, hyperparameters et compiler_config pour activer SageMaker Training Compiler. Vous ne pouvez pas utiliser image_uri pour spécifier manuellement les conteneurs de deep learning intégrés à Training Compiler qui sont répertoriés dans Cadres pris en charge.

  • entry_point (str) : obligatoire. Spécifiez le nom de fichier de votre script d’entraînement.

    Note

    Pour exécuter un entraînement distribué avec SageMaker Training Compiler et PyTorch v1.10.2 ou version antérieure, spécifiez le nom de fichier d’un script de lancement dans ce paramètre. Le script de lancement doit être prêt à envelopper votre script d’entraînement et à configurer l’environnement d’entraînement distribué. Pour plus d’informations, consultez les exemples de blocs-notes suivants :

  • source_dir (str) : facultatif. Ajoutez-le si vous devez installer des packages supplémentaires. Pour installer des packages, vous devez préparer un fichier requirements.txt dans ce répertoire.

  • instance_count (int) : obligatoire. Spécifiez le nombre d’instances.

  • instance_type (str) : obligatoire. Spécifiez le type d’instance.

  • transformers_version (str) : obligatoire uniquement lors de l’utilisation de l’estimateur SageMaker AI Hugging Face. Spécifiez la version de la bibliothèque Hugging Face Transformers prise en charge par SageMaker Training Compiler. Pour trouver les versions disponibles, consultez Cadres pris en charge.

  • framework_version ou pytorch_version (str) : obligatoire. Spécifiez la version de PyTorch prise en charge par SageMaker Training Compiler. Pour trouver les versions disponibles, consultez Cadres pris en charge.

    Note

    Lorsque vous utilisez l’estimateur SageMaker AI Hugging Face, vous devez spécifier à la fois transformers_version et pytorch_version.

  • hyperparameters (dict) : facultatif. Spécifiez des hyperparamètres pour la tâche d’entraînement, tels que n_gpus, batch_size et learning_rate. Lorsque vous activez SageMaker Training Compiler, essayez des lots plus volumineux et ajustez le taux d’entraînement en conséquence. Pour trouver des études de cas sur l’utilisation du compilateur et l’ajustement de la taille des lots pour améliorer la vitesse d’entraînement, consultez Modèles testés et Exemples de blocs-notes et de blogs du SageMaker Training Compiler.

    Note

    Pour exécuter un entraînement distribué avec SageMaker Training Compiler et PyTorch v1.10.2 ou version antérieure, vous devez ajouter un paramètre supplémentaire, "training_script", pour spécifier votre script d’entraînement, comme illustré dans l’exemple de code précédent.

  • compiler_config (objet TrainingCompilerConfig) : obligatoire pour activer SageMaker Training Compiler. Incluez ce paramètre pour activer SageMaker Training Compiler. Les paramètres suivants sont destinés à la classe TrainingCompilerConfig.

    • enabled (bool) : facultatif. Spécifiez True ou False pour activer ou désactiver SageMaker Training Compiler. La valeur par défaut est True.

    • debug (bool) : facultatif. Pour recevoir des journaux d’entraînement plus détaillés de vos tâches d’entraînement accélérées par le compilateur, remplacez la valeur par True. Cependant, la journalisation supplémentaire peut ajouter une surcharge et ralentir la tâche d’entraînement compilé. La valeur par défaut est False.

  • distribution (dict) : facultatif. Pour exécuter une tâche d’entraînement distribué avec SageMaker Training Compiler, ajoutez distribution = { 'pytorchxla' : { 'enabled': True }}.

Avertissement

Si vous activez SageMaker Debugger, cela peut avoir un impact sur les performances de SageMaker Training Compiler. Nous vous recommandons de désactiver Debugger lors de l’exécution de SageMaker Training Compiler pour éviter tout impact sur les performances. Pour plus d’informations, consultez Considérations. Pour désactiver les fonctionnalités de Debugger, ajoutez les deux arguments suivants à l’estimateur :

disable_profiler=True, debugger_hook_config=False

Si la tâche d’entraînement avec le compilateur est lancée avec succès, vous recevez les journaux suivants lors de la phase d’initialisation de la tâche :

  • Avec TrainingCompilerConfig(debug=False)

    Found configuration for Training Compiler Configuring SM Training Compiler...
  • Avec TrainingCompilerConfig(debug=True)

    Found configuration for Training Compiler Configuring SM Training Compiler... Training Compiler set to debug mode

Utilisation de l’opération d’API SageMaker AI CreateTrainingJob

Les options de configuration de SageMaker Training Compiler doivent être spécifiées via les champs AlgorithmSpecification et HyperParameters dans la syntaxe de demande pour l’opération d’API CreateTrainingJob.

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false", "sagemaker_pytorch_xla_multi_worker_enabled": "false" // set to "true" for distributed training }

Pour trouver une liste complète des URI d’image de conteneur Deep Learning Containers qui ont SageMaker Training Compiler implémenté, consultez Cadres pris en charge.