亚马逊AWS官方博客
SNCF Réseau 和 Olexya 如何将 Caffe2 计算机视觉流水线任务迁移至 Amazon SageMaker 中的 Managed Spot Training
.本文由来自SNCF和Olexya的客座作者联合撰写。
运输与物流行业,可谓机器学习(ML)技术的沃土。在本文中,我们将了解法国国有铁路公司Société Nationale des Chemins de fer Français (SNCF),在其技术合作伙伴Olexya的帮助下,如何运用AWS提供的ML服务,研究、开发与部署创新的计算机视觉解决方案。
SNCF成立于1938年,目前拥有超过27万名员工。SNCF Réseau为SNCF旗下子公司,负责铁路网络基础设施的管理与运营工作。SNCF Réseau及其技术合作伙伴Olexya部署了一整套创的解决方案,希望以协助基础设施运营的同时,对基础设施安全性与质量保持高水平。现场团队使用计算机视觉检测基础设施中出现的异常。
SNCF Réseau的研究人员拥有丰富的ML经验,有一个团队已使用Caffe2深度学习框架开发出本地计算机视觉检测模型。接着,科学家们联系到SNCF Réseau的技术合作伙伴Olexya,他们帮助申请配置GPU资源来支持迭代模型。为了继续保持较低的运营开销与较高的生产效率,同时保持科学代码的全面灵活性,Olexya决定使用Amazon SageMaker编排Caffe2模型的训练与推理。整个流程涉及以下步骤:
- 创建自定义Docker。
- 通过 Amazon Simple Storage Service (Amazon S3)数据通道配置训练数据读取。
- 通过Amazon SageMaker Spot GPU训练实现有成本效益的训练。
- 使用Amazon SageMaker训练API实现有成本效益的推理。
创建自定义Docker
该团队创建一个Docker镜像,其中打包有符合Amazon SageMaker Docker规范的原始Caffe2代码。Amazon SageMaker能够容纳多个数据源,而且与Amazon S3进行了高级集成。存储在Amazon S3中的数据集能够被自动提取至运行在Amazon SageMaker上的训练容器当中。为了顺畅处理Amazon S3中的可用训练数据,Olexya需要指定训练代码从关联的本地路径 opt/ml/input/data/<channel name>
处执行读取。相似的,模型写入位置必须设定为opt/ml/model
。使用这种方式,在训练作业完成之后,Amazon SageMaker就能自动将训练完成的模型工件压缩并发送至Amazon S3。
通过 Amazon Simple Storage Service (Amazon S3)数据通道配置训练数据读取
原始Caffe2训练代码通过详尽且灵活的YAML配置文件实现参数调整,所以研究人员能够直接更改模型设置,而无需更改科学代码。外部文件很容易被保留在外部并在训练时使用数据通道读取到容器中。这里所说的数据通道,是指在训练过程中传递至Amazon SageMaker SDK的Amazon S3 ARN,其会在训练开始时被添加至Amazon SageMaker容器当中。Olexya将数据通道配置为通过副本读取的形式(即副本模式),这也是Amazon SageMaker中的默认配置。您也可以根据需求通过Unix管道(即Pipe模式)实现数据的流式传输。
通过Amazon SageMaker Spot GPU训练实现有成本效益的训练
该团队采用ml.p3.2xlarge GPU加速计算实例配置了训练基础设施。Amazon SageMaker ml.p3.2xlarge计算实例特别适用于深度学习计算机视觉类工作负载,其配备了一块有5120个核心的英伟达V100 GPU与16 GB高带宽内存(HBM),能够快速训练大型模型。
此外,Amazon SageMaker训练API被设置激活使用托管Spot实例,与Amazon SageMaker按需实例价格相比,Spot实例被报告节省了71%成本。Amazon SageMaker Managed Spot Training是Amazon SageMaker提供的功能选项,可使用Amazon Elastic Compute Cloud (Amazon EC2)Spot实例资源进行训练。Amazon EC2 Spot实例将处于闲置状态的冗余Amazon EC2计算容量以高折扣方式出售给客户。在Amazon SageMaker当中,Spot实例的实际使用由服务本身全面托管,用户可以设置两项训练SDK参数随时加以调用:
train_use_spot_instances=True
,用于请求Amazon SageMaker Spot实例的资源使用量。train_max_wait
,用于设置以秒为单位的最大可接受等待时长。
Amazon SageMaker训练API实现有成本效益的推理
在本次研究计划中,最终用户可以接受推理中断与实例化延迟。因此,为了进一步优化成本,团队使用Amazon SageMaker训练API运行推理代码,在托管的Amazon SageMaker Spot实例之上同样可以用来推理。除了成本优势之外,使用训练API还能够降低学习曲线,因为在模型训练与推理周期之内使用相同的API。
时间与成本节省效果
通过以上四个步骤,Olexya成功将本地Caffe2深度计算机视觉检测模型移植到Amazon SageMaker当中,实现训练与推理。更令人印象深刻的是,该团队在约三周之内完成了工具学习,并将模型的训练周期由三天缩减至十个小时!该团队还进一步估计,与原有的本地可用GPU集群相比,Amazon SageMaker得以将总体拥有成本(TCO)降低71%。除此之外,其他优化技术能够进一步降低成本,例如使用Amazon SageMaker自动模型调优进行超参数智能搜索,并使用与之匹配的深度学习框架进行混合精度训练等。
除SNCF Réseau之外,不少来自运输与物流行业的AWS客户也都在ML技术的帮助下,切实改善了自身业务运营与创新能力。具体案例包括:
- 来自迪拜的物流公司Aramex使用ML技术解决了地址解析与运输时间预测问题。该公司使用了150个模型,每天执行45万项预测作业。
- 新南威尔士州运输局 使用云服务预测整个运输网络中的乘客数量,借此更好地规划劳动力与资产利用率,进而提升客户满意度。
- 大韩航空 使用Amazon SageMaker启动多个创新项目,旨在预测并提前对飞机机群进行维护。
总结
Amazon SageMaker支持从数据注释、到生产部署、再到运营监控的整个ML开发周期。正如Olexya与SNCF Réseau的工作所示,Amazon SageMaker具有良好的框架中立性,能够容纳各类深度学习工作负载及框架。除了预先为Sklearn、TensorFlow、PyTorch、MXNet、XGBoost以及Chainer创建配套Docker镜像与SDK对象以外,您也可以使用自定义Docker容器,几乎任何框架,如PeddlePaddle、Catboost、R以及Caffe2。如果您是作为ML从业者,不要犹豫,请开始测试AWS SageMaker服务,并分享您在构建中总结出的经验与心得!