本文由来自 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 服务,并分享在构建中总结出的教训与心得!