千億特徵、萬億參數,快手這個推薦精排模型什麼水平?

整理 | 兆雨

責編 | 杏玲

出品 | AI科技大本營

精準的推薦系統模型是很多互聯網產品的核心競爭力,個性化推薦系統旨在根據用戶的行爲數據提供"定製化"的產品體驗。例如快手每天爲數億用戶推薦百億的視頻,遇到最大的挑戰是推薦系統模型如何精準的的描述與捕捉用戶的興趣。

如今業內採用的解決方案通常爲結合大量數據集和擬合參數來訓練模型,如此一來讓模型更加逼近現實情況。谷歌日前發佈了首個萬億級模型 Switch Transformer,參數量達到1.6萬,其速度是Google之前開發的最大語言模型(T5-XXL)的4倍。然而快手萬億參數精排模型總的參數量超過19000億,規模更大,且已經投入實踐。下面我們一起揭祕快手這個精排模型的技術密碼吧!

Google BERT-large NLP預訓練模型: 3.4億參數量

Google Meena開域聊天機器人:26億參數量

 Google T5預訓練模型: 110億參數量

OpenAI GPT3語言模型:1750億參數量

快手精排排序模型:19000億參數量

快手針對CTR模型設計了PPNet(DNN參數個性化網絡),顯著的提升了推薦效果。從2019年開始,快手從用戶體驗層面,開始重視並推動單列交互,現在快手推薦交互層面,演化成多產品,單雙列共存的狀況。在單列場景下,用戶同視頻的交互變成基於觀看的單階段行爲,這些交互行爲相對於雙列交互來說,相對更加平等。針對這些特點,快手團隊設計了多任務學習框架,顯著提升了多任務學習的效果,提升用戶體驗顯著。

用戶和快手App的交互歷史非常重要,這也是快手推薦裏面用到的重要特徵。針對用戶的歷史交互行爲,快手設計了基於Transformer的用戶短期行爲序列建模和用戶長期行爲序列建模,並取得了巨大的線上收益。當然,快手的目標不止於此,爲了更準確的把握用戶偏好,爲用戶提供更準確的推薦,快手團隊對模型的細節提出了更高的要求。 

  • 參數個性化CTR模型
  • 單雙列數據融合
  • 多目標預估優化
  • 短期行爲序列建模
  • 長期興趣建模
  • 千億特徵

參數個性化CTR模型-PPNet

推薦系統的核心是個性化預估模型,其預估效果直接影響線上的推薦質量。考慮到某用戶個體和視頻的共建語義模式在全局用戶的共建語義模式基礎上會有個性化的偏差,如何在DNN網絡參數上爲不同用戶學習一個獨有的個性化偏差成爲了快手團隊優化的方向。在語音識別領域中,2014年和2016年提出的LHUC算法(learning hidden unit contributions)核心思想是做說話人自適應(speaker adaptation),其中一個key point是在DNN網絡中,爲每個說話人學習一個特定的隱式單位貢獻(hidden unit contributions),來提升不同說話人的語音識別效果。

借鑑LHUC的思想,快手團隊在精排模型上展開了嘗試。經過多次迭代優化,快手團隊設計出一種gating機制,可以增加DNN網絡參數個性化並能夠讓模型快速收斂。快手團隊把這種模型叫做PPNet(Parameter Personalized Net)。據快手介紹,PPNet能顯著提升模型的目標預估能力。

PPNet結構圖

 

如上圖所示,PPNet的左側是目前常見的DNN網絡結構,由稀疏特徵(sparse features)、嵌入層(embedding layer)、多神經網絡層(neural layer)組成。

單雙列數據融合

2020年9月,快手推出了8.0版本。這個版本里增加了底部導航欄,在此基礎上增加了一個"精選"tab,支持單列上下滑的形式。這個兼容雙列點選和單列上下滑的版本,旨在爲用戶提供更好的消費體驗,加入更多元的消費方式。在新的界面下,有相當一部分用戶會既使用雙列也使用單列。用戶在這兩種頁面上的消費方式和交互形式都有很大的不同,因此在數據層面表示出來的分佈也非常不同。如何將兩部分數據都用在模型建模裏,而且用好,成爲了快手模型組一個亟待解決的問題。

雙列發現頁設置版                             底導精選 極速版

爲了提升模型推薦效果,數據流層面做日誌融合和優化是非常有必要的,這是後續模型融合的基礎。其優勢在於:

  • 對於單雙列同時體驗的用戶,模型可以有更好的預估效果
  • 對於單列體驗擴量過程,緩解雙列用戶體驗單列時的冷啓動問題
  • 基於融合數據做模型融合,通過遷移學習的手段,提升單雙列用戶模型預估效果

快手團隊同推薦架構組合作,將單雙列日誌流融合。單雙列數據融合後,快手團隊後續的是在此基礎上做了模型融合,把雙列跟三個單列的業務統一訓練融合模型。這樣通過模型融合的算法可以提升所有業務的效果,同時也可以在所有業務推全拿到收益,加快迭代速度。

