Accelerate documentation
Amazon SageMaker
Amazon SageMaker
Hugging Face 和 Amazon 推出了新的 Hugging Face Deep Learning Containers (DLCs),让在 Amazon SageMaker 中训练 Hugging Face Transformer 模型变得比以往更加轻松。
入门
设置与安装
在 Amazon SageMaker 上运行 Accelerate 脚本之前,您需要注册一个 AWS 账户。如果您还没有 AWS 账户,请参见此处了解更多信息。
创建 AWS 账户后,您需要使用以下命令安装用于 Accelerate 的 sagemaker sdk:
pip install "accelerate[sagemaker]" --upgradeAccelerate 目前使用 DLC,其中已预装了 transformers、datasets 和 tokenizers。Accelerate 尚未包含在 DLC 中(即将添加!),因此要在 Amazon SageMaker 中使用它,您需要在训练脚本所在的同一目录中创建一个 requirements.txt 文件,并将其添加为依赖项:
accelerate您还应将其他所有依赖项添加到这个 requirements.txt 中。
配置 Accelerate
您可以像使用 Accelerate CLI 配置非 SageMaker 训练任务一样,为 Amazon SageMaker 配置启动配置:
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]。
启动训练
您可以使用 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,请在被询问 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(深度学习容器)内本地运行训练脚本,或使用自定义容器镜像。这对于在最终的容器环境中调试和测试训练脚本非常有用。 本地模式使用 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 Instances
您可以使用 Spot 实例,例如通过(参见 高级配置):
additional_args:
use_spot_instances: True
max_wait: 86400注意:Spot Instances 可能会被终止,训练需要从检查点继续。Accelerate 默认不支持此功能。如果您需要此功能,请联系我们。
远程脚本:使用位于 Github 上的脚本
尚未确定是否需要此功能。如果您希望添加此功能,请联系我们。
Update on GitHub