背景
隨著大數據和人工智能時代的到來,數據的驅動使得企業(yè)經營決策和精細化運營的效果指標的量化評估成為可能,企業(yè)的決策和運營也越來越離不開數據的支持。尤其是朝夕萬變的互聯(lián)網行業(yè),產品創(chuàng)新和決策都需要快速得到用戶反饋的數據去不斷的迭代更新。 產品的新特性是否會受到用戶的歡迎?新優(yōu)化的模型和策略的線上效果如何?如何低成本的進行快速且量化的效果驗證? 答案是A/B test實驗。
事實上,一個高效的A/B test在線實驗平臺已經成為各大互聯(lián)網公司進行產品迭代和策略優(yōu)化的標配工具。A/B測試是互聯(lián)網公司實現(xiàn)數據驅動的基礎,Microsoft、Google, Amazon、Facebook都在這方面做了大量的工作,騰訊、阿里、百度等國內主流互聯(lián)網公司也紛紛各自構建了一套支持產品迭代和策略優(yōu)化的A/B test在線實驗平臺。
?
達觀數據的算法和工程團隊每天都在持續(xù)不斷地嘗試各種算法模型的升級和策略優(yōu)化,而這些算法模型和策略有的相互獨立,有的相互影響。為了對這些模型和策略進行有效的量化效果評估,我們借鑒了谷歌的?”O(jiān)verlapping Experiment Infrastructure”中的思想搭建了達觀數據在線分層實驗平臺。該實驗平臺可以支持同時運行多個并行實驗,支持多種分流模式,支持自動灰度發(fā)布,支持實驗效果的實時反饋和可視化(達觀數據桂洪冠)。
?
分層實驗模型
?
達觀數據在線分層實驗平臺的設計借鑒了谷歌2010年在KDD上公布的分層實驗框架,并在其基礎上根據我們的應用特點進行了大量的裁剪。谷歌分層實驗框架對實驗空間進行了縱向和橫向兩個維度的劃分,其中縱向的劃分是對應域的概念,橫向的劃分對應層的概念。域是指流量的一個劃分(指對一部分流量的獨占),層是指系統(tǒng)參數的一個子集,而實驗是指在一個流量劃分上,進行零個或多個參數的修改,并最后改變請求處理的過程。概念還是比較抽象,我們來看一個栗子:

如上圖,流量先被分成兩個域,左邊是一個只有單一層的非重疊域,右邊是一個三層的重疊域。在這種情況下,每個請求要么被分到非重疊域要么被分到重疊域。如果請求在非重疊域(上圖左側),那么請求最多在一個實驗中(這個實驗可以改變參數集合中的任意參數的值),如果請求在重疊域(上圖右側),那么請求可以通過三個實驗層總共九個實驗中。每個實驗層可以根據不同的流量劃分策略把流量分配到相應參數集的實驗中。
下圖是一個更具體的栗子,左側是非重疊域,右側分為3層,分別是UI層、搜索結果層和廣告結果層。
根據我們的實踐經驗,一般每一層劃定一個批次實驗,這個批次試驗中有一個是基準實驗,其它的屬于對比實驗,基準實驗以及每個對比試驗都對應一個試驗參數集(達觀數據桂洪冠)。
分層實驗模型特性
分層實驗模型具備如下一些特性:
特性1:縱向域劃分,橫向層劃分。
特性2:相互關聯(lián)的策略參數位于相同實驗層,相互獨立的策略參數位于不同實驗層。
特性3:流量在不同實驗層之間根據不同的分流策略被重新分配,不同層的實驗流量是正交的。
特性4:不同實驗層之間的實驗相互獨立。
特性5:模型的發(fā)布層(Launch Layers)可以實現(xiàn)實驗流量的灰度發(fā)布直至全流量發(fā)布。
?
流量分配策略
分層實驗模型常見的流量分配策略:
策略1:隨機分配
優(yōu)點是簡單自然,缺點是用戶的請求會在不同參數集的實驗中“穿梭”,造成用戶體驗上的不一致性。
策略2:按照cookie或用戶id取模進行分配
此種流量劃分方式可以確保用戶的請求被分配到固定的實驗中,不會造成用戶體驗的不一致。
策略3:按照cookie+日期取模進行分配
這種方式是綜合了cookie和日期的信息后再取模,采用這種方式的話,一個實驗一天內圈定的cookie是固定的,但隨著日期的變更會圈定不同的cookie。
策略4:按照業(yè)務字段進行分配
這種方式可以滿足特定的實驗流量要求,比如可以按照用戶的地域來源取特定城市的用戶流量,或者按照用戶年齡取特定年齡段的用戶流量。
策略5:hash查詢串取模進行分配
這種方式使得相同的查詢串請求可以分流到確定的實驗上。
為了保證層與層之間實驗流量的相互獨立,上述基于取模的流量分配策略需要考慮實驗所在層layerid的信息, 假設當前層有20個bucket分桶(實驗參數),則當前流量在當前層的bucket = (f(cookieid, layerid) % 20),f是某個hash函數。

