vivo網際網路機器學習平臺的建設與實踐

2022-10-11 15:08:27

vivo 網際網路產品團隊 - Wang xiao

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

一、寫在前面

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

二、業務背景

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

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

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

圖片

 

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

3.1 功能模組

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

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

圖片

 

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

其中,採集、加工、儲存與巨量資料平臺的場景相吻合,標記場景是演演算法平臺所獨有的。

  • 資料採集,即從外部系統獲得資料,使用Bees{vivo資料採集平臺}來採集資料。

  • 資料加工,即將資料在不同的資料來源間匯入匯出,並對資料進行聚合、清洗等操作。

  • 資料標記,是將人類的知識附加到資料上,產生樣本資料,以便訓練出模型能對新資料推理預測。

  • 資料儲存,根據存取的特點找到合適的儲存方式。

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.實現平臺能力的貫通

  • 當前特徵、樣本還是模型的讀取都是通過hdfs實現的,在平臺上的告警、紀錄檔資訊都未關聯上,後續可以進行平臺能力貫通;

  • 平臺的資料和模型還有標準化的空間,降低學習成本,提升模型開發的效率。

2. 加強框架層面的預研

  • 研究不同分散式訓練框架對模型效果的影響,適配不同的業務場景;

  • 提供預置的引數,實現演演算法、工程、平臺的解耦,降低使用者的使用門檻。