一站式機器學習平台建設實踐

  • 2020 年 2 月 18 日
  • 筆記

總第379篇

2020年 第2篇

剛剛度過了一個特殊的春節,美美在這裡給大家拜個晚年。相信大家作為各公司技術團隊的骨幹,應該也和我的同事們一樣,正在緊張忙碌地用技術支撐著各方面的工作,同舟共濟,抗擊疫情吧。請大家注意做好個人和家庭防護,多加強運動,提高免疫力。讓我們一起為武漢加油,願疫情早日結束!

在家工作,學習也不能鬆懈。今天美美給大家帶來兩篇人工智慧領域的技術文章。一篇是機器學習平台的建設實踐,一篇是自然場景中的人臉檢測,希望對大家有所啟發。

下面這篇文章根據美團配送資深技術專家鄭艷偉在2019 SACC(中國系統架構師大會)上的演講內容整理而成,主要介紹了美團配送技術團隊在建設一站式機器學習平台過程中的經驗總結和探索,希望對從事此領域的同學有所幫助。

0. 寫在前面

AI是目前互聯網行業炙手可熱的「明星」,無論是老牌巨頭,還是流量新貴,都在大力研發AI技術,為自家的業務賦能。配送作為外賣平台閉環鏈條上重要的一環,配送效率和用戶體驗是配送業務的核心競爭力。隨著單量上漲、騎手增多、配送場景複雜化,配送場景的各種演算法在更快(演算法需要快速迭代、快速上線)、更好(業務越來越依賴機器學習演算法產生正向的效果)、更准(演算法的各種預測如預計送達時間等,需要準確逼近真實值)的目標下也面臨日益增大的挑戰。演算法從調研到最終上線發揮作用,需要有一系列的工程開發和對接,由此引發了新的問題:如何界定演算法和工程的邊界,各司其職,各善其長?如何提升演算法迭代上線的速度和效率?如何快速準確評估演算法的效果?本文將為大家分享美團配送技術團隊在建設一站式機器學習平台過程中的一些經驗和探索,希望對大家能有所幫助或者啟發。

1. 業務背景

2019年7月份,美團外賣的日訂單量已經突破3000萬單,佔有了相對領先的市場份額。圍繞著用戶、商戶、騎手,美團配送構建了全球領先的即時配送網路,建設了行業領先的美團智慧配送系統,形成了全球規模最大的外賣配送平台。

如何讓配送網路運行效率更高,用戶體驗更好,是一項非常有難度的挑戰。我們需要解決大量複雜的機器學習和運籌優化等問題,包括ETA預測、智慧調度、地圖優化、動態定價、情景感知、智慧運營等多個領域。同時,我們還需要在體驗、效率和成本之間達到平衡。

2. 美團配送機器學習平台演進過程

2.1 為什麼建設一站式機器學習平台

如果要解決上述的機器學習問題,就需要有一個功能強大且易用的機器學習平台來輔助演算法研發人員,幫助大家脫離繁瑣的工程化開發,把有限的精力聚焦於演算法策略的迭代上面。

目前業界比較優秀的機器學習平台有很多,既有大公司研發的商用產品,如微軟的Azure、亞馬遜的SageMaker、阿里的PAI平台、百度的PaddlePaddle以及騰訊的TI平台,也有很多開源的產品,如加州大學伯克利分校的Caffe、Google的TensorFlow、Facebook的PyTorch以及Apache的Spark MLlib等。而開源平台大都是機器學習或者深度學習基礎計算框架,聚焦於訓練機器學習或深度學習模型;公司的商用產品則是基於基礎的機器學習和深度學習計算框架進行二次開發,提供一站式的生態化的服務,為用戶提供從數據預處理、模型訓練、模型評估、模型在線預測的全流程開發和部署支援,以期降低演算法同學的使用門檻。

公司級的一站式機器學習平台的目標和定位,與我們對機器學習平台的需求不謀而合:為用戶提供端到端的一站式的服務,幫助他們脫離繁瑣的工程化開發,把有限的精力聚焦於演算法策略的迭代上面。鑒於此,美團配送的一站式機器學習平台應運而生。

美團配送機器學習平台的演進過程可以分為兩個階段:

  • MVP階段:靈活,快速試錯,具備快速迭代能力。
  • 平台化階段:業務成指數級增長,需要機器學習演算法的場景越來越多,如何既保證業務發展,又能解決系統可用性、擴展性、研發效率等問題。

