作者|機器之心編輯部

 來源|機器之心


來,走近快手業(yè)界首個萬億參數(shù)推薦精排模型的內(nèi)部構(gòu)造。
個性化推薦系統(tǒng)旨在根據(jù)用戶的行為數(shù)據(jù)提供「定制化」的產(chǎn)品體驗,精準的推薦系統(tǒng)模型也是很多互聯(lián)網(wǎng)產(chǎn)品的核心競爭力。作為一款國民級短視頻 App,快手每天都會為數(shù)億用戶推薦上百億的視頻,這就涉及到一個挑戰(zhàn):推薦系統(tǒng)模型如何精準地描述與捕捉用戶的興趣?
如今業(yè)內(nèi)采用的解決方案通常為結(jié)合大量數(shù)據(jù)集和擬合參數(shù)來訓(xùn)練深度學(xué)習(xí)模型,如此一來讓模型更加逼近現(xiàn)實情況。Google 日前發(fā)布了首個萬億級模型 Switch Transformer,參數(shù)量達到 1.6 萬億,其速度是 Google 之前開發(fā)的最大語言模型(T5-XXL)的 4 倍。
實際上,快手萬億參數(shù)精排模型總的參數(shù)量超過 1.9 萬億,規(guī)模更大,且已經(jīng)投入實踐。這篇文章將正式介紹快手精排模型的發(fā)展史。
先看一張對比圖,從左到右分別為:
  • Google BERT-large NLP 預(yù)訓(xùn)練模型: 3.4 億參數(shù)量

  • Google Meena 開域聊天機器人:26 億參數(shù)量

  • Google T5 預(yù)訓(xùn)練模型:110 億參數(shù)量

  • OpenAI GPT3 語言模型:1750 億參數(shù)量

  • Google Switch Transformer 語言模型: 16000 億參數(shù)量

  • 快手精排排序模型:19000 億參數(shù)量


參數(shù)個性化 CTR 模型 - PPNet


2023 年之前,快手 App 主要以雙列的瀑布流玩法為主,用戶同視頻的交互與點擊,觀看雙階段來區(qū)分。在這種形式下, CTR 預(yù)估模型變得尤為關(guān)鍵,因為它將直接決定用戶是否愿意點擊展示給他們的視頻。彼時業(yè)界主流的推薦模型還是以 DNN、DeepFM 等簡單的全連接深度學(xué)習(xí)模型為主。但考慮到某用戶個體和視頻的共建語義模式在全局用戶的共建語義模式基礎(chǔ)上會有個性化的偏差,如何在 DNN 網(wǎng)絡(luò)參數(shù)上為不同用戶學(xué)習(xí)一個獨有的個性化偏差成為了快手推薦團隊優(yōu)化的方向。 在語音識別領(lǐng)域中,2023 年和 2023 年提出的 LHUC 算法(learning hidden unit contributions)核心思想是做說話人自適應(yīng)(speaker adaptation),其中一個關(guān)鍵突破是在 DNN 網(wǎng)絡(luò)中,為每個說話人學(xué)習(xí)一個特定的隱式單位貢獻(hidden unit contributions),來提升不同說話人的語音識別效果。借鑒 LHUC 的思想,快手推薦團隊在精排模型上展開了嘗試。經(jīng)過多次迭代優(yōu)化,推薦團隊設(shè)計出一種 gating 機制,可以增加 DNN 網(wǎng)絡(luò)參數(shù)個性化并能夠讓模型快速收斂。快手把這種模型叫做 PPNet(Parameter Personalized Net)。據(jù)快手介紹,PPNet 于 2023 年全量上線后,顯著的提升了模型的 CTR 目標預(yù)估能力。
PPNet 結(jié)構(gòu)圖 如上圖所示,PPNet 的左側(cè)是目前常見的 DNN 網(wǎng)絡(luò)結(jié)構(gòu),由稀疏特征(sparse features)、嵌入層(embedding layer)、多神經(jīng)網(wǎng)絡(luò)層(neural layer)組成。右側(cè)是 PPNet 特有的模塊,包括 Gate NN 和只給 Gate NN 作為輸入的 id 特征。其中 uid,pid,aid 分別表示 user id,photo id,author id。左側(cè)的所有特征的 embedding 會同這 3 個 id 特征的 embedding 拼接到一起作為所有 Gate NN 的輸入。需要注意的是,左側(cè)所有特征的 embedding 并不接受 Gate NN 的反傳梯度,這樣操作的目的是減少 Gate NN 對現(xiàn)有特征 embedding 收斂產(chǎn)生的影響。Gate NN 的數(shù)量同左側(cè)神經(jīng)網(wǎng)絡(luò)的層數(shù)一致,其輸出同每一層神經(jīng)網(wǎng)絡(luò)的輸入做 element-wise product 來做用戶的個性化偏置。Gate NN 是一個 2 層神經(jīng)網(wǎng)絡(luò),其中第二層網(wǎng)絡(luò)的激活函數(shù)是 2 * sigmoid,目的是約束其輸出的每一項在 [0, 2] 范圍內(nèi),并且默認值為 1。當 Gate NN 輸出是默認值時,PPNet 同左側(cè)部分網(wǎng)絡(luò)是等價的。經(jīng)實驗對比,通過 Gate NN 為神經(jīng)網(wǎng)絡(luò)層輸入增加個性化偏置項,可以顯著提升模型的目標預(yù)估能力。PPNet 通過 Gate NN 來支持 DNN 網(wǎng)絡(luò)參數(shù)的個性化能力,來提升目標的預(yù)估能力,理論上來講,可以用到所有基于 DNN 模型的預(yù)估場景,如個性化推薦,廣告,基于 DNN 的強化學(xué)習(xí)場景等。