流量分流條件
在通過上述流量分配策略選擇一部分流量后,分流條件(condition)通過僅分配特定條件的流量給實驗或域,以達到更高效利用流量的目的。比如,一個實驗僅僅改變來自日語的查詢,那么實驗配置中只抽取日語的流量。我們可以基于地區(qū),語言,瀏覽器等信息設置流量抽樣條件。有了分流條件,一個只使用“日語”流量的實驗,和一個只使用英語流量的實驗,可以使用相同的cookie取模。
灰度發(fā)布策略
?
灰度發(fā)布是一種常用的發(fā)布流量控制策略,是指在實驗的過程中根據實驗的效果逐步加大實驗流量同時持續(xù)跟蹤實驗效果直至最終全量一個實驗。分層實驗模型是如何實現(xiàn)灰度發(fā)布策略的呢??谷歌提出一個發(fā)布層的概念(Launch Layers)。在這個架構下,一個特性的評估和發(fā)布過程是類似如下過程的:
1)創(chuàng)建一個實驗或是一組實驗來評估特性。注意配置實驗涉及指定分配類型和相關的分配參數(比如:cookie取模),分配條件,和特性相關的參數。
2)評估實驗指標。根據實驗結果,判斷是否要進行新一輪的實驗,即通過修改或創(chuàng)建新的實驗,或甚至修改代碼從根本上改變特性。
3)如果特性可以發(fā)布,就進入發(fā)布過程:創(chuàng)建一個新的發(fā)布層和發(fā)布層實驗,逐步的放量這個實驗,并最終刪除發(fā)布完的發(fā)布層,然后將發(fā)布層實驗的相關參數設為系統(tǒng)默認參數。

