Al 與推薦技術在騰訊 QQ 瀏覽器的應用

語言: CN / TW / HK

口述 | 徐羽

整理 | 王強

AICon 全球人工智慧與機器學習技術大會(2021)北京站 上,騰訊資訊平臺與服務線 CTO、PCG 事業群推薦與 AI 中臺負責人徐羽帶來了主題為《Al 與推薦技術在騰訊 QQ 瀏覽器的應用》的分享,詳細介紹了 QQ 瀏覽器近年來在 AI 推薦技術方面走過的技術旅程。本文由 InfoQ 根據徐羽的演講內容進行整理,希望對你有所啟發。  

騰訊資訊平臺與服務線 CTO、PCG 事業群推薦與 AI 中臺負責人徐羽

面向超大規模使用者群體的推薦技術是近年來 AI 落地的熱門場景之一。在國內,騰訊是較早大規模實踐 AI 推薦技術的頭部廠商。騰訊旗下的 QQ 瀏覽器應用月活使用者超過 4 億,過去幾年來在 AI 和推薦技術方面經歷了三次大規模重構和迭代,其實戰經歷具有很高的參考與學習價值。

QQ 瀏覽器月活使用者超過 4 億,是典型的超大規模使用者群平臺產品。QQ 瀏覽器使用者群體分佈與中國網際網路使用者群體分佈相似,且使用者日均使用次數較多,能夠為推薦系統提供高質量的大樣本資料集,為許多形態複雜、內容多樣的推薦模型構建基礎。

QQ 瀏覽器推薦系統架構

在 QQ 瀏覽器中,推薦演算法應用的主場景是資訊流。資訊流主 feed 是圖文、短視訊、小視訊混合形態。使用者點選圖文會進入詳情頁,點選豎屏小視訊會進入小視訊沉浸式頁面,點選橫版視訊會進入短視訊沉浸式頁面。

在 2015 年之前,騰訊推薦系統大多為偏單目標和淺層的機器學習模型。2015 年微軟提出了 DSSM 雙塔召回模型,2016 年穀歌提出了 Wide&Deep 模型,之後騰訊開始大規模使用隱性特徵做召回和排序,大大增強了推薦模型的泛化能力,一定程度緩解了推薦系統中飽受詬病的資訊繭房問題。2018 年穀歌釋出 MMOE 模型後,騰訊在 2020 年也釋出了自研 PLE 模型,令推薦模型可以同時做多個目標。最近騰訊還在積極探索 AutoML 應用,希望使用超引數為模型自動化尋參。

縱觀 QQ 瀏覽器整體推薦架構,從下往上來看,下層要計算的資料更多,負責將盡可能多的內容篩選出來向上層傳遞;上層模型更加複雜,特徵更加精細化,負責儘可能給出最優排序結果。目前各個層面都有新的技術趨勢和演進,其中召回層面正在引入更多圖模型召回、更多常序類召回;排序層面正在引入更多多模態特徵、長 session 級別特徵;多目標層面納入了點選率、時長、互動等目標,希望實現更充分的融合;混排層面,QQ 瀏覽器需要在每次使用者重新整理後決定新頁面中顯示的圖文、短視訊和小視訊的比例,現在團隊在使用強化學習技術處理相關排布,希望爭取能夠讓系統獲得最大獎勵。

該架構在邊緣計算方面也有創新。QQ 瀏覽器終端有小排序模型,是雲端和終端聯動模型。使用者在沉浸式視訊流中看視訊時,終端模型會實時將使用者反饋資料上傳雲端,雲端根據當前視訊完播率、關注度等資料調整後續視訊排序,為使用者在下次重新整理時推薦更符合瀏覽興趣的視訊。

召回模組

該推薦系統召回模組分為顯式召回和隱性召回。隱性召回如今佔據主曝光量 90% 以上,是最重要的召回方式。隱性召回涉及演算法模型較多,其中對曝光量影響最大的兩種分別為 ICF(基於物品的屬性召回)與 UCF(基於使用者序列的召回)。

ICF 方面,騰訊早期使用了經典的關聯召回,其實現簡單,效果尚可,但缺乏物品相似度計算,使用者體驗欠佳。關聯召回要求每個物品有較多使用者行為才能給出較準確計算結果,很難處理好系統中的新到達內容,更傾向於推薦熱門商品。