2.2 MVP階段

初始階段,大家對機器學習平台要發展成什麼樣子並不明確,很多事情也想不清楚。但是為了支撐業務的發展,必須快速上線、快速試錯。因此,在此階段,各個業務線獨自建設自己的機器學習工具集,按照各自業務的特殊需求進行各自迭代,快速支援機器學習演算法上線落地應用到具體的業務場景,也就是我們所熟知的「煙囪模式」。此種模式各自為戰,非常靈活,能夠快速支援業務的個性化需求,為業務搶佔市場贏得了先機。但隨著業務規模的逐漸擴大,這種「煙囪模式」的缺點就凸顯了出來,主要表現在以下兩個方面:

  • 重複造輪子:特徵工程、模型訓練、模型在線預測都是各自研發,從零做起,演算法的迭代效率低下。
  • 特徵口徑混亂:各個業務方重複開發特徵,相同特徵的統計口徑也不一致,導致演算法之間難以協同工作。

2.3 平台化階段

為了避免各部門重複造輪子,提升研發的效率,同時統一業務指標和特徵的計算口徑,標準化配送側的數據體系,美團配送的研發團隊組建了一個演算法工程小組,專門規整各業務線的機器學習工具集,希望建設一個統一的機器學習平台,其需求主要包括以下幾個方面:

  • 該平台底層依託於Hadoop/Yarn進行資源調度管理,集成了Spark ML、XGBoost、TensorFlow三種機器學習框架,並保留了擴展性,方便接入其它機器學習框架,如美團自研的MLX(超大規模機器學習平台,專為搜索、推薦、廣告等排序問題訂製,支援百億級特徵和流式更新)。
  • 通過對Spark ML、XGBoost、TensorFlow機器學習框架的封裝,我們實現了可視化離線訓練平台,通過拖拉拽的方式生成DAG圖,屏蔽多個訓練框架的差異,統一模型訓練和資源分配,降低了演算法RD的接入門檻。
  • 模型管理平台,提供統一的模型註冊、發現、部署、切換、降級等解決方案,並為機器學習和深度學習模型實時計算提供高可用在線預測服務。
  • 離線特徵平台,收集分揀線下日誌,計算提煉成演算法所需要的特徵,並將線下的特徵應用到線上。
  • 實時特徵平台,實時收集線上數據,計算提煉成演算法所需要的特徵,並實時推送應用到線上。
  • 版本管理平台,管理演算法的版本以及演算法版本所用的模型、特徵和參數。
  • AB實驗平台,通過科學的分流和評估方法,更快更好地驗證演算法的效果。

3. 圖靈平台

平台化階段,我們對美團配送機器學習平台的目標定位是:一站式機器學習平台,給演算法同學提供一站式服務,覆蓋演算法同學調研、開發、上線、評估演算法效果的全流程,包括:數據處理、特徵生產、樣本生成、模型訓練、模型評估、模型發布、在線預測和效果評估。為了響應這個目標,大家還給平台取了個大膽的名字——Turing,中文名稱為圖靈平台,雖然有點「膽大包天」,但是也算是對我們團隊的一種鞭策。

1)首先在獲取數據階段,支援在線和離線兩個層面的處理,分別通過取樣、過濾、歸一化、標準化等手段生產實時和離線特徵,並推送到在線的特徵庫,供線上服務使用。

2)模型訓練階段,支援分類、回歸、聚類、深度學習等多種模型,並支援自定義Loss損失函數。

3)模型評估階段,支援多種評估指標,如AUC、MSE、MAE、F1等。

4)模型發布階段,提供一鍵部署功能,支援本地和遠程兩種模式,分別對應將模型部署在業務服務本地和部署在專用的在線預測集群。

5)在線預測階段,支援AB實驗,靈活的灰度發布放量,並通過統一埋點日誌實現AB實驗效果評估。

3.1 離線訓練平台

離線訓練平台的目標是:搭建可視化訓練平台,屏蔽多個訓練框架的差異,降低演算法RD的接入門檻。

為了降低演算法RD進入機器學習領域的門檻,我們開發了帶有可視化介面的離線訓練平台,通過各種組件的拖拉拽組合成DAG圖,從而生成一個完整的機器學習訓練任務。

