Accelerate documentation

Amazon SageMaker

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.15.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Amazon SageMaker

Hugging Face et Amazon ont présenté de nouveaux conteneurs d’apprentissage profond Hugging Face (DLC) afin de faciliter plus que jamais l’entraînement des modèles Transformers de Hugging Face dans Amazon SageMaker.

Premiers pas

Configuration et installation

Avant d’exécuter vos scripts Accelerate sur Amazon SageMaker, vous devez vous inscrire à un compte AWS. Si vous n’avez pas encore de compte AWS, en savoir plus ici.

Une fois votre compte AWS créé, vous devez installer le sdk sagemaker pour Accelerate avec :

pip install "accelerate[sagemaker]" --upgrade

Accelerate utilise actuellement les DLC, avec transformers, datasets et tokenizers préinstallés. Accelerate n’est pas encore présent dans le DLC (il le sera bientôt !) ; pour l’utiliser dans Amazon SageMaker, vous devez créer un requirements.txt dans le même répertoire que votre script d’entraînement et l’ajouter en tant que dépendance :

accelerate

Vous devez également ajouter toutes les autres dépendances à ce requirements.txt.

Configurer Accelerate

Vous pouvez configurer la configuration de lancement pour Amazon SageMaker de la même manière que pour les tâches d'entraînement non SageMaker avec l'interface en ligne de commande Accelerate :

accelerate config
# In which compute environment are you running? ([0] This machine, [1] AWS (Amazon SageMaker)): 1

Accelerate vous posera une série de questions sur votre configuration Amazon SageMaker et créera un fichier de configuration que vous pourrez modifier.

Accelerate ne conserve aucune de vos informations d'identification.

Préparer un script de fine-tuning Accelerate

Le script d'entraînement est très similaire à un script d'entraînement que vous pourriez exécuter en dehors de SageMaker, mais pour enregistrer votre modèle après l'entraînement, vous devez spécifier /opt/ml/model ou utiliser os.environ["SM_MODEL_DIR"] comme répertoire d'enregistrement. Après l'entraînement, les artefacts de ce répertoire sont téléversés sur S3 :

- torch.save('/opt/ml/model`)
+ accelerator.save('/opt/ml/model')

SageMaker ne prend pas en charge les actions argparse. Si vous souhaitez utiliser, par exemple, des hyperparamètres booléens, vous devez spécifier type comme bool dans votre script et fournir une valeur explicite True ou False pour cet hyperparamètre. [REF].

Lancer l'entraînement

Vous pouvez lancer votre entraînement avec l'interface en ligne de commande d'Accelerate en utilisant :

accelerate launch path_to_script.py --args_to_the_script

Cela lancera votre script d’entraînement en utilisant votre configuration. La seule chose à faire est de fournir tous les arguments nécessaires à votre script d’entraînement sous forme d’arguments nommés.

Exemples

Si vous exécutez l'un des scripts d'exemple, n'oubliez pas d'y ajouter accelerator.save('/opt/ml/model').

accelerate launch ./examples/sagemaker_example.py

Sorties :

Configuring Amazon SageMaker environment
Converting Arguments to Hyperparameters
Creating Estimator
2021-04-08 11:56:50 Starting - Starting the training job...
2021-04-08 11:57:13 Starting - Launching requested ML instancesProfilerReport-1617883008: InProgress
.........
2021-04-08 11:58:54 Starting - Preparing the instances for training.........
2021-04-08 12:00:24 Downloading - Downloading input data
2021-04-08 12:00:24 Training - Downloading the training image..................
2021-04-08 12:03:39 Training - Training image download completed. Training in progress..
........
epoch 0: {'accuracy': 0.7598039215686274, 'f1': 0.8178438661710037}
epoch 1: {'accuracy': 0.8357843137254902, 'f1': 0.882249560632689}
epoch 2: {'accuracy': 0.8406862745098039, 'f1': 0.8869565217391304}
........
2021-04-08 12:05:40 Uploading - Uploading generated training model
2021-04-08 12:05:40 Completed - Training job completed
Training seconds: 331
Billable seconds: 331
You can find your model data at: s3://your-bucket/accelerate-sagemaker-1-2021-04-08-11-56-47-108/output/model.tar.gz

Fonctions avancées

Entraînement distribué : parallélisme de données

Configurez l’accelerate config en exécutant accelerate config et en répondant aux questions de SageMaker pour le configurer. Pour utiliser SageMaker DDP, sélectionnez-le lorsque la question What is the distributed mode? ([0] No distributed training, [1] data parallelism): est posée. Exemple de configuration ci-dessous :

base_job_name: accelerate-sagemaker-1
compute_environment: AMAZON_SAGEMAKER
distributed_type: DATA_PARALLEL
ec2_instance_type: ml.p3.16xlarge
iam_role_name: xxxxx
image_uri: null
mixed_precision: fp16
num_machines: 1
profile: xxxxx
py_version: py10
pytorch_version: 2.5.0
region: us-east-1
transformers_version: 4.17.0
use_cpu: false

Entraînement distribué : parallélisme de modèle

actuellement en cours de développement, sera bientôt pris en charge.

Paquets et dépendances Python

Accelerate utilise actuellement les DLC, avec transformers, datasets et tokenizers préinstallés. Si vous souhaitez utiliser d’autres paquets Python, vous pouvez le faire en les ajoutant à requirements.txt. Ces paquets seront installés avant le lancement de votre script d’entraînement.

Entraînement local : mode local de SageMaker

Le mode local du SDK SageMaker vous permet d'exécuter votre script d'entraînement localement dans le conteneur HuggingFace DLC (Deep Learning container) ou en utilisant votre image de conteneur personnalisée. Cela est utile pour déboguer et tester votre script d'entraînement dans l'environnement de conteneur final. Le mode local utilise Docker compose (Note : Docker Compose V2 n'est pas encore pris en charge). Le SDK gère l'authentification auprès d'ECR pour récupérer le DLC dans votre environnement local. Vous pouvez émuler des tâches d'entraînement SageMaker sur CPU (instance unique et multi-instances) et sur GPU (instance unique).

Pour utiliser le mode local, vous devez définir votre ec2_instance_type sur local.

ec2_instance_type: local

Configuration avancée

La configuration vous permet de remplacer les paramètres de l'Estimator. Ces réglages doivent être appliqués dans le fichier de configuration et ne font pas partie de accelerate config. Vous pouvez contrôler de nombreux autres aspects du travail d'entraînement, par exemple l'utilisation d'instances Spot, l'activation de l'isolation réseau et bien d'autres.

additional_args:
  # enable network isolation to restrict internet access for containers
  enable_network_isolation: True

Vous pouvez trouver toutes les configurations disponibles ici.

Utiliser des instances Spot

Vous pouvez utiliser des Spot Instances, par exemple en utilisant (voir Configuration avancée) :

additional_args:
  use_spot_instances: True
  max_wait: 86400

Remarque : les Spot Instances peuvent être interrompues et l’entraînement doit reprendre depuis un point de contrôle. Cette fonctionnalité n’est pas prise en charge par défaut dans Accelerate. Contactez-nous si vous souhaitez cette fonctionnalité.

Scripts distants : utilisez des scripts situés sur Github

Il n'est pas encore décidé si cette fonctionnalité est nécessaire. Contactez-nous si vous souhaitez cette fonctionnalité.

Update on GitHub