加速文档

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

你可以使用 Accelerate CLI 配置 Amazon SageMaker 的启动配置,就像你为非 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 actions。如果你想使用例如布尔超参数,你需要在脚本中将类型指定为 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 问题并进行设置来设置 accelerate 配置。要使用 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 当前使用 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

高级配置

该配置允许你覆盖 Estimator 的参数。这些设置必须在配置文件中应用,而不是 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 上更新