通过 Hugging Face 和 Amazon SageMaker 进行 BART 和 T5 的摘要生成分布式训练
Hugging Face 和 Amazon SageMaker 已经集成,以提供优化的深度学习容器 (DLCs) 以及 SageMaker Python SDK 中专用的 HuggingFace 估计器。此次合作允许开发人员使用分布式训练策略来训练最先进的 NLP 模型(如 BART 和 T5),从而加速性能并缩短训练时间。
用于 Transformers 的优化基础设施
Amazon SageMaker 现在具备针对 Hugging Face 优化的深度学习容器,以加速基于 Transformers 的模型的训练。为了简化部署流程,SageMaker Python SDK 包含一个 HuggingFace 估计器,使用户能够以极少的代码启动训练任务。
使用 SageMaker 数据并行进行分布式训练
分布式训练通过 SageMaker Data Parallelism 实现,该功能已集成到 Hugging Face Trainer API 中。通过在 HuggingFace 估计器中定义 distribution 参数,用户可以跨多个 GPU 和实例扩展训练。
配置示例:
distribution = {'smdistributed':{'dataparallel':{ 'enabled': True }}}
在分布式设置中,总批次大小 (total batch size) 计算为 per_device_train_batch_size 乘以所有实例中使用的 GPU 数量。
技术实现:针对摘要生成微调 BART
为了演示集成情况,我们在 samsum 数据集上对 BART-large-cnn 模型进行了微调,该数据集包含大约 16,000 条类似即时通讯的对话及其相应的摘要。
硬件和超参数
训练是使用以下配置进行的:
- 实例类型:
ml.p3dn.24xlarge(包含 8x NVIDIA V100 GPU) - 实例数量: 2 (总计 16 个 GPU)
- 总批次大小: 64 (每个设备 4 * 16 个 GPU)
- 模型大小: 4 亿参数
- 训练轮数 (Epochs): 3
- 学习率: 5e-5
- 精度: 已启用 FP16
性能和成本
训练任务在 2,882 个计费秒内完成。对于使用 16 个 NVIDIA Tesla V100 GPU 的此特定配置,成本约为 $28。
模型部署与 Hub 集成
训练完成后,模型工件 (artifacts) 将存储在 Amazon S3 中。共享模型的流程包括:
- 下载工件: 使用
S3Downloader从 S3 获取训练好的模型。 - 创建模型卡片 (Model Card): 生成一个包含超参数和评估指标(如 ROUGE-1、ROUGE-2 和 ROUGE-L)的
README.md。 - Hub 上传: 利用
huggingface_hubSDK 创建存储库并将微调后的模型推送到 huggingface.co,以便进行公开访问和托管推理测试。