本文由来自SNCF和Olexya的客座作者联结撰写。
本文将介绍法国国有铁路公司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数据通道配置训练数据读取
原始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参数随时加以调用:
- 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服务,并分享在构建中总结出的教训与心得!