用Uber的方式管理機器學習模型
Uber公司是目前對數據依賴性最高的組織之一。
每一天,Uber公司在全球700個城市規划出數百萬次行程,而由此產生的關於交通、首選路線、預計到達/送貨時間以及下車地點的信息,則讓Uber得以為客戶提供更加順暢的乘車體驗。
打開今日頭條,查看更多圖片
通過訪問來自計程車、駕駛員以及用戶的豐富數據集,Uber一直在投資機器學習與人工智慧技術以增強自身業務。優步AI實驗室由ML研究人員以及眾多從業者組成,他們負責將最先進的機器學習技術與優勢成果轉化為Uber的核心業務。從計算機視覺到會話型AI,再到識別與感知,Uber公司已經成功將ML與AI融入其共享出行平台當中。
自2017年以來,Uber方面一直在分享與機器學習模型的構建、部署以及管理相關的最佳實踐。他們使用的一系列內部工具與框架都建立在高人氣開源項目基礎之上,具體包括Spark、HDFS、Scikit-learn、NumPy、Pandas、TensorFlow以及XGBoost。
下面,讓我們進一步了解Uber公司在機器學習領域的成果。
>>>Michelangelo——ML平台即服務
Michelangelo 是一套機器學習平台,通過端到端系統對各個團隊的工作流程與工具進行標準化。它的出現,使得整個公司的開發人員與數據科學家都能夠輕鬆實現機器學習系統的大規模構建與操作。
Michelangelo構建於一系列開源組件之上,包括HDFS、Spark、Samza、Cassandra、MLLib、XGBoost以及TensorFlow。其利用Uber的數據與計算基礎設施構建而成,提供的數據湖足以存儲Uber的全部交易與記錄數據,Kafka以中間人的形式彙集所有Uber服務記錄——包括Samza流式計算引擎、託管Canssandra集群以及Uber的其它內部服務供應與部署工具等等。
Michelangelo主要負責實現典型機器學習工作流程中的以下六個階段:
1. 管理數據
2. 訓練模型
3. 評估模型
4. 部署模型
5. 做出預測
6. 監測預測
這套平台擁有一個數據湖,可供模型在訓練與推理期間進行訪問。通過指預測與在線推理,應用程序將能夠訪問其集中數據存儲。
Michelangelo為訓練中的ML模型提供標準演算法,個人開發者與團隊也都可以輕鬆向該平台添加新的演算法。在部署模型之前,其會根據各種指標及參數對模型的準確性做出評估。Michelangelo通過UI或API提供端到端的模型部署管理支持。其能夠將所部署的每個模型用於在線及離線預測,或者作為與移動應用程序相集成的庫。該平台會持續監測預測結果的準確性與速度,從而在必要時觸發重新訓練。
Michelangelo的用戶能夠直接通過Web UI、REST API以及監控與報警工具處直接同該平台的組件進行交互。
Uber公司通過PyML對Michelangelo項目進行了擴展,使得Python開發人員能夠更輕鬆地完成模型訓練與部署。PyML是一個用於處理Michelangelo流水線的高級API,使得團隊能夠獨立於Michelangelo之外提供獨立的自定義演算法、框架、工具以及依賴項。
雖然Uber方面並沒有開源Michelangelo,但發布了相關說明文檔,其中記錄了關於實現可擴展機器學習流水線的設計思路與最佳實踐。
>>>Horovod——用於TensorFlow的分散式深度學習框架
Horovod 是一套利用GPU資源用於TensorFlow、Keras、PyTorch以及MXNet的分散式訓練框架。Uber公司已經開源了Horovod並將其轉交給LF AI——Linux基金會下轄的另一機構。順帶一提,LF AI主要關注人工智慧、機器學習以及深度學習類項目的運營。
通過將對代碼內容的修改量控制在最低水平,Horovod優化了跨多GPU的模型訓練方式,其支持目前各類高人氣深度學習框架,包括TensorFlow、Keras、PyTorch以及Apache MXNet等。
Uber方面還擴展了百度公司在多GPU上實現的分散式訓練成果。百度最初的方案強調了將標準高性能計算技術引入深度學習這一基本想法。
Horovod還與英偉達集合通信庫(NCCL)相集成,用以支持跨多個GPU與多台機器的深度學習模型分散式訓練。Horovod公開的API能夠與各類主流深度學習框架共同配合使用。
Uber的Horovod項目目前以開源形式通過Github 公開交付。
>>>Ludwig——無代碼深度學習工具箱
Ludwig 是Uber旗下最有趣的機器學習項目。這是一套開源深度學習工具箱,以TensorFlow為基礎構建而成,允許用戶有無需編寫代碼的前提下實現深度學習模型的訓練與測試。
Ludwig是一套AutoML平台,其提供一組模型架構集合;用戶可以將這些架構組合起來,從而為特定用例創建端到端模型。該工具箱要求將數據集格式化為一個逗號分隔值(CSV)文件,外加一個用於對特徵、標籤以及訓練參數進行描述的YAML文件。Ludwig還提供一個簡單的Python API,允許開發人員藉此實現模型的訓練或載入,以及獲取關於新數據的預測結果。
該工具箱支持文本分類、機器翻譯、情緒分析、圖像分類、圖像字幕用例以及其它多種場景。
Ludwig在構建之初即考慮到可擴展性原則,基於數據類型抽象,能夠輕鬆添加對新數據類型以及新模型架構的支持。從業者可以利用它快速訓練並測試深度學習模型,允許研究人員通過強大的基準進行性能比較,並提供實驗設置選項以通過執行標準數據預處理及可視化確保可比較性。
Ludwig開源項目已經在 Github上公開發布。
※2019年值得關注的10家區塊鏈公司
※通過AI、衛星圖像與無人機,繪製全球污染趨勢圖
TAG:科技行者 |