達觀分層實驗平臺架構
達觀數據分層實驗平臺主要由實驗配置管理中心、實驗分析與展示中心以及在線服務系統(tǒng)三部分組成。
實驗配置管理中心
實驗人員可以在實驗配置管理中心進行實驗的創(chuàng)建、啟動、暫停、刪除等操作。
實驗創(chuàng)建:實驗數據主要包括(但不限于)實驗的名稱(比如搜索Reranking實驗)、實驗的起始時間、實驗owner、實驗參數集、實驗作用模塊、流量分配等。其中實驗起始時間定義了實驗生效發(fā)生作用的時間范圍,超過此時間實驗自動結束并停止。實驗參數集定義了需要測試的不同實驗參數數據,每個實驗參數對應實驗的一個bucket分桶(比如rank_strategy=5, rank_strategy=6, rank_strategy=7分別對應實驗的三個bucket)。每個實驗都有一個唯一的實驗ID。
實驗流量分配:對實驗選擇流量劃分策略(見前文介紹)。
實驗啟動:創(chuàng)建好的時間在達到實驗設置的開始時間后自動啟動,實驗人員也可以對暫停的實驗重新執(zhí)行啟動操作。
實驗暫停:實驗人員可以對執(zhí)行中的實驗執(zhí)行暫停操作。
實驗刪除:實驗人員可以刪除已經停止的實驗,正在執(zhí)行的實驗無法直接刪除(需要先執(zhí)行停止操作)
實驗權限控制:實驗的owner(創(chuàng)建者)對實驗有啟動、暫停、刪除等權限,也即只能操作自己創(chuàng)建的實驗。實驗配置管理中心直接控制線上服務的模型和策略的執(zhí)行,安全性就顯得尤為重要。
實驗持久化:實驗的數據被存儲到MySQL數據庫中進行持久化。
實驗分析與效果展示中心
實驗分析和可視化效果展示是實驗平臺不可或缺的組成部分。在數據實時采集模塊,實驗ID以及實驗參數數據(比如策略和模型參數)連同系統(tǒng)的業(yè)務日志數據一起被記錄和采集。在這里可以實時查看到每個執(zhí)行中實驗(實驗ID區(qū)分)的統(tǒng)計分析和效果對比數據,既可以對一個實驗的不同參數集(實驗bucket分桶)的結果數據進行橫向對比(通常與基準實驗作對比),也可以對實驗基于時間維度的縱向效果作對比。?

上圖是達觀數據推薦算法和某客戶推薦算法時間維度縱向效果(點擊率)對比。
在我們的實踐中,通過對實驗日志數據的實時采集和分析,可以實現(xiàn)對實驗效果(比如CTR指標)進行準實時的對比分析和監(jiān)控。如果發(fā)現(xiàn)實驗(新算法策略)的效果指標出現(xiàn)異常,可以在實驗配置管理中心及時調整實驗參數或調整實驗流程或停止實驗(達觀數據桂洪冠)。
在線服務系統(tǒng)(實驗執(zhí)行環(huán)境)
在線服務系統(tǒng)是實驗執(zhí)行的環(huán)境。在線服務系統(tǒng)加載了一個實驗平臺客戶端組件,該組件主要有2個職責:
職責1:定時從數據庫中同步實驗數據信息
職責2:實驗流量決策。對每個請求流量,根據實驗的流量劃分策略進行bucket分桶計算,獲取對應bucket的實驗參數數據(策略和模型參數)。請求攜帶被分配的實驗參數數據流入線上服務模塊。
?
各線上服務模塊從請求中獲取自己關心的實驗參數數據進行相應的實驗,并在記錄日志時把實驗ID和參數數據一同寫入。
總結
本文以谷歌2010年發(fā)布的分層實驗框架為參考,闡述了分層實驗模型的域、層、實驗等基本概念,進一步分析了分層模型的基本特性、實驗流量劃分策略、分流條件以及灰度發(fā)布方法等內容。然后,重點介紹了達觀數據分層實驗平臺架構的實驗配置中心、效果分析與展示中心、在線服務系統(tǒng)(實驗執(zhí)行環(huán)境)等主要模塊,描述了從實驗創(chuàng)建到實驗執(zhí)行再到實驗結果分析的全過程。
達觀數據分層實驗平臺同時運行著數十個面向不同客戶的多個系統(tǒng)應用的策略和模型迭代優(yōu)化實驗,已經成為公司基礎平臺體系架構中非常重要的組成部分。
未來展望
未來我們希望把達觀數據分層實驗平臺做成開放的一站式實驗服務平臺,把我們的平臺實驗能力輸出給更多的客戶和合作伙伴,大家基于這個平臺相互學習合作共贏。
?
參考文獻
1.Diane Tang, Ashish Agarwal, Deirdre O’Brien, Mike Meyer ??Overlapping Experiment Infrastructure: More, Better, Faster Experimentation
2.阿里媽媽大規(guī)模在線分層實驗實踐http://www.infoq.com/cn/articles/alimama-large-scale-online-hierarchical-experiment/
?
BOUT
關于作者