Accelerate documentation
Amazon SageMaker
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]" --upgradeAccelerate в настоящее время использует 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)): 1Accelerate проведёт вас через анкету о вашей конфигурации 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