為此團隊引入 NLP 中經典的 Word2vec,以使用者觀看減肥視訊為例,Word2vec 能夠關聯推薦健康食品相關視訊,這樣在提升使用者體驗時顯著提升了點選率。針對物品冷啟動問題,現在整個召回模型使用 GraphSage 圖模型演算法結構。該結構要更多考慮圖模型中邊的資訊與權重,與每個節點的特徵資訊。GraphSage 能夠在物品沒有積累很多使用者行為的情況下,計算出非常準確的 Embedding,方便召回。

例如使用者觀看主題為深圳看海的短視訊後,兩個創作者上傳了杭州森林、昆明田野的視訊。過去的 ICF 召回無法對這樣的新內容進行有效推薦,但 GraphSage 可以準確計算其 Embedding,實時向用戶推薦。這一改進不僅提升了推薦效率,還有助於平臺建設更良好生態,更好地扶持新創作者。

UCF 召回方面,團隊使用了經典的 RNN 召回。在演進過程中,團隊加入 Attention,將使用者點選作為輸入,算出每個使用者的向量,結合物品向量計算相似度以進行召回。但 RNN 模型是序列計算方式,只能計算使用者過去幾十次,最多一兩百次的行為;而平臺很多老使用者使用 QQ 瀏覽器很多年,行為積累幾千甚至幾萬之多。針對這一方面需求,團隊將模型升級為多層 RNN 的 Memory 的儲存建模,模型中有非常多層 RNN 網路,每一層代表使用者不同時間的序列,如有些層代表使用者永久點選,有些層代表使用者長期點選,有些層是近期點選,等等。每層網路中間儲存和更新計算均不相同,從而最大化節省儲存空間和提升推理速度。經過這樣的改進,系統得以做到網路線上實時推理,同時召回使用者永久興趣、長期興趣、中期興趣和短期興趣,從而大幅提升使用者體驗,使人均點選率提升 20% 以上。

排序模組

排序模組的精排層是特徵最多最複雜的模型結構。團隊早期使用 LR 模型,泛化能力相對較差。之後團隊演進到 Wide&Deep 模型,泛化能力大大增強,但這種模型缺乏特徵之間的交叉和融合方案。

最近團隊將模型演進到名為“多種演算法模型融合多工學習”的排序模型。模型最下層有使用者特徵、物品特徵和多模態特徵,從中生成一些 Embedding 向量。之後對向量調權,做 Embedding Reweight;再使用 FM、CIN 等方式對 Embedding 特徵做高維度交叉。模型中間是專家網路層,之前使用類似谷歌 MMOE 的實現,現在則轉用騰訊內部發布的 PLE 模型。PLE 模型中,除了每個目標有自己單獨的專家網路之外,還共享了一些專家設計,相較 MMOE 模型有更明確的效果。

模型最上層引入分塔技術,該技術與業務場景和使用行為高度相關。在瀏覽器首頁,新使用者和老使用者的行為有所不同,因此新使用者和老使用者會各自單獨建模,分兩個塔,各有自己的輸入引數以提高效果。以視訊播放場景為例,團隊發現短視訊、長視訊和中視訊的物理 Label 分佈不一樣,所以在這個層面上按照視訊物理時長做分塔切片可以提升推薦效果。

團隊還打造了特色的 pointwise+pairwise 聯合學習。其中 pointwise 一般用來預估 CPR 做 pCTR 輸出,但使用者序列學習效果不佳,所以往往 AUC 計算較好,但 GAUC 偏低。而 pairwise 的一般排序比 pointwise 更好,但前者無法生成 pCTR,亦即 CTR 使用者值,但混排在上面的載控各層需要該值。如果 pointwise、pairwise 分別部署,兩套模型需要兩倍機器。為此團隊提出改進,在輸入時通過一些矩陣轉制同時生成 pointwise 和 pairwise 樣本,兩者共享一些共同的輸入特徵、共享部分網路模型。上層 pointwise 和 pairwise 有各自獨立的模型和計算,這樣無需增加任何伺服器成本就可以在一次樣本流裡同時輸出兩個結果,最後 pairwise 輸出的 pCTR 用在其他場景,而 pairwise 排序結果作為精排結果輸出。

多目標

在瀏覽器主 feeds 場景中,使用者點選視訊時,系統首先要預測各個視訊點選率、卡片點選率;使用者點選卡片進入視訊沉浸流後,系統要預測第二層目標,預測各個視訊完播率,預測使用者是否會下滑,預估使用者滑多少條視訊、整體時長有多少;第三層目標還要預估使用者在滑動過程中可能關注、收藏、分享哪些視訊;第四層目標需要預估使用者是否會觀看視訊評論或撰寫評論。最終,系統會預估十多個目標,而多目標融合技術就負責將這些目標融合成合理的方式排序。

