課程位址: https://developer.aliyun.com/course/2052
一、線上推理服務-架構說明
在如何建構企業級推薦系統系列課程中,前兩節課我們分别介紹了召回算法及架構、排序算法及架構。本節課我們會介紹一下如何對排序和召回算法的結果做一個服務編排,以及最終我們的模型跟現場業務是如何對接的。首先,我們介紹一下整個的架構,使用者的業務場景,特别是網際網路的推薦業務,它的高峰基本上會集中在中午和晚上。這個時候如何減少咱們的資源消耗。比如說,你的高峰需要消耗10台機器,低谷可能用1台機器。如果你沒有彈性的機制,線上下買,一定要買10台機器才能滿足服務高峰的一個需求。但是,如果你使用了雲上的服務,就可以把這一套東西做到彈性。相比于你一直擁有10台機器,會節約很多成本,這是一個推薦業務需要考慮的場景。是以在服務編排階段通常會采用雲上的這套架構去做,來應對它的業務的一個潮汐效應。
另外一個要解決的問題就是,召回和排序這樣的一個流程究竟該怎麼建立起來。我們的方案是,基于高擴充彈性業務場景,采用阿裡雲ACK建構整體推理架構。調用流程分為3步。第一步,多路召回:物品協同過濾,語義召回,熱門及營運政策召回取回上千條候選集。第二步,曝光去重:基于該使用者閱讀曆史,去掉已經曝光内容,去掉基于營運政策不能推薦的内容。第三步,排序:推理子產品調用排序過程時根據使用者ID及物料ID,擷取使用者特征及物料特征後,分批調用PAI-EAS服務傳回排序結果。右面這張圖其實講的是排序PAI-EAS線上推理服務的一個線上監控的能力。就是你要觀察排序模型的一個水位,進行動态的擴容、縮容,防止你的RT過高,或者QPS達不到業務的需求。這是整個的線上服務編排的架構。
二、線上多目标問題
最終模型上線的時候,我們還會面臨一個問題。我們設計整個架構,有的時候并不是單一目标,而是多目标的。就拿文章或視訊推薦為例,很多的客戶都希望說,不光是我推薦的視訊被使用者點選了,使用者還需要多看一會兒,這樣的話就會規避一些标題黨。比如說有些視訊把标題起得很吸引人,但其實内容很浮躁。使用者點進去看一眼覺得沒意思就走了,這樣的話他整個的使用體驗也不好。是以它可能是多目标的,既要他點選,也要他多看一會。針對這樣的一個多目标情況,我們該怎麼設計整套的方案,怎麼去編排整套的推薦召回應用邏輯,有兩種方案。一種是說多模型解決多目标問題。假設就是點選和時長這兩個目标,你可以有一套推薦召回子產品專門針對點選。
另一塊專門針對使用時長去做訓練。這兩個結果你把它融合一下,得到最終的推薦結果。但代價就會比較大,你要同時維護兩個系統,而且二者的比例也不好去量化。方案二是合并多目标成單模型,是目前采用得比較多的一個方案,也是效果相對來講會比較好的一個方案。你把目标一和目标二這兩個目标先融合成一個目标。比如說你把是否點選和觀看時長按照一個比例去壓縮下,把它都放到0~1之間。不點選就0,點選就是1。然後你把觀看時長去做一個歸一化,把整個時間都縮小到0~1的區間去。這樣,你整個的區間就變成了0~2,變成一個單目标的數值。這樣的話你就可以針對這一個目标去訓練你的召回、排序模型,進而拿到最終的結果。這樣做的好處是你隻需要維護一套推薦業務的模組化流程,會比較友善維護,最後的效果也通常是方案二好一些。
三、參考資料
最後,介紹一下我們給大家準備的一些資料。這第一個link它對應的是PAI團隊結合自身過去幾年在推薦領域的一些探索,總結了140頁的推薦業務的動手實踐文檔。沒有機器學習背景的人基于我們這些文檔,也可以在一周之内搭建一套企業級的推薦系統,大家如果感興趣可以去用一下。另外這一個是PAI的産品位址。