多目標預估優化-基於MMOE的多任務學習框架

單列業務的場景增多後,多任務學習更加重要。因爲在單列場景下,用戶的交互行爲都是基於show給用戶的視頻發生,並沒有像雙列交互那樣有非常重要的點擊行爲,這些交互行爲相對平等,而且這些行爲數量多達幾十個(時長相關預估目標、喜歡、關注、轉發等)。

精排模型預估目標(部分)

隨着單列業務數據量越來越大,從模型層面,拆離出針對單列業務單獨優化的模型。特徵層面,完全複用雙列模型特徵,只是針對單列的目標,額外添加個性化偏置特徵和部分統計值特徵。Embedding層面,因爲前期單列數據量少,不能保證embedding收斂,最初使用雙列數據click行爲主導訓練,後面改用單雙列用戶視頻觀看行爲(有效播放、長播放、短播放)主導訓練embedding,但這也沒有考慮到單雙列業務中embedding分佈差異。

單列網絡結構簡圖(只以like示例)

 

網絡結構層面,主要基於shared-bottom網絡結構訓練,不相關目標獨佔一個tower,相關目標共享同一tower頂層輸出,如上圖所示,這能在一定程度上提升目標預估效果。多任務學習層面,單列場景下,用戶的交互都是基於當前視頻show的單階段行爲,各個目標之間互相影響,模型單個目標的提升,不一定帶來線上收益。

因此最好的方案就是所有預估目標都能提升,如何設計一個好的多任務學習算法框架,變得非常關鍵。這個算法框架必須考慮數據、特徵、embedding,網絡結構以及單列用戶交互特點。在多任務學習層面,改造MMoE算法,設計了一個統一的學習框架,顯著提升模型所有目標的預估效果,並且方便後續統一優化。現實中的數據雜亂無章,往往並不是符合同一分佈或者服從同一特徵空間,尤其是主站雙列與單列場景,在快手的業務場景中是有交集或者關聯的。工業界和學術界討論的multi-task通常是從一個語義維度。在快手團隊的實際業務中,multi-task是存在多個語義的。 

第一個語義是單一業務場景下的多個任務在特徵空間和特徵分佈構成的多個後驗概率估計。

第二個語義是多個業務場景下對多個任務的分佈估計,同時存在K個數據源分佈對於同一任務和不同任務的關聯性,以及不同任務之間的關聯性。

MMoE是google提出的一種經典多任務學習算法,其核心思想是把shared-bottom網絡替換爲MMoE層,通過多個門控網絡在多個專家網絡上上分別針對每個目標學習不同專家網絡權重進行融合表徵,在此融合表徵的基礎上通過task網絡學習每個任務。

通過參考MMoE算法和上面提到的快手推薦場景難點,快手團隊改造了MMoE算法並設計了一套新的多任務學習算法框架,主要設計如下:

  • 特徵層面,進行語義統一。
  • Embedding層面,進行空間重新映射。
  • 特徵重要性層面,設計slot-gating layer,爲不同業務做特徵重要性選擇。

通過以上3點的改動,快手團隊把輸入層的embedding表示從特徵語義,embedding在不同業務分佈,特徵在不同業務重要性三個層面做了歸一化和正則化,重新映射到統一的特徵表徵空間,使得MMoE網絡在此空間上更好的捕捉多個任務之間後驗概率分佈關係。通過此項對MMoE的改進,模型所有的目標提升非常顯著。

短期行爲序列建模

用戶行爲序列建模層面,改造Transformer,提升用戶行爲序列建模能力。在快手推薦系統中,用戶歷史行爲特徵非常重要,對刻畫用戶興趣的動態變化有很好的表徵。在快手的推薦場景下,用戶的行爲特徵非常豐富並且多變,其複雜度遠遠超過其他的用戶,視頻或者上下文特徵,因此一個能夠針對用戶行爲序列建模的算法很有必要。目前業界上對於用戶行爲序列建模主要分爲兩種模式,一是對於用戶的歷史行爲進行weighted sum,二是通過RNN之類的模型進行時序建模。

在雙列精排模型,用戶行爲序列只是做簡單做sum pooling作爲模型輸入。而在單列場景下,用戶被動接收快手推薦視頻,而且丟失掉封面信息後,用戶需要觀看視頻一段時間再做反饋,用戶主動視頻選擇權降低,更加適合推薦系統對用戶的興趣做E&E(Exploit & Explore),這樣用戶的視頻觀看行爲更能體現出一些pattern。

Transformer模型是Google在2017年提出的經典神經網絡翻譯模型,後來火爆的BERT和GPT-3也是基於此模型部分結構。在對單列用戶的行爲序列模型設計上,快手團隊參考了Transformer。Transformer主要包括Encoder跟Decoder兩部分,其中Encoder部分對輸入語言序列進行建模,這部分跟快手團隊對用戶行爲序列建模目標是非常類似的,因此快手團隊借鑑其中算法結構並對計算量進行了優化。改造後的Transformer網絡能顯著提升模型的預估能力,在離線評估上,用戶觀看時長類預估提升非常明顯,線上用戶觀看時長也顯著提升。

