Accelerate 文档
Amazon SageMaker
并获得增强的文档体验
开始使用
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 目前使用预装了 transformers
、datasets
和 tokenizers
的 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 目前使用预装了 transformers
、datasets
和 tokenizers
的 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 上更新