vivo 互聯網機器學習平臺的建設與實踐

vivo 互聯網產品團隊 - Wang xiao

隨着廣告和內容等推薦場景的擴展,算法模型也在不斷演進迭代中。業務的不斷增長,模型的訓練、產出迫切需要進行平臺化管理。vivo 互聯網機器學習平臺主要業務場景包括遊戲分發、商店、商城、內容分發等。本文將從業務場景、平臺功能實現兩個方面介紹 vivo 內部的機器學習平臺在建設與實踐中的思考和優化思路。

一、寫在前面

隨着互聯網領域的快速發展,數據體量的成倍增長以及算力的持續提升,行業內都在大力研發 AI 技術,實現業務賦能。算法業務往往專注於模型和調參,而工程領域是相對薄弱的一個環節。建設一個強大的分佈式平臺,整合各個資源池,提供統一的機器學習框架,將能大大加快訓練速度,提升效率,帶來更多的可能性,此外還有助於提升資源利用率。希望通過此文章,初學者能對機器學習平臺,以及生產環境的複雜性有一定的認識。

二、業務背景

截止 2022 年 8 月份,vivo 在網用戶 2.8 億,應用商店日活躍用戶數 7000 萬 +。AI 應用場景豐富,從語音識別、圖像算法優化、以及互聯網常見場景,圍繞着應用商店、瀏覽器、遊戲中心等業務場景的廣告和推薦訴求持續上升。

如何讓推薦系統的模型迭代更高效,用戶體驗更好,讓業務場景的效果更佳,是機器學習平臺的一大挑戰,如何在成本、效率和體驗上達到平衡。

從下圖可以瞭解到,整個模型加工運用的場景是串行可閉環的,對於用戶的反饋需要及時進行特徵更新,不斷提升模型的效果,基於這個鏈路關係的基礎去做效率的優化,建設一個通用高效的平臺是關鍵。

三、vivo 機器學習平臺的設計思路

3.1 功能模塊

基於上圖業務場景的鏈路關係,我們可以對業務場景進行歸類,根據功能不同,通用的算法平臺可劃分爲三步驟:數據處理「對應通用的特徵平臺,提供特徵和樣本的數據支撐」、模型訓練「對應通用的機器學習平臺,用於提供模型的訓練產出」、模型服務「對應通用的模型服務部署,用於提供在線模型預估」,三個步驟都可自成體系,成爲一個獨立的平臺。

本文將重點闡述模型訓練部分,在建設 vivo 機器學習平臺過程中遇到的挑戰以及優化思路。

1. 數據處理,圍繞數據相關的工作,包括採集、加工、標記和存儲。

其中,採集、加工、存儲與大數據平臺的場景相吻合,標記場景是算法平臺所獨有的。

2. 模型訓練,即創建模型的過程,包括特徵工程、試驗、訓練及評估模型。

3. 模型部署,是將模型部署到生產環境中進行推理應用,真正發揮模型的價值。

通過不斷迭代演進,解決遇到的各種新問題,從而保持在較高的服務水平。

4. 對平臺的通用要求,如擴展能力,運維支持,易用性,安全性等方面。

由於機器學習從研究到生產應用處於快速發展變化的階段,所以框架、硬件、業務上靈活的擴展能力顯得非常重要。任何團隊都需要或多或少的運維工作,出色的運維能力能幫助團隊有效的管理服務質量,提升生產效率。

易用性對於小團隊上手、大團隊中新人學習都非常有價值,良好的用戶界面也有利於深入理解數據的意義。

安全性則是任何軟件產品的重中之重,需要在開發過程中儘可能規避。

3.2 模型訓練相關

模型訓練包括了兩個主要部分,一是算法工程師進行試驗,找到對應場景的最佳模型及參數,稱之爲 “模型試驗”,二是計算機訓練模型的過程,主要側重平臺支持的能力,稱之爲 “訓練模型”。

建模是算法工程師的核心工作之一。建模過程涉及到很多數據工作,稱爲特徵工程,主要是調整、轉換數據。主要任務是要讓數據發揮出最大的價值,滿足業務訴求。

3.2.1 模型試驗

特徵工作和超參調整是建模過程中的核心工作。特徵工作主要對數據進行預處理,便於這部分輸入模型的數據更好的表達信息,從而提升模型輸出結果的質量。

數據和特徵工程決定模型質量的上限,而算法和超參是無限逼近這個上限。

超參調整包括選擇算法、確認網絡結構、初始參數,這些依賴於算法工程師豐富的經驗,同時需要平臺支持試驗來測試效果。

特徵工程和超參調整是相輔相成的過程。加工完特徵後,需要通過超參的組合來驗證效果。效果不理想時,需要從特徵工程、超參兩個方面進行思索、改進,反覆迭代後,才能達到理想的效果。

圖片

3.2.2 訓練模型

可通過標準化數據接口來提高快速試驗的速度,也能進行試驗效果的比較。底層支持 docker 操作系統級的虛擬化方案,部署速度快,同時能將模型直接部署上線。用戶無需對訓練模型進行更多定製化的操作,批量提交任務能節約使用者的時間,平臺可以將一組參數組合的試驗進行比較,提供更友好的使用界面。

其次,由於訓練的方向較多,需要算力管理自動規劃任務和節點的分配,甚至可以根據負載情況,合理利用空閒資源。

四、vivo 機器學習平臺實踐

前面我們介紹了機器學習平臺的背景和發展方向,現在我們來介紹下,平臺在解決用戶問題部分的困擾和解決思路。

4.1 平臺能力矩陣

