Accelerate documentation
Amazon SageMaker
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]" --upgradeAccelerate 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 :
accelerateVous 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)): 1Accelerate 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_scriptCela 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.gzFonctions 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: falseEntraî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: localConfiguration 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: TrueVous 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: 86400Remarque : 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