天天看點

愛奇藝 Opal 機器學習平台:特征中心建設實踐

作者:閃念基因

01

綜述

Opal 是愛奇藝大資料團隊研發的一站式機器學習平台,旨在提升特征疊代、模型訓練效率,幫助業務提高收益。整個平台覆寫了機器學習生命周期中特征生産、樣本建構、模型探索、模型訓練、模型部署等在内的多個關鍵環節。其中特征作為模型訓練的基石,其重要性不言而喻,如何讓使用者借助平台的能力,提升其業務側特征疊代效率,進而達到預期的目标,是作為平台方需要思考的關鍵問題之一。在 Opal 中,特征生産、存儲、通路等共同組成了特征中心的核心功能。本文将重點介紹特征中心相關工作。關于 Opal 的更多介紹,詳見:Opal 機器學習平台:愛奇藝數智一體化實踐

02

特征中心是什麼

簡單來說,特征中心是用來生産、共享、管理機器學習模型特征的工具平台。算法工程師或資料分析人員可以在平台上友善的建立及分享特征,而平台側協助解決特征生産和使用過程中碰到的各類問題,提高特征的疊代效率。

特征中心基本适用于所有需要特征的場景,典型的如推薦、廣告、風控等場景。特征表注冊在特征中心中,特征中心可以自動完成線上和離線表的建構,保證線上和離線的一緻性,同時保證特征表隻存一份的情況下,能夠向多人共享特征,減少資源成本。另外特征中心還可以節省時間成本,原來需要複雜的 SQL 操作,比如導出訓練表、資料導表等操作,現在在特征中心中都可以通過 Web UI 進行簡單的拖拽式配置完成。

03

特征中心解決的問題

算法模型本質上是一個映射函數,輸入數值型的向量,輸出是基于某個目标對候選集的排序。在愛奇藝場景中,離線訓練時,算法工程師需要先從原始日志抽取出特征,并基于此建構訓練樣本;線上服務時,要根據端側使用者的使用者 ID 和 視訊 ID 查詢出對應的原始特征,并根據 DSL 配置将原始特征轉換為訓練特征,最後調用預測服務得到預測值。

一般來說,想提高模型效果隻能從以下兩方面着手:

  1. 模型側優化: 這是一種以優化模型結構、調優模型超參數為主的系統調優政策,通過調整參數不斷優化模型的效果名額,我們将對應的優化稱為模型側優化;
  2. 資料側優化:與模型側優化相對應,這是一種以調整資料集品質為主的系統調優政策,通過改進資料品質來提升模型效果,在做資料側優化時,可以認為模型是固定的。但實際業務中,人們往往很容易認為模型效果不好,是因為模型不好,但卻忽略了資料集本身對模型效果的巨大影響。

業内有共識:"資料(特征)決定模型上限,模型結構及調參隻是逼近這個上限",資料側優化對整體效果提升的重要性不言而喻。那麼如何讓工程師高效地基于資料側進行優化?答案是特征中心。平台需要能夠解決資料側優化過程中遇到的各類挑戰:

  1. 如何應對海量的使用者請求?愛奇藝擁有海量觀影使用者,對特征的通路又是極高頻的操作,如何應對高 QPS 的請求是特征中心面臨的挑戰之一;
  2. 如何滿足對特征的實時化要求?在廣告、推薦、風控場景下,為保證算法模型的輸出效果,對特征的實時性要求水漲船高;
  3. 如何提高特征的擴充性和靈活性?業務場景日益複雜,特征需求靈活多變。從基礎特征到統計序列特征組的生産,從離線特征的簡單統計到實時特征的視窗計算、交叉特征等,業務方需要特征中台能夠支援逐漸衍生而來的新特征類型和需求;
  4. 如何滿足快速疊代的業務訴求?特征中台提供的面向業務的 DSL 需要足夠場景,特征生産鍊路盡量讓業務少寫代碼,底層的計算引擎、存儲引擎對業務完全透明,徹底釋放業務計算、存儲選型、調優的負擔,徹底實作實時基礎特征的規模化生産,不斷提升特征生産力。

具體來說,特征中心的功能需要至少覆寫如下幾個方面:

  1. 特征輸入:如何管理業務線的資料源,包括各類文本檔案、Parquet 檔案、Hive 表等;
  2. 特征計算:如何表達特征計算邏輯,從原始日志中高效的抽取出需要的特征;
  3. 特征存儲:計算出來的特征存放在什麼類型的系統中,這裡涉及到存儲成本和通路效率的權衡;
  4. 特征轉換:從原始特征到模型特征的轉換,包含各類 DSL 的解析及轉換。

