案例分享 | 將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

相關文章
相關標籤/搜索