案例分享 | 将Caffe2 计算机视觉流水线任务迁移至SageMaker中的Managed Spot Training

image

本文由来自SNCF和Olexya的客座做者联合撰写。segmentfault

本文将介绍法国国有铁路公司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模型的训练与推理。并发

整个流程涉及如下步骤:框架

  1. 建立自定义Docker。
  2. 经过Amazon Simple Storage Service (Amazon S3)数据通道配置训练数据读取。
  3. 经过Amazon SageMaker Spot GPU训练实现有成本效益的训练。
  4. 使用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数据通道配置训练数据读取

原始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与16GB高带宽内存(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参数随时加以调用:spa

  • 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服务,并分享在构建中总结出的经验与心得!

image

相关文章
相关标签/搜索