機器學習平臺主要目標是圍繞模型訓練進行深耕,並輔助用戶進行模型決策,更快的進行模型部署。

以此爲目標分爲兩個方向,訓練框架的優化能夠支撐大規模模型的分佈式計算,調度能力優化能夠支持批次模型的執行。

在調度能力上,平臺由原生 k8s 調度,單個訓練調度的效率較低,升級爲 kube-batch 批量調度,到以混合雲精細化編排爲目標,當前主要處於靈活性調度策略的形式。

在訓練框架上,從原生 Tensorflow 模型,隨着特徵和樣本規模的擴大,自研了超大規模的訓練框架 vlps,當前處於 TensorFlow+vlps 結合的新框架狀態。

4.2 平臺能力介紹

平臺能力建設主要圍繞模型試驗和訓練模型的運用,運用過程中遇到的痛點和難點如何解決,是我們在實踐中的關鍵。同時,訓練框架也是平臺關鍵能力的體驗,基於業務的複雜度,持續對框架進行優化。

已覆蓋公司內部算法工程師模型調試的工作,已達到億級樣本,百億特徵的規模。

4.2.1 資源管理

痛點:

機器學習平臺屬於計算密集型的平臺。

解決思路:

資源管理的基本思路是將所有計算資源集中起來,按需分配,讓資源使用率儘量接近 100%。任何規模的資源都是有價值的。

比如,一個用戶,只有一個計算節點,有多條計算任務時,資源管理通過隊列可減少任務輪換間的空閒時間,比手工啓動每條計算任務要高效很多。多計算節點的情況,資源管理能自動規劃任務和節點的分配,讓計算節點儘量都在使用中,而不需要人爲規劃資源,並啓動任務。多用戶的情況下,資源管理可以根據負載情況,合理利用其它用戶或組的空閒資源。隨着節點數量的增加,基於有限算力提供更多業務支持是必經之路。

1. 以配額限資源濫用:

新增配額組和個人配額,減少業務之間的相互干擾,儘可能滿足各組的資源需要,並且配額組支持臨時擴容和共享,解決偶發性激增的資源訴求;限額後用戶僅支持在有限資源下使用,讓用戶自我調節高優先級訓練。

2. 以調度促資源優化:

新增生產環境,確認模型已經正常迭代,在合理利用率的情況下切換至高優環境,提供更高性能的資源池;同時提供調度打分機制,圍繞資源顆粒度、配置合理性等維度,讓合理的訓練資源更快的拉起,減少調度卡住情況;

上線多維度調度打分機制後,平臺不合理訓練任務有大幅度下降,資源效率提升。

圍繞並不限於以下維度:最大運行時長、排隊時長、cpu & 內存 & gpu 顆粒度和總需求量等。

4.2.2 框架自研

痛點:

隨着樣本和特徵規模增加後,框架的性能瓶頸凸顯,需要提升推理計算的效率。

發展路徑:

每一次的發展路徑主要基於業務量的發展,尋求最佳的訓練框架,框架的每一次版本升級都打包爲鏡像,支持更多模型訓練。

當前效果:

4.2.3 訓練管理

痛點:

如何支持多種分佈式訓練框架,滿足算法工程師的業務訴求,讓用戶無需關心底層機器調度和運維;如何讓算法工程師快速新建訓練,執行訓練,可查看訓練狀態,是訓練管理的關鍵。

解決思路:

上傳代碼至平臺的文件服務器和 git 都可以進行讀取,同時在平臺填寫適量的參數即可快速發起分佈式訓練任務。同時還支持通過 OpenAPI,便於開發者在脫離控制檯的情況下也能完成機器學習業務。

圍繞訓練模型相關的配置信息,分爲基礎信息設置、資源信息設置、調度依賴設置、告警信息設置和高級設置。在試驗超參的過程中,經常需要對一組參數組合進行試驗。

批量提交任務能節約使用者時間。平臺也可以將這組結果直接進行比較,提供更友好的界面。訓練讀取文件服務器或 git 的腳本,即可快速執行訓練。

1. 可視化高效創建訓練

2. 準確化快速修改腳本

3. 實時化監控訓練變動

4.2.4 交互式開發

痛點:

算法工程師調試腳本成本較高,算法工程師和大數據工程師有在線調試腳本的訴求,可直接通過瀏覽器運行代碼,同時在代碼塊下方展示運行結果。

解決思路:

在交互式工具中進行試驗、開發,如:jupyter notebook,提供所見即所得的交互式體驗,對調試代碼的過程非常方便。

在交互試驗的場景下,需要獨佔計算資源。機器學習平臺需要提供能爲用戶保留計算資源的功能。如果計算資源有限,可對每個用戶申請的計算資源總量進行限制,並設定超時時間。

例如,若一週內用戶沒有進行資源使用後, 就收回保留資源。在收回資源後,可繼續保留用戶的數據。重新申請資源後,能夠還原上次的工作內容。在小團隊中,雖然每人保留一臺機器自己決定如何使用更方便,但是用機器學習平臺來統一管理,資源的利用率可以更高。團隊可以聚焦於解決業務問題,不必處理計算機的操作系統、硬件等出現的與業務無關的問題。

圖片

五、總結

目前 vivo 機器學習平臺支撐了互聯網領域的算法離線訓練,使算法工程師更關注於模型策略的迭代優化,從而實現爲業務賦能。未來我們會在以下方面繼續探索:

1. 實現平臺能力的貫通

2. 加強框架層面的預研

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/6u3-uXZcRYlMe-B6r76-vw