多目標預(yù)估優(yōu)化 - 基于 MMoE 的多任務(wù)學(xué)習(xí)框架

隨著短視頻用戶的需求不斷升級,2023 年 9 月,快手推出了 8.0 版本。這個版本里增加了底部導(dǎo)航欄,在此基礎(chǔ)上增加了一個「精選」tab,支持單列上下滑的形式。這個兼容雙列點選和單列上下滑的版本,旨在為用戶提供更好的消費體驗,加入更多元的消費方式。在新的界面下,有相當一部分用戶會既使用雙列也使用單列。用戶在這兩種頁面上的消費方式和交互形式都有很大的不同,因此在數(shù)據(jù)層面表示出來的分布也非常不同。如何將兩部分數(shù)據(jù)都用在模型建模里,而且用好,成為了快手推薦團隊一個亟待解決的問題。
快手團隊發(fā)現(xiàn),當單列業(yè)務(wù)的場景增多后,多任務(wù)學(xué)習(xí)更加重要。因為在單列場景下,用戶的交互行為都是基于 show 給用戶的視頻發(fā)生,并沒有像雙列交互那樣有非常重要的點擊行為。這些交互行為相對平等,而且這些行為數(shù)量多達幾十個(時長相關(guān)預(yù)估目標、喜歡、關(guān)注、轉(zhuǎn)發(fā)等)。
精排模型預(yù)估目標(部分) 隨著單列業(yè)務(wù)數(shù)據(jù)量越來越大,從模型層面,推薦團隊嘗試拆離出針對單列業(yè)務(wù)單獨優(yōu)化的模型。具體表現(xiàn)在特征層面,可以完全復(fù)用雙列模型特征,只是針對單列的目標,額外添加個性化偏置特征和部分統(tǒng)計值特征。在 Embedding 層面,因為前期單列數(shù)據(jù)量少,不能保證 embedding 收斂,最初使用雙列數(shù)據(jù) click 行為主導(dǎo)訓(xùn)練,后面改用單雙列用戶視頻觀看行為(有效播放、長播放、短播放)主導(dǎo)訓(xùn)練 embedding。在網(wǎng)絡(luò)結(jié)構(gòu)層面,主要基于 shared-bottom 網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練,不相關(guān)目標獨占一個 tower,相關(guān)目標共享同一 tower 頂層輸出,這能在一定程度上提升目標預(yù)估效果。這個模型上線后,起初有一定的效果,但很快暴露出了一些問題。首先,它沒有考慮到單雙列業(yè)務(wù)中 embedding 分布差異,造成了 embedding 學(xué)習(xí)不充分。其次,在多任務(wù)學(xué)習(xí)層面,單列場景下,用戶的交互都是基于當前視頻 show 的單階段行為,各個目標之間互相影響,模型單個目標的提升,不一定能帶來線上的整體收益。 因此,如何設(shè)計一個好的多任務(wù)學(xué)習(xí)算法框架,讓所有預(yù)估目標都能提升變得非常關(guān)鍵。這個算法框架必須考慮數(shù)據(jù)、特征、embedding、網(wǎng)絡(luò)結(jié)構(gòu)以及單列用戶交互特點。經(jīng)過充分的調(diào)研和實踐,推薦團隊決定采用 MMoE 模型(Multi-gate Mixture-of-Experts)來改進當前模型。 MMoE 是 Google 提出的一種經(jīng)典多任務(wù)學(xué)習(xí)算法,其核心思想是把 shared-bottom 網(wǎng)絡(luò)替換為 Expert 層,通過多個門控網(wǎng)絡(luò)在多個專家網(wǎng)絡(luò)上上分別針對每個目標學(xué)習(xí)不同專家網(wǎng)絡(luò)權(quán)重進行融合表征,在此融合表征的基礎(chǔ)上通過 task 網(wǎng)絡(luò)學(xué)習(xí)每個任務(wù)。 通過參考 MMoE 算法和上面提到的快手推薦場景難點,推薦團隊改造了 MMoE 算法并設(shè)計了一套新的多任務(wù)學(xué)習(xí)算法框架。具體體現(xiàn)在,在特征層面,進行了語義統(tǒng)一,修正在單雙列業(yè)務(wù)中語義不一致特征,添加針對用戶在單列相關(guān)特征。在 Embedding 層面,進行了空間重新映射,設(shè)計了 embedding transform layer,直接學(xué)習(xí)單雙列 embedding 映射關(guān)系,幫助單雙列 embedding 映射到統(tǒng)一空間分布。在特征重要性層面,設(shè)計了 slot-gating layer,為不同業(yè)務(wù)做特征重要性選擇。 通過以上 3 點的改動,模型將輸入層的 embedding 表示從特征語義,embedding 在不同業(yè)務(wù)分布,特征在不同業(yè)務(wù)重要性三個層面做了歸一化和正則化,重新映射到統(tǒng)一的特征表征空間,使得 MMoE 網(wǎng)絡(luò)在此空間上更好的捕捉多個任務(wù)之間后驗概率分布關(guān)系。通過此項對 MMoE 的改進,模型所有的目標提升非常顯著。