早期團隊在做多目標融合的時候主要使用加法或者乘法結合超引數,核心是尋找最合理的超引數,現在則演進為用機器自動尋參。尋參方式從經典的網格計算演進到非個性化尋參,加入 BS 優化;最近模型演化到個性化尋參,每個使用者都有自己獨立的超引數。團隊使用進化演算法實現該體系,每次迭代後引數都會更靠近最優值。

調參結果會通過 AB 實驗系統對接線上流量,每一次並行做幾百上千組實驗,以最快時間獲得線上反饋,完成整體超引數優化。目前這套體系比之前的調參方法節約 50% 以上研發時間。

PCG 技術中臺“無量”大規模分散式機器學習平臺

QQ 瀏覽器平臺使用的大規模分散式機器學習平臺名為“無量”。由於 QQ 瀏覽器資訊流每天曝光量達到百億級,因而需要非常強大的計算平臺。在這樣的背景下誕生的騰訊 PCG 推薦中臺超大規模深度學習系統—無量。無量平臺能夠訓練百億級樣本,生成 TB 級別模型,在線上達到毫秒級推理。

系統原有的模型遷移至無量後,各方面效果平均提升 20% 以上。無量採用引數伺服器的設計理念,其針對平臺的推薦、搜尋演算法特點,每一個 batch 只會啟用較少的稀疏特徵。底層可能是稀疏引數,規模千億級,上層可能是百萬級較稠密的引數。

無量是 worker 和 server 分散式架構,其中 server 負責 TB 級模型的儲存更新和推理,worker 負責百億級樣本的分散式訓練。分散式計算涉及巨量網路通訊,所以無量引入了零位元組網路通訊拷貝、混合精度壓縮等技術,降低 worker 和 server 之間的網路通訊量。

無量平臺不僅能支援騰訊自研模型,還支援 TensorFlow、PyTorch 等眾多第三方框架,方便現有模型程式碼遷移。

無量平臺在推理方面遇到很多挑戰,其中每次請求需要訪問多達十幾萬次 key 的數量級,系統峰值達到幾十億次 QPS 訪問量。傳統系統的讀寫鎖、主備設計無法滿足如此高的效能要求,因此騰訊自研了一套基於記憶體的模型儲存系統,實現多執行緒無鎖、單個模型定型讀取、主副版本讀寫分離等,滿足了超高規格的效能需求。

針對大規模模型的線上更新挑戰,團隊採用了 TB 級大模型全量更新每 4 到 8 小時一次,增量模型 10 分鐘一次,實模型和 KB 級模型毫秒級更新的策略。

團隊還將推薦模型的訓練和推理工作都遷移到了 GPU 上。為了解決 GPU 視訊記憶體較小的挑戰,團隊應用了大量優化。訓練階段需要非常高的吞吐量,所以團隊將每一次訓練樣本中需要用到的高頻引數樣本放入 GPU 視訊記憶體,下一次可能使用的引數特徵放入 CPU 記憶體,其他引數放入 SSD。推理階段需要更低的延時和更高的併發,因此團隊對線上千億級特徵實時統計訪問頻率,將高頻引數放入推理的 GPU 視訊記憶體,中頻引數放入記憶體,低頻引數放入分散式記憶體 serving 叢集。

線上推理遷移到 GPU 後節省了一半成本,改進非常顯著。

NLP、CV 與視訊理解

興趣點圖譜

在 QQ 瀏覽器內容演算法中,興趣點圖譜的本質是打標籤。團隊面臨的挑戰是如何將標籤打全,打準,打出標籤與標籤之間的組合關係,打出一些概念標籤,像人類一樣打出感情的標籤,等等。

2019 年,團隊主要聚焦語義領域,解決概念標籤問題。例如一篇手機評測文章沒有直接列舉手機價格、描述拍照好壞,而系統可以通過概念抽象提煉文章標籤,總結出“這是高性價比拍照功能特別好的手機”這樣的主題。

2020 年,團隊主要開發聚集話題、事件的關聯能力。例如系統通過話題聚合和事件生成能力把和東京奧運相關的成千上萬視訊文章,聚合到事件脈絡和每個話題中,形成事件和話題的圖譜體系。

今年團隊聚焦小視訊標籤領域,希望解決更深層次的語義提煉問題,希望 NLP 像人類一樣打情感類標籤。

此外,系統現在可以基於使用者喜歡的明星做推薦,或者通過“高顏值”這樣的概念標籤進行推薦。現在平臺的興趣點圖譜有接近 100 萬個興趣點,全面覆蓋所有中文內容幾乎每一個垂直領域。