目前支援的組件大致分為:輸入、輸出、特徵預處理、數據集加工、機器學習模型、深度學習模型等幾大類,每種類別都開發了多個不同的組件,分別支援不同的應用場景。同時為了不失去靈活性,我們也花費了一番心思,提供了多種諸如自定義參數、自動調參、自定義Loss函數等功能,盡量滿足各個不同業務方向演算法同學各種靈活性的需求。

我們的離線訓練平台在產出模型時,除了產出模型文件之外,還產出了一個MLDL(Machine Learning Definition Language)文件,將各模型的所有預處理模組資訊寫入MLDL文件中,與模型保存在同一目錄中。當模型發布時,模型文件連帶MLDL文件作為一個整體共同發布到線上。在線計算時,先自動執行MLDL中的預處理邏輯,然後再執行模型計算邏輯。通過MLDL打通了離線訓練和在線預測,貫穿整個機器學習平台,使得線下和線上使用同一套特徵預處理框架程式碼,保證了線下和線上處理的一致性。

在發布模型時,我們還提供了模型綁定特徵功能,支援用戶把特徵和模型的入參關聯起來,方便在線預測時模型自動獲取特徵,極大地簡化了演算法RD構造模型輸入時獲取特徵的工作量。

3.2 模型管理平台

前面介紹了,我們的圖靈平台集成了Spark ML、XGBoost、TensorFlow三種底層訓練框架,基於此,我們的訓練平台產出的機器學習模型種類也非常多,簡單的有LR、SVM,樹模型有GBDT、RF、XGB等,深度學習模型有RNN、DNN、LSTM、DeepFM等等。而我們的模型管理平台的目標就是提供統一的模型註冊、發現、部署、切換、降級等解決方案,並為機器學習和深度學習模型提供高可用的線上預測服務。

模型管理平台支援本地和遠程兩種部署模式:

  • 本地:模型和MLDL統一推送到業務方服務節點上,同時圖靈平台提供一個Java的Lib包,嵌入到業務方應用中,業務方通過本地介面的方式調用模型計算。
  • 遠程:圖靈平台維護了一個專用的在線計算集群,模型和MLDL統一部署到在線計算集群中,業務方應用通過RPC介面調用在線計算服務進行模型計算。

對於超大規模模型,單機無法裝載,需要對模型進行Sharding。鑒於美團配送的業務特性,可以按照配送城市/區域進行分區訓練,每個城市或區域產出一個小模型,多個分區模型分散部署到多個節點上,解決單節點無法裝載大模型的問題。分區模型要求我們必須提供模型的路由功能,以便業務方精準地找到部署相應分區模型的節點。

同時,模型管理平台還收集各個服務節點的心跳上報資訊,維護模型的狀態和版本切換,確保所有節點上模型版本一致。

3.3 離線特徵平台

配送線上業務每天會記錄許多騎手、商家、用戶等維度的數據,這些數據經過ETL處理得到所謂的離線特徵,演算法同學利用這些離線特徵訓練模型,並在線上利用這些特徵進行模型在線預測。離線特徵平台就是將存放在Hive表中的離線特徵數據生產到線上,對外提供在線獲取離線特徵的服務能力,支撐配送各個業務高並發及演算法快速迭代。

最簡單的方案,直接把離線特徵存儲到DB中,線上服務直接讀取DB獲取特徵Value。讀取DB是個很重的操作,這種方案明顯不能滿足互聯網大並發的場景,直接被Pass掉。

第二種方案,把各個離線特徵作為K-V結構存儲到Redis中,線上服務直接根據特徵Key讀取Redis獲取特徵Value。此方案利用了Redis記憶體K-V資料庫的高性能,乍一看去,好像可以滿足業務的需求,但實際使用時,也存在著嚴重的性能問題。

典型的業務場景:比如我們要預測20個商家的配送時長,假設每個商家需要100個特徵,則我們就需要20*100=2000個特徵進行模型計算,2000個KV。如果直接單個獲取,滿足不了業務方的性能需求;如果使用Redis提供的批量介面Mget,如果每次獲取100個KV,則需要20次Mget。快取mget的耗時TP99約5ms,20次Mget,TP99接近100ms,也無法滿足業務方的性能需求(上游服務超時時間約50ms)。