短期行為序列建模 - Transformer模型


在快手的精排模型中,用戶歷史行為特征非常重要,對刻畫用戶興趣的動態(tài)變化有很好的表征。在快手的推薦場景下,用戶的行為特征非常豐富并且多變,其復(fù)雜度遠遠超過視頻類特征或者上下文的特征,因此設(shè)計一個能夠針對用戶行為序列有效建模的算法很有必要。 目前業(yè)界上對于用戶行為序列建模主要分為兩種模式,一是對于用戶的歷史行為進行 weighted sum,二是通過 RNN 之類的模型進行時序建模。在快手前期的雙列精排模型里,用戶行為序列只是簡單做 sum pooling 作為模型輸入。而在單列場景下,用戶被動接收快手推薦視頻,而且丟失掉封面信息后,用戶需要觀看視頻一段時間再做反饋,因此主動視頻選擇權(quán)降低,更加適合推薦系統(tǒng)對用戶的興趣做 E&E(Exploit & Explore)。 快手的序列建模靈感來自于 Transformer 模型。Transformer 模型是 Google 在 2023 年提出的經(jīng)典神經(jīng)網(wǎng)絡(luò)翻譯模型,后來火爆的 BERT 和 GPT-3 也是基于此模型部分結(jié)構(gòu)。Transformer 主要包括 Encoder 跟 Decoder 兩部分,其中 Encoder 部分對輸入語言序列進行建模,這部分跟用戶行為序列建模目標是非常類似的,因此快手借鑒其中算法結(jié)構(gòu)并對計算量進行了優(yōu)化。
MMoE 結(jié)合 Transformer 建模用戶興趣序列
首先,快手推薦團隊使用用戶的視頻播放歷史作為行為序列。候選的序列有用戶長播歷史序列,短播歷史序列,用戶點擊歷史序列等,此類列表詳盡地記錄了用戶觀看視頻 id,作者 id,視頻時長,視頻 tag,視頻觀看時長,視頻觀看時間等內(nèi)容,完整描述用戶的觀看歷史。其次,對視頻觀看距今時間做 log 變換代替 position embedding。在快手的推薦場景下,用戶短期的觀看行為跟當次預(yù)估更相關(guān),長時間觀看行為更多體現(xiàn)用戶的多興趣分布,使用 log 變換更能體現(xiàn)這種相關(guān)性。最后,替換 multi-head self-attention 為 multi-head target attention,并且使用當前 embedding 層的輸入作為 query。這樣設(shè)計的目的有兩點,首先當前用戶特征,預(yù)估視頻特征和 context 特征比單獨的用戶行為序列提供更多信息。其次可以簡化計算量,從 O(d*n*n*h)變換為 O(d*n*h + e*d),其中 d 為 attention 的維度,n 為 list 長度,h 為 head 個數(shù),e*d 表征的是 embedding 層維度變換為 attention 維度所需的復(fù)雜度。 改造后的 Transformer 網(wǎng)絡(luò)能顯著提升模型的預(yù)估能力,在離線評估上,用戶觀看時長類預(yù)估提升非常明顯,線上用戶觀看時長也顯著提升。