04

特征中心整體架構圖

愛奇藝 Opal 機器學習平台:特征中心建設實踐

根據特征在整個鍊路中的角色不同,可以将特征分為特征生産和特征使用兩大類:

  1. 特征生産:解決了如何從各種類型的大資料源中進行特征計算、得到的結果如何存儲的問題,平台設計了一套高效的特征計算算子,配合拖拽式的 Web 頁面,托管運維使用者的特征生産任務,協助使用者高效地管理其特征;
  2. 特征使用:解決了如何實作特征的線上通路,特征中心通過引入特征視圖的概念,實作從特征複用,自定義轉換等功能,并提供 Opal Feat View SDK 實作特征的動态序列化,多機房自動感覺,就近通路等功能,為業務方屏蔽底層的存儲細節,讓其專注于業務邏輯上。

05

特征中心功能介紹

由上一小節可知,特征中心從功能上可分為特征的生産和特征的使用。進一步,根據目标特征的生産時延,可以将特征生産劃分為離線特征組和實時特征組。下面将分别介紹其功能。

離線特征組

通常來講,當需要訓練一個機器學習模型時,我們通常會預處理一組資料,将原始資料轉化為一個特征向量或者特征集,這個特征向量可以被模型更好的了解和使用。比如,統計一個使用者過去一周的購買行為,将這個統計結果作為一個特征。在一些情況下,為了提高處理速度和效率,我們會提前計算這些特征,并将它們存儲起來,以備後續使用。我們将這種提前計算并儲存的特征集稱為離線特征組。

愛奇藝 Opal 機器學習平台:特征中心建設實踐

如下圖所示,Opal 離線特征組基于使用者通過拖拽建構的 DAG 圖,從 Source 節點讀取資料,資料可以是 Hive 表、Iceberg 表或 TFRecord 和 Parquet 檔案,經過中間的由 Opal 抽象出來的計算節點進行資料轉換,最終将産出的特征寫入在 Target 節點所描述的存儲系統中。如圖所示,Opal 目前支援各類常見的特征存儲格式。

特征中繼資料管理、特征生産 DAG 配置

愛奇藝 Opal 機器學習平台:特征中心建設實踐

通過在平台上拖動左側的算子進行組合後得到一個 DAG 的生産任務配置,圍繞 DAG,平台支援對特征中繼資料及特征 Schema 等進行管理。

SQL 文法解析及 Schema 推斷

愛奇藝 Opal 機器學習平台:特征中心建設實踐

平台提供文法解析及校驗功能,使用者在配置期間即可實時觀察到每個算子輸出的字段詳情,無需到送出任務階段才發現錯誤,可降低使用者調試時間。

特征品質校驗及預警

愛奇藝 Opal 機器學習平台:特征中心建設實踐

平台支援對已産出的特征進行各種檢查,例如:特征的零值率、空值率、分位數、最大最小值等,并提供可視化的頁面,友善使用者檢視特征品質。

任務重跑及異常告警

愛奇藝 Opal 機器學習平台:特征中心建設實踐

目前已有推薦中台、廣告算法、業務風控等多個團隊接入離線特征生産子產品,基于平台産出三百餘個特征組,基于 Opal 平台托管式的特征生産模式一方面大幅度的簡化了業務方對特征生産上的投入時間,是以可以把更多時間投入到其它鍊路中,提高疊代效率。

實時特征組

實時特征組不同于離線特征組。離線特征組通常包括可以預先計算和存儲的特征,而實時特征組包含的是實時或近實時生成的特征。實時特征的擷取和計算通常需要強大的資料基礎設施和實時資料處理能力。

愛奇藝 Opal 機器學習平台:特征中心建設實踐

實時特征組在許多實時決策和預測系統中是很重要的,例如推薦系統,欺詐檢測,金融交易等等。管理好實時特征組,確定實時特征值的準确和及時擷取,對于這些系統的性能和實用性起着重要的作用。

與離線特征組類似,Opal 提供了基于 DAG 的實時特征加工流圖,實作從 Kafka / Iceberg / MySQL 攝入資料,利用平台內建的算子進行計算,後輸出到 Kafka 及其它資料存儲媒體中。