因此,我們需要對離線特徵從存儲和獲取進行優化。我們提出了特徵組的概念,同一維度的特徵,按照特徵組的結構進行聚合成一個KV,大大減少了Key的數目;並且提供了相對完善的管理功能,支援對特徵組的動態調整(組裝、拆分等)。

3.4 實時特徵平台

相比於傳統配送,即時配送無論是在位置資訊、騎手負載,還是在當前路網情況,以及商家出餐情況等方面都是瞬息變化的,實時性要求非常高。為了讓機器學習演算法能夠即時的在線上生效,我們需要實時地收集線上各種業務數據,進行計算,提煉成演算法所需要的特徵,並實時更新。

3.5 AB實驗平台

AB實驗並不是個新興的概念,自2000年Google工程師將這一方法應用在互聯網產品以來,AB實驗在中國外越來越普及,已成為互聯網產品運營精細度的重要體現。簡單來說,AB實驗在產品優化中的應用方法是:在產品正式迭代發版之前,為同一個目標制定兩個(或以上)方案,將用戶流量對應分成幾組,在保證每組用戶特徵相同的前提下,讓用戶分別看到不同的方案設計,根據幾組用戶的真實數據回饋,科學的幫助產品進行決策。

互聯網領域常見的AB實驗,大多是面向C端用戶進行流量選擇,比如基於註冊用戶的UID或者用戶的設備標識(移動用戶IMEI號/PC用戶Cookie)進行隨機或者哈希計算後分流。此類方案廣泛應用於搜索、推薦、廣告等領域,體現出千人千面個性化的特點。此類方案的特點是實現簡單,假設請求獨立同分布,流量之間獨立決策,互不干擾。此類AB實驗之所以能夠這樣做是因為:C端流量比較大,樣本足夠多,而且不同用戶之間沒有相互干擾,只要分流時足夠隨機,即基本可以保證請求獨立同分布。

即時配送領域的AB實驗是圍繞用戶、商戶、騎手三者進行,用戶/商戶/騎手之間不再是相互獨立的,而是相互影響相互制約的。針對此類場景,現有的分流方案會造成不同策略的互相干擾,無法有效地評估各個流量各個策略的優劣。

鑒於上述的問題,我們將配送側的AB實驗分為三個階段:事前的AA分組,事中的AB分流,事後的效果評估。

  • AA分組:將候選流量按照既定的規則預先分為對照組和實驗組,基於數理統計的理論確保對照組和實驗組在所關注的業務指標上沒有顯著差異。
  • AB分流:將線上請求實時分到對照或者實驗版本。
  • 效果評估:根據對照組和實驗組的數據對比評估AB實驗的效果。

由於即時配送的場景較為特殊,比如按照配送區域或城市進行AB實驗時,由於樣本空間有限,很難找到沒有差異的對照組和實驗組,因此我們設計了一種分時間片AB對照的分流方法:支援按天、小時、分鐘進行分片,多個時間片進行輪轉切換,在不同區域、不同時間片之間,對不同的策略進行交替切換進行AB分流,最大限度減少線下因素的影響,確保實驗科學公正。

4 總結與展望

目前圖靈平台支撐了美團配送、小象、LBS平台等BU的演算法離線訓練、在線預測、AB實驗等,使演算法RD更加關注演算法策略本身的迭代優化,顯著提高了演算法RD的效率。未來我們會在以下方面繼續深入探索:

1)加強深度學習的建設。

  • 加強深度學習的建設,全面支援深度學習,實現深度學習相關組件與機器學習組件一樣,在可視化介面可以和任意組件組合使用。
  • 離線訓練支援更多常用深度學習模型。
  • 支援直接寫Python程式碼自定義深度學習模型。

2)在線預測平台化,進一步解耦演算法和工程。

  • 簡化圖靈平台SDK,剝離主體計算邏輯,建設在線預測平台。
  • 在線預測平台動態載入演算法包,實現演算法、業務工程方、圖靈平台的解耦。

作者簡介

艷偉,美團配送技術團隊資深技術專家。

年前給大家送出的技術年貨,你收到了嘛?

我們精選美團技術部落格幾十篇技術乾貨以及數篇國際高峰會論文,整理製作成一本厚達900多頁的電子書,供大家在家工作之餘,學習參考。