作者 | 向寒、元涵

前言
點選率(Click Through Rate,CTR)和點選轉化率(Conversion Rate,CVR)預估在電子商務中的許多工業應用(例如搜尋、推薦和線上廣告系統)中發揮着重要作用。其中最主要的挑戰是,使用者、query、商品的特征分布以及ground truth的CTR/CVR可能受季節性、商家活動、大促等因素影響,随時間發生很大的的變化。預估模型适應這些變化主要有兩種政策:
- 模型引入實時資訊,比如商品/使用者實時特征,使用者實時點選行為、曝光序列、端上行為等;
- 模型繼續引入實時資料,做實時增量訓練,并在一天内多次更新預測模型。
但是,以上方案依然有局限性:即使模型的特征是動态的,增量資料是流式的,但是受限于線上系統對模型的建構和切換的耗時,模型隻能每N小時(N>=2)生效一次。是以模型不僅滞後實時資料N小時,而且由于模型是當機的,也無法應對CTR/CVR的實時變化。
為了解決這個問題,我們之前的方案是在deep cxr模型之上增加了一個小規模的online stacking模型,輸入是deep cxr模型的分數,個性化比對資訊,使用者/商品标簽特征,實時統計值等等不是非常sparse的特征。通過online stacking cxr模型的實時更新(由于模型規模比較小)來彌補deep cxr大模型的實時性不足。online stacking模型的前身是搜尋的online ltr模型,是搜尋做了多年的一個成熟線上學習技術。
今年,通過和定向廣告團隊關于線上學習技術的交流,和過去online stacking/ltr模型的積累,我們提出了Multi-Layer Multi-Frequency的更新方法,直接對深度大模型做實時更新。Multi-Layer将模型按照權重大小結合業務邏輯拆分為三個部分,分别為freezing embeddings,changing embeddings和changing weights。
Multi-Frequency政策将freezing embeddings通過checkpoint全量切換更新,changing embeddings和changing weights進行實時更新。我們進行了離線與線上實驗,實驗結果表明我們的方法可以捕捉更加實時的資料分布,并進一步提升CTR/CVR預估的精度。此外,我們所提出的方法已經部署于生産系統中,日常和雙11大促的線上A/B測試進一步證明了其有效性。
1.背景
淘寶和亞馬遜等大型電商門戶網站通過移動應用和PC網站為數億使用者提供數十億商品。為了獲得更好的使用者體驗和業務效果,幫助使用者找到自己喜歡的商品是電商中最重要的任務之一。達成以上目标的最主要手段是對點選率(CTR)和點選轉化率(CVR)的精準預估。其中最主要的挑戰是,使用者、query、商品的特征分布以及ground truth的CTR/CVR可能受季節性、商家活動、大促等因素影響,随時間發生很大的的變化。
如圖1所示,CVR在日常一天内的ground truth會發生非常大的變化,最高點是最低點的4倍;如圖2所示,雙11前後兩天的ground truth都跟雙11有着極大的不同,尤其是CVR在雙11當天是預熱期的2.5倍+。是以,預估模型需要有能力去适應這些變化:首先,我們的模型在特征層面引入了更豐富更實時行為序列特征,端上點選序列,端上曝光序列,可以捕捉使用者不斷演化的興趣;其次,去年雙11,我們基于AOP平台實作了多路實時樣本流的超大規模多目标模型線上聯合學習,并在一天内多次更新預測模型。
今年我們在以上基礎上,設計并落地了真正意義上的超大規模深度網絡的線上學習,也就是streaming training real-time updating的模式。為此,我們提出了Multi-Layer Multi-Frequency的更新方法,将小時級别更新模型提升到分鐘級更新和秒級生效。在雙11當天,取得了相當不錯的效果。
2.流式訓練和實時更新
在原有模式基礎上,feed更多的資料進行連續訓練,我們将這種行為稱為增量學習。實踐中發現,增量學習可以穩定提升模型性能。在生産實踐中,增量學習有幾種不同粒度。其中普遍增量模式是,restore已有模型的checkpoint,采用批訓練模式,全量部署上線,更新時效性為天級别。進階的模式是,使用實時樣本進行流式訓練,但部署過程依舊采用全量模型切換,更新時效性為小時級。然而,最完美的增量學習解決方案是流式訓練&實時更新。
2.1 Multi-Layer 權重
首先,在搜尋的算法和工程體系下,實時更新全量模型是不現實的。搜尋大模型權重包括Embeddings和MLP。其中embedding包括一些high sparse的ID類特征,比如item id。我們模型中item id數量在使用淘汰機制結果後依然為8億,每個id的dimension為64,那麼item id embedding大小為190G。這類high sparse的ID類特征,在RTP是以表的形式存儲的,是以這樣大的embedding是無法實時更新的。
其次,uid/item_id embedding這類high sparse特征進行純實時更新是不适合的。high sparse特征需要更多的資料才能讓embedding學習的充分,而學習不充分的後果就是模型在目前樣本上過拟合,在未來樣本上缺少泛化性。是以,我們傾向認為在日常情況下item id學習到的embedding是相對穩定的商品表征,穩定期可以到7天。隻有在換季、大促期間,item id embedding在一天内才需要發生比較大變化。
是以,我們将模型權重按照sparse的程度分為三個部分,分别為freezing embeddings,changing embeddings和changing weights。其中,freezing embeddings對應模型中的high sparse embedding如user_id、query id、item_id。changing embeddings對應其餘embeddings,如user profile embedding、商品品牌embedding、商品統計特征embedding。changing weights對應模型中的所有MLP部分權重。我們的模型結構和多層權重如圖3所示。
圖3 Multi-Layer Weights,灰色部分表示freezing embeddings,橘色部分表示changing embeddings,藍色部分表示changing weights
changing weights包括sequantial modeling的MLP以及CTR/CVR任務prediction layer的MLP。為何對changing weights做實時更新是必要的?
首先,sequence中的MLP包含了序列化模組化以及attention網絡。我們采用Self-Attention對序列進行模組化,weights包括Multi-head Attention中的Q、K、V的投影,以及FFN網絡,通過這些參數模組化序列中商品兩兩的依賴關系。我們采用商品的行為類型(點選、加購、購買)、停留時長、以及距離目前的行為時間,來計算不同商品的重要性權重,其中MLP就在學習這幾種商品context的關系,來共同決定attention的結果。不管是序列依賴關系還是attention都是實時發生變化的,是以對序列中MLP的實時更新十分必要。
其次,prediction layer中的MLP主要學習不同抽取的向量表征之間的實時關系。比如使用者當時當刻是更看重商品的品牌還是商品的價格,又比如當時使用者是以自身的長期還是短期(Long -and Short Term)興趣為出發點來選購商品。這些向量表征的關系是需要進行實時訓練,進而可以配置設定實時的不同權重。此外,CTR和CVR預估不僅要保證使用者和商品之間的序關系,而且要保證CTR和CVR預估值各自的準度。prediction layer依照實時資料的分布來調節網絡中的參數,同時實時學習CTR/CVR的準确值。
2.2 Multi-Frequency 更新
圖4 Multi-Frequency的更新政策
我們提出Multi-Frequency的更新政策,将freezing embeddings通過checkpoint全量切換更新,changing embeddings和changing weights進行實時更新,如圖4所示。那麼在Multi-Frequency的更新政策下,如何保證MLP和Embedding的一緻性?日常政策:天級更新一次全量模型,天内進行模型實時更新;大促政策:雙模型交替更新。
雙模型交替更新如圖5所示。大促當天我們準備了兩個實時訓練任務,分别稱為模型A和模型B。模型進行流式訓練,其中embedding和mlp全部參與訓練,并通過checkpoint進行小時級别的建構和切換。模型B将high sparse的embedding fix住,訓練其餘embedding和mlp。具體過程如下:
圖5 雙模型交替更新
- T為起始時刻,模型A和模型B恢複同樣的checkpoint各自開始流式訓練;
- T+1分鐘開始,模型B開始通過swift更新部分embedding和mlp參數到RTP;
- T+2分鐘,模型B繼續更新部分embedding和mlp參數到RTP;
- T+N小時時刻,模型A已累計訓練N小時,此時通過checkpoint更新全量,并且在切換階段停止模型B向RTP發送參數。
- T+N小時+30分鐘時刻,模型A切換完成,模型B restore 模型A同時也是線上的checkpoint。
- T+N小時+30分鐘+1分鐘開始,模型B繼續開始流式訓練和實時更新。
2.3 實踐經驗
2.3.1 Streaming CTR/CVR CoTrain
進行streaming cotrain,需要同時消費CTR和CVR的樣本流。這與離線cotrain有着很大不同。離線天級别cotrain,隻需要按照樣本比例設定固定的樣本疊代機率,交替訓練,最終兩個task基本會同時結束。而實時訓練是,CTR和CVR樣本的比例關系是不固定的,是以需要使用動态樣本比例。我們的方法是先基于一個固定的比例進行疊代,但是在疊代之前會先檢查資料流中是否有足夠樣本,如果有足夠樣本才會執行目前task,否則切換另一個task執行。這樣的方案,就不會卡主訓練流程。
2.3.2 No Time Feature
模型中經常會引入時間特征提升模型在每個時間段的預估準度,比如day of week和hour of day兩個參數,但是在實時訓練的任務中,我們永遠訓練的是同一個時刻的資料,比如都是周一,13點的資料,模型容易在這兩個特征上過拟合,而對下一個時刻周二9點的資料沒有泛化性。
2.3.3 SyncSendSwiftHook
我們通過chief worker向RTP發送swift消息,而發送的過程中,training workers依然在頻繁的更新PS中的參數。而流式訓練任務任務的疊代速度為200 steps/sec,batch-size為1024,那麼一秒中權重經過20萬樣本,變化200次。是以此過程中更新的參數,很大程度上會不一緻。我們設計了SyncSendSwiftHook,它的邏輯是在chief發送權重之前,會設定一個标記位sending=True,而訓練worker在每次訓練前都會檢查這個sending标記,如果發現sending=True則會sleep,直到chief worker發送結束後,将sending置為False。
2.3.4 Sending Mean and Variance
不要忘記更新BN中的均值和方差。因為均值和方差并不是trainable variable,是通過update op進行更新的參數,是以非常容易忘記,而引發嚴重的問題。
3.實驗和分析
為了準确驗證更新部分Embedding和MLP的方案的有效性,我們将可能的收益分為離線天級收益和實時收益。離線天級收益是指增量一天資料後,在新一天資料上的AUC提升值;實時收益針對流式訓練實時更新模式,通過目前10分鐘的訓練對接下來10分鐘的預測樣本上的AUC提升。
3.1 對比方法
- Base:全量模型,freezing所有weights。
- ALL-EMB+MLP:全部參數參與訓練
- MLP:隻訓練MLP。
- Part-EMB+MLP:訓練部分embedding和MLP。
3.2 離線天級收益驗證:
我們指定BASE模型訓練到第T天資料,其他模型以BASE模型為基準模型增量第T+1天的資料。我們以所有方法在T+2天AUC表現來評價所有方法。如表1所示,ALL-EMB+MLP增量學習一天資料在next-day的AUC評測上,CTR提升0.16%,CVR提升0.18%;MLP在total AUC上可以獲得ALL-EMB+ MLP全部收益,在PV-AUC上可以獲得50%收益;Part-EMB+MLP在total AUC和PV-AUC上均可以獲得ALL-EMB+MLP全部收益。
表1 增量一天資料後,在預測集的CTR&CVR AUC
3.3 大促實時收益驗證:
我們以雙11當天的實時CTR&CVR AUC為例,驗證模型的實時收益。實時AUC統計線上30分鐘視窗回流資料。為了更準确驗證模型提升的有效性,我們在雙11通過事件分别驗證每個子產品的有效性。
3.3.1 實時模型更新時間線:
- 8點,實時大模型上線
- 13點更新全量模型。
- 17點30分,實時更新停止,
- 20點30,實時模型開啟。
3.3.2 分事件,CTR&CVR AUC對比:
- 早上8點,實時大模型上線(隻更新部分embedding+hidden layer),AUC提升非常明顯,其中CTR AUC提升0.6%,CVR AUC提升0.8%。
淘寶搜尋模型如何全面實時化?首次應用于雙11前言1.背景2.流式訓練和實時更新3.實驗和分析4.未來展望
- 13點更新全量模型(embedding+hidden layer全更新),AUC有進一步提升。其中CTR AUC提升擴大0.9%,CVR AUC提升擴大為2%。
淘寶搜尋模型如何全面實時化?首次應用于雙11前言1.背景2.流式訓練和實時更新3.實驗和分析4.未來展望
- 17點30分,實時更新停止,CTR AUC提升維持在0.5%,CVR幾乎無提升。說明在大促期間,CVR預測對實時性的需求更高。
淘寶搜尋模型如何全面實時化?首次應用于雙11前言1.背景2.流式訓練和實時更新3.實驗和分析4.未來展望
4.未來展望
首先,逐漸推進流式訓練+實時更新解決方案的日常化。在離線模型checkpoint全量更新期間,開啟實時更新模式。日常測試結果為:CTR AUC 提升0.7%,CVR持平。其次,通過CTR模型的實時化方案和CTR收斂快的特性,可以考慮将算法工程師對大模型疊代調優的戰場從離線批轉到線上實時,這不僅可以提高模型調優的效率,也可以加速拿線上效果。此外,由于深度大模型的完全實時化,online stacking模型的必要性變弱,未來甚至可以去掉。最後,全鍊路的監控體系、穩定性仍需完善,實時鍊路已經是一個近online系統,要向online系統的生産安全标準靠攏。