加速文档

Amazon SageMaker

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

Amazon SageMaker

Hugging Face 和 Amazon 推出了新的 Hugging Face 深度学习容器 (DLC),使在 Amazon SageMaker 中训练 Hugging Face Transformer 模型比以往任何时候都更容易。

快速入门

设置与安装

在您可以在 Amazon SageMaker 上运行 Accelerate 脚本之前,您需要注册一个 AWS 账户。如果您还没有 AWS 账户,请了解更多信息 此处

拥有 AWS 账户后,您需要使用以下命令安装 Accelerate 的 sagemaker sdk

pip install "accelerate[sagemaker]" --upgrade

Accelerate 目前使用 DLC,其中预安装了 transformersdatasetstokenizers。Accelerate 尚未包含在 DLC 中(很快就会添加!),因此要在 Amazon SageMaker 中使用它,您需要在训练脚本所在的同一目录中创建一个 requirements.txt 并将其添加为依赖项

accelerate

您还应将任何其他依赖项添加到此 requirements.txt 中。

配置 Accelerate

您可以像对非 SageMaker 训练作业一样配置 Amazon 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 操作。例如,如果您想使用布尔超参数,则需要在脚本中将类型指定为 bool,并为此超参数提供显式的 True 或 False 值。 [REF]

启动训练

您可以使用 Accelerate CLI 启动训练

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 config 设置加速配置,并回答 SageMaker 的问题并进行设置。要使用 SageMaker DDP,在询问 分布式模式是什么?([0] 无分布式训练,[1] 数据并行):时选择它。以下为配置示例

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: py38
pytorch_version: 1.10.2
region: us-east-1
transformers_version: 4.17.0
use_cpu: false

分布式训练:模型并行

目前正在开发中,很快就会得到支持。

Python 包和依赖项

Accelerate 目前使用 DLC,其中预安装了 transformersdatasetstokenizers。如果您想使用不同的/其他 Python 包,可以通过将它们添加到 requirements.txt 中来实现。这些软件包将在您的训练脚本启动之前安装。

本地训练:SageMaker 本地模式

SageMaker SDK 中的本地模式允许您在 HuggingFace DLC(深度学习容器)内部或使用您自定义的容器镜像本地运行训练脚本。这对于在最终容器环境中调试和测试您的训练脚本非常有用。本地模式使用 Docker Compose(注意:目前尚不支持 Docker Compose V2)。SDK 将处理针对 ECR 的身份验证,以将 DLC 拉取到您的本地环境。您可以模拟 CPU(单实例和多实例)和 GPU(单实例)SageMaker 训练作业。

要使用本地模式,您需要将 ec2_instance_type 设置为 local

ec2_instance_type: local

高级配置

配置允许您覆盖 估计器 的参数。这些设置必须在配置文件中应用,而不是 accelerate config 的一部分。您可以控制训练作业的许多其他方面,例如使用 Spot 实例、启用网络隔离等等。

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

您可以在 此处 找到所有可用的配置。

使用 Spot 实例

您可以使用 Spot 实例,例如使用(参见 高级配置

additional_args:
  use_spot_instances: True
  max_wait: 86400

注意:Spot 实例可能会被终止,并且训练需要从检查点继续。Accelerate 未开箱即用地处理此问题。如果您需要此功能,请联系我们。

远程脚本:使用位于 GitHub 上的脚本

尚未确定是否需要此功能。如果您需要此功能,请联系我们。

< > GitHub 上的更新