長期興趣建模


長期以來,快手的精排模型都比較偏向于使用用戶最近的行為。上面已經(jīng)說到,通過采用 transformer 和 MMoE 模型,快手的精排模型對用戶的短期興趣進行了精確的建模,取得了非常大的收益。之前的模型里,采用了用戶最近幾十個歷史行為進行建模。由于短視頻行業(yè)的特點,最近幾十個歷史行為通常只能表示用戶很短一段時間內(nèi)的興趣。這就造成了模型過度依賴用戶的短期行為,而導(dǎo)致了對用戶中長期興趣建模的缺失。 針對快手的業(yè)務(wù)特點,快手推薦團隊對于用戶長期興趣也進行了建模,使得模型能對于用戶長期的歷史記錄都有感知能力。快手推薦團隊發(fā)現(xiàn),將用戶的交互歷史序列(播放、點贊、關(guān)注、轉(zhuǎn)發(fā)等)擴長之后,模型能夠更好的捕捉到一些潛在的用戶興趣,即使此類行為相對稀疏。針對該特點,推薦團隊在之前的模型基礎(chǔ)上設(shè)計并改進了用戶超長期興趣建模模塊,能夠?qū)τ脩魩讉€月到一年的行為進行全面的建模,用戶行為序列長度能達到萬級。此模型已經(jīng)在全量業(yè)務(wù)推全并且取得了巨大的線上收益。   快手用戶長期興趣精排模型結(jié)構(gòu)示意圖
千億特征,萬億參數(shù) 隨著模型的迭代,深度學(xué)習(xí)網(wǎng)絡(luò)的復(fù)雜度越來越高,模型中添加的特征數(shù)量也越來越多,模型特征規(guī)模的大小也制約了精排模型的迭代。這不僅會限制模型特征的規(guī)模,使得一部分特征被逐出,帶來模型收斂的不穩(wěn)定性,同時還會導(dǎo)致模型更容易逐出低頻的特征,造成線上冷啟動效果變差(新視頻、新用戶),對于長尾的視頻或者新用戶不夠友好。 為了解決這個問題,快手推薦和架構(gòu)的同學(xué)針對訓(xùn)練引擎和線上 serving 進行改進,做到離線訓(xùn)練和線上 serving 的服務(wù)根據(jù)配置的特征量靈活擴展,可以支持精排模型離線跟線上有千億特征,萬億參數(shù)的規(guī)模。特別的,新模型對于新視頻跟新用戶的流量分發(fā)更加友好,在新用戶和新視頻的指標上有顯著的提升,踐行了快手推薦」普惠「的理念。目前快手的精排模型,總特征量超過 1000 億,模型總的參數(shù)量超過 19000 億。 在線訓(xùn)練和預(yù)估服務(wù) 為了支撐推薦場景下千億特征模型的在線訓(xùn)練和實時預(yù)估,推薦團隊針對訓(xùn)練框架和線上預(yù)估服務(wù)的參數(shù)服務(wù)器 (Parameter Server) 進行了修改。在推薦模型的在線學(xué)習(xí)中,存儲 Embedding 的參數(shù)服務(wù)器需要能夠精準的控制內(nèi)存的使用,提升訓(xùn)練和預(yù)估的效率。為了解決這一問題,推薦團隊提出了無沖突且內(nèi)存高效的全局共享嵌入表(Global Shared Embedding Table, GSET)的參數(shù)服務(wù)器設(shè)計。
每個 ID 單獨映射一個 Embedding 向量很快就會占滿機器的內(nèi)存資源,為了確保系統(tǒng)可以長期執(zhí)行,GSET 使用定制的 feature score 淘汰策略以控制內(nèi)存占用量可以始終低于預(yù)設(shè)閾值。傳統(tǒng)的緩存淘汰策略如 LFU、LRU 只考慮了實體出現(xiàn)的頻率信息,主要用以最大化緩存的命中率。feature score 策略考慮了機器學(xué)習(xí)場景下額外的信息來輔助進行特征淘汰。 在推薦系統(tǒng)的在線學(xué)習(xí)過程中,會有大量低頻 ID 進入系統(tǒng),這些低頻 ID 通常在未來的預(yù)估中根本不會出現(xiàn),系統(tǒng)接收了這些特征后可能很快又會再次淘汰他們。為了防止低頻 ID 無意義的進入和逐出對系統(tǒng)性能產(chǎn)生影響,GSET 中支持一些特征準入策略來過濾低頻特征。同時為了提升 GSET 的效率和降低成本,快手還采用了新的存儲器件 -- 非易失內(nèi)存 (Intel AEP)。非易失內(nèi)存能提供單機達到若干 TB 的近似內(nèi)存級別訪問速度。為了適配這種硬件,推薦團隊實現(xiàn)了底層 KV 引擎 NVMKV 來支撐 GSET,從而很好的確保了萬億參數(shù)模型的線上穩(wěn)定性。