長期興趣建模

一直以來,快手的推薦算法都比較偏向於使用用戶最近的行爲。快手的精排模型對用戶的短期興趣進行了極致的建模,取得了非常大的收益。快手團隊採用了用戶最近k個歷史行爲進行建模。由於短視頻行業的特點,最近歷史行爲通常只能表示用戶很短一段時間內的興趣。這就造成了目前的模型過度依賴用戶的短期行爲,而導致了對用戶中長期興趣建模的缺失。

針對快手的業務特點,快手團隊對於用戶長期興趣也進行了建模,使得模型能對於用戶長期的歷史記錄都有感知能力。快手團隊發現,將用戶的交互歷史序列(播放、點贊、關注、轉發等)擴長之後,模型能夠更好的捕捉到一些潛在的用戶興趣,即使此類行爲相對稀疏。針對該特點,快手團隊在之前的模型基礎上設計並改進了用戶超長期興趣建模模塊。此模型已經在全量業務推全並且取得了巨大的線上收益。

快手用戶長期興趣精排模型結構示意圖

千億特徵

隨着模型的迭代,dnn網絡的複雜度越來越高,模型中添加的特徵數量也越來越多,模型特徵規模的大小也制約了精排模型的迭代。帶來的問題主要有以下幾點:

模型特徵規模的限制,導致一部分特徵被逐出,這會帶來模型收斂的不穩定性。部分低頻的特徵更容易被逐出,會導致線上冷啓動效果變差(新視頻、新用戶),對於長尾的視頻或者新用戶不夠友好。

爲了解決這個問題,快手團隊同架構組針對訓練引擎和線上serving進行改進,可以做到離線訓練和線上serving的服務根據配置的特徵量靈活擴展,可以做到精排模型離線跟線上有千億特徵,萬億參數的規模,並已經上線,取得不錯的線上收益。特別的,新模型對於新視頻跟新用戶的流量分發更加友好,也是踐行了快手推薦"普惠"的理念。目前快手的精排模型,總特徵量超過1000億,模型總的參數量超過19000億,已經全量上線。

在線訓練和預估服務

爲了支撐推薦場景下千億特徵模型的在線訓練和實時預估,快手團隊針對訓練框架和線上預估服務的參數服務器(Parameter Server)進行了修改。在推薦模型的在線學習中,存儲Embedding的參數服務器需要能夠精準的控制內存的使用,提升訓練和預估的效率。爲了解決這一問題,快手團隊提出了無衝突且內存高效的全局共享嵌入表(Global Shared Embedding Table, GSET)的參數服務器設計。

每個 ID 單獨映射一個Embedding向量很快就會佔滿機器的內存資源,爲了確保系統可以長期執行,GSET 使用定製的 feature score 淘汰策略以控制內存佔用量可以始終低於預設閾值。傳統的緩存淘汰策略如 LFU、LRU 只考慮了實體出現的頻率信息,主要用以最大化緩存的命中率。feature score 策略考慮了機器學習場景下額外的信息來輔助進行特徵淘汰。

在推薦系統的在線學習過程中,會有大量低頻 ID 進入系統,這些低頻 ID 通常在未來的預估中根本不會出現,系統接收了這些特徵後可能很快又會再次淘汰他們。爲了防止低頻 ID 無意義的進入和逐出對系統性能產生影響,GSET 中支持一些特徵准入策略來過濾低頻特徵。同時爲了提升GSET的效率和降低成本,快手團隊還採用了新的存儲器件 -- 非易失內存 (Intel AEP)。非易失內存能提供單機達到若干TB的近似內存級別訪問速度。爲了適配這種硬件,快手團隊實現了底層KV引擎NVMKV來支撐GSET。

One More Thing

據快手推薦算法負責人宋洋介紹,短視頻行業有其獨特的挑戰,表現在用戶量級大,視頻上傳量大,作品生命週期短,用戶興趣變化快。因此很難照搬傳統視頻行業精細化運營的做法來做推薦,而需要依靠推薦算法對視頻進行及時的,精細化的分發。快手推薦算法團隊一直針對短視頻業務進行深度定製和積極創新,提出了很多業界首創的推薦模型和想法,同時也給推薦工程架構團隊帶來了很多系統和硬件層面的挑戰。

萬億參數模型是推薦系統一個里程碑式的突破,結合了序列模型,用戶長短期興趣模型,門控模型,專家模型等各個方面的優點,是至今爲止工業級最全面,最有效的推薦模型,該模型已經在快手的主要業務上全量上線。在未來"算法-系統-硬件"三位一體的挑戰和機遇可能會有更多,希望這將更進一步推動快手推薦系統在技術上的創新和突破,爲用戶增進體驗和創造價值。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章