神舟預訓練模型

QQ 瀏覽器團隊在兩個月前推出了神舟預訓練模型,不僅在權威的中文語言理解測評基準拿到冠軍,還在二十多個分類和語義標籤任務上第一次超過了人類專家標註的水平,是比較有標誌性意義的技術。

預訓練的業務在推薦技術,搜尋業務裡都有大規模使用。之前的 BERT 主要優化英文,對漢語支援不佳,所以團隊做了字詞混合力度表達輸入到特徵裡;BERT 使用了絕對未知編碼,而團隊發現漢語裡用相對未知編碼效果更好,能讓語義相關的 Embedding 離得更近,而不相似語義的 Embedding 離得更遠;針對 BERT 的網路退化問題,團隊做了跨層衰減的殘差連線,以優化整個網路的資訊傳遞;同時團隊還做了模型蒸餾技術,做了資料增強,引入世界知識。QQ 瀏覽器內部有知識圖譜團隊,有百萬千萬級經過人工專家標註過的優質準確世界知識資料,因此把它引入到預訓練裡做增強有明顯效果。

在實踐中,團隊將所有的 NLP 任務都使用神舟做預訓練,結合微調和一些混合粒度優化,結果使下游每任務的語料標註數量減少 40% 以上。同時團隊研發了一套專門基於預訓練加 fintune 的流程,讓整個 NLP 的研發週期減少 40%。

視訊多模型預訓練

做完 NLP 預訓練,下一步要做視訊多模型預訓練。首先要做抽真,抽真以後基於影象級別預訓練,生成視覺方面的預訓練模型。神舟已經生成了視訊標題、簡介、字幕、各種語音 OCR 的預訓練模型,再加上視訊裡一些語音或音樂等資訊,實現了視覺、圖文、聽覺方面的語義對齊,最後生成多模態預訓練模型。

上述所有能力的底層現在都換成了多模態預訓練框架,效果和效率都有較大提升。多模態預訓練還可用在圖文和視訊的聯合 Embedding 檢索方面。圖文正文底部要做一些視訊相關推薦,系統可以用文章生成的向量和視訊的多模態向量做關聯召回檢索,顯著提升圖文視訊的使用者滲透率。

PCG AI 與推薦中臺

PCG 的 AI 中臺是騰訊官方比較大的中臺專案。AI 中臺包括七個方向,本次分享主要介紹 CV、NLP、推薦系統,此外還有 AI 管線、AutoML、特徵中臺、索引中臺。

騰訊中臺設計和行業傳統有一些差異。很多傳統設計方案裡,中臺是實體化架構組織,所有輪子都收到中臺裡更好地融合,實體化架構和業務組織互相隔離。因此很多業務需求在中臺聽不到,或者中臺做了很多新技術很難落地到業務。而騰訊採用的方式是類似開源組織的虛擬中臺設計。騰訊引入兩個新的角色設計: 主建方和共建方。

QQ 瀏覽器是 AI 中臺主建設方,承擔中臺的技術 OKR;

各個業務部是共建方,他們也要派團隊一起參與到 AI 中臺的建設裡,這樣 QQ 瀏覽器團隊就能夠及時聽到這些業務端對 AI 的需求和想法。共建方也要把中臺新做的一些專案技術落地到他們的業務裡面,這是偏開源的協作方式。

騰訊內部也有類似開源團隊的各種委員會,有 committer/contributer 的機制設計,在此基礎上給中臺加上了一些考核權利、物質激勵能力、資源方面的傾斜等等。團隊用這些考核和資源能力幫助開源方式的中臺保證完成技術 OKR,幫助各個業務得到更好的發展。

AI 中臺已經運營三年時間,在騰訊 PCG 事業群裡應用比較廣泛,現在整個 AI 中臺的 PaaS 化數量超過 300 個,每天有超過一萬個模型在 AI 中臺訓練、部署和上線,每天呼叫量超過 2000 億次,意味著中臺比較好地支援了整個事業群業務的發展。

小結

總結本次分享內容,共包含以下三點見解:

  1. AI 新正規化——“厚積薄發”:預訓練模型能夠更好地沉澱海量知識,fintune+AutoML 能夠更好幫助下游任務更輕巧、更快地應對各種新應用。

  2. 大算力,超大規模模型可以幫助我們探索人工智慧和機器學習的新邊界。

  3. 推薦系統是沒有最優解的技術體系,我們需要不斷進化,不斷去理解我們的使用者,做更多使用者洞察,持續探索內容推薦的新趨勢和方向,為使用者帶來更多驚喜。