展望未來

據(jù)快手推薦算法負責(zé)人,曾在 Google Research 擔(dān)任 Staff Research Manager 的宋洋博士介紹,短視頻行業(yè)有其獨特的挑戰(zhàn),表現(xiàn)在用戶量多,視頻上傳量大,作品生命周期短,用戶興趣變化快等多個方面。因此短視頻推薦很難照搬傳統(tǒng)視頻行業(yè)精細化運營的做法,而需要依靠推薦算法對視頻進行及時、精確的分發(fā)。快手推薦算法團隊一直針對短視頻業(yè)務(wù)進行深度定制和積極創(chuàng)新,提出了很多業(yè)界首創(chuàng)的推薦模型和想法,同時也給推薦工程架構(gòu)團隊帶來了很多系統(tǒng)和硬件層面的挑戰(zhàn)。 宋洋博士認為,快手精排萬億參數(shù)模型是推薦系統(tǒng)一個里程碑式的突破,它結(jié)合了序列模型,長短期興趣模型,門控模型,專家模型等各個方面的優(yōu)點,是至今為止工業(yè)界最全面,最有效的推薦模型之一。該模型已在快手的主要業(yè)務(wù)上全量上線為用戶服務(wù)。在未來「算法 - 系統(tǒng) - 硬件」三位一體的挑戰(zhàn)和機遇可能會有更多,希望這將更進一步推動快手推薦系統(tǒng)在技術(shù)上的創(chuàng)新和突破,為用戶增進體驗和創(chuàng)造價值。

??

現(xiàn)在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關(guān)注」訂閱我們的專欄吧

關(guān)于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學(xué)術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。