微博廣告分層實驗平臺(Faraday)架構實踐
移動網際網路廣告基於大資料,實現廣告的精準人群定向投放和效果評估,並藉助於不可勝數的廣告策略,控制著廣告的實時投放,讓資料驅動型的移動網際網路廣告沿著站方、使用者、廣告主三者共贏的目標不斷前進。
大資料驅動使得效果指標的量化評估成為了可能。為了實現好的廣告投放效率,線上執行的每一個廣告策略需要相應的實驗和效果分析,通過量化分析來評估該廣告策略效果的好壞。策略可能需要不斷地嘗試,並進行合理地流量均勻分流,經過多輪線上 A/B test 實驗迭代,才能形成最終的決策值。另外,廣告平臺上許許多多的策略,有的相互獨立,有的相互影響,如何高效地進行大規模的並行策略實驗,是個不小的挑戰。
在廣告為核心業務的移動網際網路公司,從 Google,Facebook,到騰訊,阿里,百度,都有著一套支援廣告策略快速迭代和支援大規模並行實驗的廣告實驗平臺。
近期微博廣告正式推出了微博廣告法拉第(Faraday)全流量分層實驗平臺。該實驗平臺支援大規模廣告策略併發實驗,提供了多種流量均勻分流模式,全面的廣告指標跟蹤評估,實驗效果實時反饋等。
實驗分層模型
該實驗平臺借鑑了 google 的論文 [備註一] 關於分層實驗的設計思想,並結合微博廣告平臺的應用場景進行了大量的簡化。
該分層模型的主要思想為:
- 相關聯的策略引數位於同一實驗層;
- 相互獨立的策略引數分屬於不同的實驗層;
- 一個實驗引數只能在一個實驗層中出現;
- 不同實驗層間進行獨立的流量劃分和獨立的實驗,互不影響。
該分層模式簡單明瞭,可以滿足大部分的應用場景。另外,還有明顯的好處:
- 該分層模型是面向策略引數的實驗分層,不受線上廣告系統模組劃分的影響,達到最大化可獨立進行實驗的個數;
- 每一實驗層享有 100% 流量,可以避免流量切分過細,保證實驗間的可對比性、客觀性;
- 不同實驗層之間流量正交,可以避免不同試驗間的流量依賴和流量不均勻情況的出現。為了更好地評估實驗的效果,每一實驗層還引入了基準實驗。該基準實驗會採用該實驗層的預設策略取值,流量配比會設定在一個合適的水平。
流量劃分型別
流量的均勻劃分是實驗具有可對比性的前提。根據策略實驗的需求和應用場景,系統提供以下不同均勻強度的流量劃分型別:
- 流量完全隨機 這是最簡單的分流方式;
- 使用者標識 id 雜湊 該流量劃分會使同一個使用者會一直命中同一實驗,從而保證了使用者體驗的一致性;而且也滿足對同一使用者具有累積效應的策略的實驗需求;
- (使用者標識 id+ 日期)雜湊 這是一種更為嚴格的保證流量均勻性的分流方式,可以保證流量劃分在跨時間維度上更為均勻,但是會犧牲使用者請求跨時間區間的一致性;
- 8 使用者 id 尾號劃分 這是一種很常用、很簡單的分流方式,還保證了使用者體驗的一致性,但是可能會由於尾號分佈的不均勻性而造成流量分佈的不夠均勻,影響實驗的可對比性。一種折衷方案是,根據使用者標識 id 中間若干位來進行流量的劃分。
對於涉及使用者體驗層面的實驗,比如廣告渲染的樣式型別等,還會存在這樣的需求,進行實驗時,需要指定若干個使用者命中指定的實驗。這時,實驗平臺輔以白名單的方式,為流量劃分型別提供補充。
具體進行流量劃分時,為了實現實驗層之間流量劃分的正交性,會將流量標識資訊和實驗層標識一起進行實驗流量 bucket 劃分, 實驗層標識 layer_id 稱為離散因子。如基於使用者標識的流量劃分:
理論上,通過以上幾種流量劃分型別,可以實現對應均勻強度的流量劃分;但是,總會出現一些情況,發現最終劃分的流量可能是不均勻的,從而影響到實驗的可對比性。
對此,實驗平臺提供了一種流量劃分的均勻性驗證工具。基本思路為: 在廣告系統中,使用者是通過多維的畫像向量(a,b,c,…,n)來進行刻畫的,如果流量劃分是均勻的,意味著使用者的每一個畫像向量分量在該流量劃分條件下是均勻,更進一步,多個畫像向量分量的組合在該流量劃分條件下也是均勻的。通過進行使用者畫像向量單個分量和若干個畫像向量分量的組合的均勻性驗證,即可來反映該流量的劃分的均勻性。
實驗平臺架構
實驗平臺整體架構圖如下:
實驗平臺架構主要包括幾個重要部分: 法拉第工作臺,實驗配置管理與決策中心,線上系統策略分發和控制,實驗資料實時流和離線批處理,實驗效果 dashboard 展示。下面對其中的關鍵特性予以介紹。
法拉第工作臺
法拉第工作臺供實驗人員進行操作的入口。介面功能包括廣告策略錄入,實驗建立與控制,擴量和全量釋出,實驗效果跟蹤,實驗平臺前端介面大大降低了實驗操作人員的門檻。
實驗配置管理與決策中心
所有的實驗策略配置資訊都會持久化落地到配置中心(mysql 等),包括當前正在進行的實驗的策略配置情況,也包括已經完成的實驗配置情況。同時,實驗策略配置會儲存當前實驗上下文的全域性快照資訊,可以進行指定版本的實驗上下文的回滾。由於線上系統的策略配置決策資訊完全依賴於實驗平臺和實驗策略配置中心,實驗策略配置中心本身的安全性,資料完整性,可用性,就變得極為重要。便於進行實驗策略的回滾就是確保的系統穩定性和策略決策正確性的關鍵措施之一。
線上系統策略分發和控制
實驗的策略配置資訊通過策略分發機制來應用到線上生產環境。 為了最大程度地減少實驗平臺對生產環境的侵入性,這裡採用了策略全域性統一分發的方式來完成。生產環境只用在流量接入層請求實驗平臺,確定實驗策略引數的取值,然後將確定的策略引數資訊作為廣告請求體的一部分,攜帶在廣告請求引數中,一同下發給上游的各個伺服器,每個伺服器模組根據自己的需求情況進行獲取對應的策略引數資訊,進行廣告精準投放計算。
實驗環境供生產環境請求呼叫的模組稱為法拉第實驗 CORE。具體地,在廣告請求的接入層 Router,由 Router 去請求法拉第 CORE。對於線上環境來說,策略實驗的細節是透明的。換句話說,線上生產環境實際上是不關心當前是否正在進行著實驗,以及正在進行著哪些實驗;線上生產環境只關心從實驗策略控制中心獲取到所有託管於實驗平臺的策略引數的決策值。
法拉第實驗 CORE 包括兩種實現形式。一種是原生動態庫.so 形式,這種嵌入到宿主服務內部,可以節約 I/O 通訊消耗;另一種是 HTTP API 形式,這種提供了跨語言方式的支援。
在法拉第實驗 CORE 內部,需要對本次請求標識資訊和全域性的實時實驗配置資訊,依次對每個託管於實驗平臺的策略引數進行決策。對於正在進行實驗的策略引數,根據實驗層中每層選用的實驗分流型別和分流配比,確定實驗的命中情況,從而確定策略引數取值;對於當前沒有進行實驗的策略引數,則取其預設策略引數值。 最終,全部的引數都確定其取值,形成 k-v 對,連同當前流量的實驗命中資訊情況,反饋給生產環境 router 模組。
實驗資料實時流和離線批處理
請求的實驗資訊會以 tag 的形式記錄在生產環境的請求日誌中,形如: layer1_layer2layer3…_layerN。 請求日誌會落地到廣告資料匯流排系統,再由廣告實時流系統進行消費、資料清洗、實驗效果指標計算等工作。由於廣告系統是多業務指標系統,包括售賣率,ECPM, CTR, ACPE,負反饋率、財務消耗計算等。廣告實時流系統還需要日誌的關聯工作,比如關聯廣告互動日誌,廣告負反饋日誌。實時流的計算的結果,會落地到 druid 系統,方便實驗效果資料的快速檢索和二度加工。實驗效果實時指標資料計算延遲控制在一定的範圍內(5 分鐘)。
由於實時日誌可能會存在日誌延遲、重複、丟失等情況,實時流系統的計算指標的準確性會難以保證。因此,對於非實時的指標資料,會啟動離線批處理計算進行實驗指標的校正,特別是對於非當天的歷史實驗指標資料,離線批處理會進行重新計算,形成最終準確的實驗指標資料體系。
實驗效果 dashboard 展示
實驗效果 dashboard 展示採用了量化分析的方式,精確衡量實驗間的效果對比情況。
實驗間的對比,提供兩種對比維度:一個是橫向對比,這個進行同一個實驗層中所有對比實驗和基準實驗間的各個指標的對比,以發現同時間區間各個實驗的策略的對生產環境的影響;一個是縱向對比,是指定的對比實驗和基準實驗在時間縱向維度的效果對比,以發現該對比實驗是否具體持續的效果提升 / 下降效果。實驗效果跟蹤橫向對比圖表和縱向對比圖表展示效果如下:
有時,為了更加詳盡地洞察實驗效果指標的更多細節,需要對實驗指標按某一個維度進行分解,達到更小觀測粒度。比如,微博使用者在不同的裝置平臺(PC,安卓平臺,IOS 平臺)不一樣的操作習慣和興趣習慣,可以分平臺粒度檢視該對比實驗在各個裝置平臺的實驗指標變化情況;微博不同場景資訊(關係資訊流,興趣資訊流,熱門搜尋流等)的屬性存在天然差別,部分策略在分場景流去分析時可能回更有意義;另外,也提供了分廣告競價型別的實驗效果跟蹤分析。
技術之外
最後需要提的是,實驗平臺在效果跟蹤決策方面是有一定的侷限性的。實驗平臺可以進行實驗效果的快速跟蹤,但是卻很難進行實驗效果好壞的決策。比如:如果對比實驗效果指標值全部提高或下降了,可以簡單認為對比實驗的策略調整起正向作用或者反向作用;如果對比實驗的實驗效果指標值部分提高了,部分下降了,就不太好認定了。還有,實驗效果的短期效應和長期效應也可能是不一致,這將大大增加了實驗效果好壞的決策難度。
因此,實驗平臺是可以快速提升廣告業務策略迭代效率的工具,但是要想進行實驗好壞評定的決策,還需要很長的路要走。
為了彌補這個不足,可以成立一個實驗平臺評審委員會。通過非技術手段進行線下決策,包括實驗的效果好壞評定,是否進行實驗的釋出,對生產環境的長期效應等一些列的決策。
作者介紹
李鐵牛,目前就職於新浪微博廣告平臺部,粉絲通廣告平臺技術負責人。2011 年畢業於中國科學院大學,2012 年加入新浪微博,參與並主導了粉絲通,品牌速遞,應用家,超級粉絲通等多個核心廣告產品迭代開發和投放平臺的架構設計工作,完成粉絲通廣告架構由產品線型向平臺型架構的轉型, 主導開發了 Faraday 分層實驗平臺。 目前,本人從事關於高併發、高效能、高可用的廣告平臺架構設計,以及廣告投放策略研究和團隊管理等工作。
文章來自微信公眾號:細說雲端計算