使用 AWS Batch 执行基于 GPU 的机器学习训练 - 高性价比的大规模训练方案
利用现有 Docker 容器执行 GPU 训练,通过 Spot 实例与检查点机制将成本最高降低 90%。同时介绍与 SageMaker 的使用场景区分。
在 Batch 上执行 GPU 训练的优势
SageMaker 是覆盖 ML 全生命周期的服务,但如果您希望直接使用现有的 Docker 容器和训练脚本,或者不符合 SageMaker 的框架限制,Batch 则是一个有力的选择。Batch 允许使用任意 Docker 镜像,可以自由组合 PyTorch、TensorFlow、JAX 等框架。只需在计算环境中指定 GPU 实例(P4d、P5、G5),并在作业定义中通过 resourceRequirements 指定 GPU 数量,即可执行基于 GPU 的训练。
Spot 实例与检查点
GPU 实例的按需价格较高,但使用 Spot 实例可实现最高 90% 的成本节省。为应对 Spot 中断,需要在训练脚本中实现检查点保存功能。每隔一定 epoch 将模型权重和优化器状态保存到 S3,中断后重试时从检查点恢复。Batch 具备 Spot 中断时自动重试作业的功能,可配置重试次数和策略。检查点保存间隔需在训练时间和存储成本之间取得平衡,通常为 30 分钟到 1 小时。
分布式训练与超参数搜索
通过多节点并行作业,可在多个 GPU 实例上执行分布式训练。使用 PyTorch 的 DistributedDataParallel 或 Horovod 进行数据并行以加速训练。Batch 会自动配置节点间通信(EFA: Elastic Fabric Adapter),简化了分布式训练的基础设施搭建。使用数组作业并行执行超参数搜索时,将每个任务的索引映射到超参数组合。可以并行运行数百种学习率、批量大小、Dropout 率的组合,高效找到最优配置。 如需系统学习机器学习算法,可参考相关技术书籍(Amazon)。
Batch GPU 训练的费用
AWS Batch 本身不产生额外费用,成本仅为所使用的 EC2 实例费用。GPU 实例价格较高,p4d.24xlarge(A100 x 8)按需价格约为每小时 32.77 美元,g5.xlarge(A10G x 1)约为 1.006 美元。使用 Spot 实例可获得最高 90% 的折扣,但存在中断风险,因此必须实现检查点机制。选择大型实例缩短训练时间,还是选择小型实例以较低成本长时间运行,需根据作业的紧急程度进行权衡。
总结
AWS Batch 非常适合利用现有 Docker 容器进行基于 GPU 的 ML 训练。通过 Spot 实例与检查点的组合大幅降低成本,利用数组作业并行化超参数搜索。当不需要 SageMaker 的托管功能、更注重训练环境灵活性时,这是一个有效的选择。