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 и Amazon представили новые контейнеры Hugging Face Deep Learning Containers (DLC), чтобы сделать обучение моделей Transformers от Hugging Face в Amazon SageMaker проще, чем когда-либо.

Начало работы

Настройка и установка

Прежде чем запускать свои скрипты Accelerate на Amazon SageMaker, вам необходимо зарегистрировать аккаунт AWS. Если у вас еще нет аккаунта AWS, подробнее об этом можно узнать здесь.

После того как у вас появится аккаунт AWS, вам нужно установить sagemaker sdk для Accelerate с помощью:

pip install "accelerate[sagemaker]" --upgrade

Accelerate в настоящее время использует DLC, в которых предварительно установлены transformers, datasets и tokenizers. Сам Accelerate пока не входит в DLC (скоро будет добавлен!), поэтому для его использования в Amazon SageMaker необходимо создать requirements.txt в той же директории, где находится ваш скрипт обучения, и добавить его как зависимость:

accelerate

Также добавьте в этот requirements.txt все остальные зависимости, которые вам нужны.

Настройка Accelerate

Вы можете настроить конфигурацию запуска для Amazon SageMaker так же, как для задач обучения, не использующих SageMaker, с помощью Accelerate CLI:

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

Accelerate проведёт вас через анкету о вашей конфигурации Amazon SageMaker и создаст файл конфигурации, который можно отредактировать.

Accelerate не сохраняет ваши учётные данные.

Подготовка скрипта дообучения с Accelerate

Скрипт обучения очень похож на скрипт, который вы могли бы запустить вне SageMaker, но для сохранения модели после обучения необходимо указать /opt/ml/model или использовать os.environ["SM_MODEL_DIR"] в качестве каталога для сохранения. После обучения артефакты из этого каталога загружаются в S3:

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

SageMaker не поддерживает действия argparse. Если вы хотите использовать, например, булевы гиперпараметры, вам нужно указать type как bool в вашем скрипте и предоставить явное значение True или False для этого гиперпараметра. [REF].

Запуск обучения

Вы можете запустить обучение с помощью CLI Accelerate:

accelerate launch path_to_script.py --args_to_the_script

Это запустит ваш скрипт обучения с использованием вашей конфигурации. Единственное, что вам нужно сделать, — это передать все аргументы, необходимые вашему скрипту обучения, в виде именованных аргументов.

Примеры

Если вы запускаете один из примеров скриптов, не забудьте добавить в него accelerator.save('/opt/ml/model').

accelerate launch ./examples/sagemaker_example.py

Результаты:

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

Расширенные функции

Распределённое обучение: параллелизм данных

Настройте конфигурацию accelerate, выполнив accelerate config и ответив на вопросы SageMaker. Чтобы использовать SageMaker DDP, выберите его, когда будет задан вопрос What is the distributed mode? ([0] No distributed training, [1] data parallelism):. Пример конфигурации приведён ниже:

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

Распределённое обучение: параллелизм моделей

в настоящее время находится в разработке, поддержка будет добавлена в ближайшее время.

Пакеты и зависимости Python

Accelerate в настоящее время использует DLC, в которые предварительно установлены transformers, datasets и tokenizers. Если вам необходимо использовать другие или дополнительные пакеты Python, вы можете добавить их в requirements.txt. Эти пакеты будут установлены перед запуском вашего скрипта обучения.

Локальная тренировка: локальный режим SageMaker

Локальный режим в SageMaker SDK позволяет запускать скрипт обучения локально внутри контейнера HuggingFace DLC (Deep Learning container) или с использованием собственного образа контейнера. Это полезно для отладки и тестирования скрипта обучения в конечном окружении контейнера. Локальный режим использует Docker compose (Примечание: Docker Compose V2 пока не поддерживается). SDK обеспечивает аутентификацию для ECR, чтобы загрузить DLC в локальное окружение. Можно эмулировать задачи обучения SageMaker на CPU (одиночный и многоинстансный режимы) и GPU (одиночный инстанс).

Для использования локального режима необходимо установить значение ec2_instance_type в local.

ec2_instance_type: local

Расширенная конфигурация

Конфигурация позволяет переопределять параметры Estimator. Эти настройки необходимо указать в файле конфигурации; они не являются частью accelerate config. Вы можете управлять многими дополнительными аспектами задачи обучения, например, использовать Spot-инстансы, включить сетевую изоляцию и многое другое.

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

Все доступные конфигурации можно найти здесь.

Использование Spot-инстансов

Вы можете использовать Spot Instances, например, с помощью (см. Расширенная конфигурация):

additional_args:
  use_spot_instances: True
  max_wait: 86400

Примечание: Spot Instances могут быть завершены, а обучение продолжено с контрольной точки. В Accelerate это не поддерживается из коробки. Свяжитесь с нами, если вам нужна эта функция.

Удалённые скрипты: использование скриптов, размещённых на Github

Не определено, нужна ли эта функция. Свяжитесь с нами, если вы хотите, чтобы она была реализована.

Update on GitHub