Accelerate 文档

Amazon SageMaker

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Amazon SageMaker

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

入门

设置与安装

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

拥有 AWS 账户后,您需要通过以下命令为 Accelerate 安装 sagemaker SDK

pip install "accelerate[sagemaker]" --upgrade

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

accelerate

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

配置 Accelerate

您可以像为非 SageMaker 训练作业一样,使用 Accelerate CLI 为 Amazon SageMaker 配置启动配置

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` 值。[参考]

启动训练

您可以使用 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 来设置 accelerate 配置,回答 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: py10
pytorch_version: 2.5.0
region: us-east-1
transformers_version: 4.17.0
use_cpu: false

分布式训练:模型并行

当前正在开发中,很快将得到支持。

Python 包和依赖项

Accelerate 目前使用预装了 transformersdatasetstokenizers 的 DLC。如果您想使用不同/其他的 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 上更新