其它在離線特征組子產品提供的功能在實時子產品也正逐漸增加中。

實時特征生産 DAG 配置

愛奇藝 Opal 機器學習平台:特征中心建設實踐

平台提供特征中繼資料及 Schema 管理,通過各類算子的組合即可完成一個實時特征的配置。

滑動視窗算子示例

愛奇藝 Opal 機器學習平台:特征中心建設實踐

通過簡單的配置,即可實作視窗轉換,使用者無需編寫複雜的 SQL 語句,大大降低了業務團隊的開發成本。

視窗特征合并及狀态複用

愛奇藝 Opal 機器學習平台:特征中心建設實踐

對于不同視窗周期但滑動步長一樣的特征計算任務,Opal 支援對其進行合并,将計算整合在同一個視窗中進行,這樣可大幅度節省狀态空間,減少任務資源占用。

特征視圖

統一離線上特征組端側通路

離線特征組、實時特征組解決了特征的配置、加工、存儲等問題,而特征視圖解決了特征的讀取問題。如下所示,離線特征組、實時特征組産出特征後,存儲在各種不同的離線存儲媒體中,無法被業務方線上引擎服務直接使用,需要一個灌庫服務将特征組從離線存儲導入到線上緩存(Couchbase、Redis、HBase等)中,Opal 通過特征視圖實作特征的灌庫,并提供統一用戶端實作特征的讀取,使用者無需關注特征灌庫的細節。

愛奇藝 Opal 機器學習平台:特征中心建設實踐

特征轉換及特征衍生

在某些情況下,使用者需要對已有特征進行轉換,例如對原始特征取對數或四則運算後再返給下遊。為了支援上述功能,Opal 提供了一套靈活高效的 DSL 特征轉換表達式。其基本格式如下:

文法解釋:

  • 函數名為平台預定義的關鍵字
  • 參數可以是 特征變量 或各種類型的 字面值常量
    • 數值集合常量,如:[1, 2, 4]
    • 字元串集合常量,如:['aaa', 'bbb']
    • 特征變量,視圖内任意合法的特征名稱,由反引号辨別,例如:`city`
    • 數字常量,任意合法的數字,例如:123
    • 字元串常量,由單引号辨別,例如:'hello world'
    • 集合常量,由中括号辨別

轉換示例:

Java 用戶端接入,簡化特征擷取流程

愛奇藝 Opal 機器學習平台:特征中心建設實踐

平台提供了 Java SDK 以實作對線上特征的通路,如圖所示,SDK 屏蔽了底層存儲資源,使用者無需對接各類複雜的緩存,通過引入 SDK 即可實作對特征的通路。

運維監控大盤

接入用戶端後,SDK 會自動向名額服務側投遞名額,使用者可以基于 Grafana 大盤監控觀察服務是否運作正常。

愛奇藝 Opal 機器學習平台:特征中心建設實踐

06

業務接入

目前分别有廣告、推薦、風控業務不同程度的接入了Opal 平台的特征中心,并進行了一系列相應更新改造,接入後各業務的特征疊代效率提升 0.4 倍到 3 倍不等,業務引擎側擷取特征時延降低約 50%,特征側需求堆積實作零積壓。具體業務接入前後架構變遷細節以及給業務帶來的收益,可參考文章 Opal 機器學習平台:愛奇藝數智一體化實踐 中業務實踐小結。我們也将在後續的系列文章中推出,由業務同學撰寫的基于 Opal 的特征評估架構改造的經驗分享。

07

未來規劃

未來,Opal 平台上的特征中心将從以下幾方面增強功能,助力業務取得更好的效果:

  1. 特征共享:随着平台中管理的特征越來越多,不可避免的會出現特征重複計算問題,平台有必要實作特征的分享,避免使用者重複生産;
  2. 實時特征的品質校驗:對于離線特征,平台已有相對完善的特征校驗子產品,可以保證産出特征的品質,對實時特征也需要有一個相應的品質監測服務;
  3. 特征熱度計算:根據特征被線上通路的情況,推算出每個特征的熱度,該熱度可以後續協助業務方進行特征的重要性評估。

作者:大資料團隊

來源-微信公衆号:愛奇藝技術産品團隊

出處:https://mp.weixin.qq.com/s/68x3hr1WlnziVIE93Sia4g