探究贴片广告背后的技术大片
網(wǎng)劇、網(wǎng)綜早已成為人們的“休閑佳品”,除了精彩內(nèi)容,還有各種貼片廣告推送。細(xì)心的你也許會發(fā)現(xiàn),這些廣告仿佛知你所想,懂你所思,常常能擊中你的喜好。這是為什么呢?因?yàn)檫@些廣告背后,涉及了機(jī)器學(xué)習(xí)與多維時序預(yù)測等技術(shù)和場景。要講清楚這背后的故事,首先,我們要了解什么是廣告庫存。
什么是廣告庫存?
在計(jì)算廣告中,庫存指的是廣告投放機(jī)會的存量,廣告投放機(jī)會由兩個要素構(gòu)成:媒體與流量。媒體是內(nèi)容與廣告的載體,以視頻、音頻、文字等不同形式提供內(nèi)容與廣告位;流量則關(guān)乎廣告投放機(jī)會的存量與價值。廣告機(jī)會的價值取決于流量本身,由高消費(fèi)潛力用戶構(gòu)成的流量價值自然更高些;廣告機(jī)會的存量則很大程度由用戶的觀看習(xí)慣、瀏覽習(xí)慣所決定。舉例來說,一集50分鐘的《后翼?xiàng)壉?#xff0c;媒體平臺以前貼片、中貼片和后貼片的方式總共設(shè)置4個廣告位,如下圖所示。
廣告機(jī)會示意
對于任何一個觀看這集《后翼?xiàng)壉返挠脩?#xff0c;視頻中的廣告位都是如此設(shè)置,但是,至于這 50 分鐘的視頻到底能提供多少個廣告投放機(jī)會,那就因人而異了。比如有兩個用戶,李雷和韓梅梅,李雷將視頻從頭看到尾,甚至把正片結(jié)束后 30 秒的后貼片廣告也看完了,那么李雷提供的廣告投放機(jī)會就是 4;韓梅梅則沒那么有耐心,視頻看了 1/3,看到第二個廣告之后便把視頻關(guān)掉,那么韓梅梅提供的廣告投放機(jī)會是 2,即便后面 2/3 的視頻內(nèi)容中還有兩個廣告位,但是已經(jīng)沒有機(jī)會展示出來了。
?
在計(jì)算廣告業(yè)務(wù)中,庫存預(yù)測扮演著重要角色。對于品牌廣告,買賣雙方交易撮合的前提是不同定向條件下廣告庫存的準(zhǔn)確預(yù)測;效果廣告中,對于交易價格隨時間波動的媒體流量,如果能夠有效預(yù)測其在未來一段時間的概率分布,那么作為買方的市場參與者在預(yù)算固定的情況下對于流量的競買會更加游刃有余。
預(yù)測廣告庫存:多維時序預(yù)測
基于上面的示例,應(yīng)該更容易理解:本質(zhì)上,廣告庫存是不同用戶畫像下廣告投放機(jī)會的存量。那么,廣告庫存該如何預(yù)測呢?既然廣告庫存取決于流量且按照定向條件(用戶畫像)劃分,那我們自然想到將這個業(yè)務(wù)問題轉(zhuǎn)化為多維時序預(yù)測,一旦有了技術(shù)方向,剩下的就是技術(shù)選型問題了。無論是從用戶視角出發(fā)的用戶畫像,還是從廣告主視角出發(fā)設(shè)置的定向條件,本質(zhì)上都是不同維度的交叉組合。例如,給定性別、年齡、所在省份三個刻畫維度,至少有 2x100x52 種組合來刻畫不同的人群,如果以小時為單位統(tǒng)計(jì)不同人群貢獻(xiàn)的廣告庫存,那么每一個人群都有與之對應(yīng)的庫存序列。顯然,有多少人群,就有多少廣告庫存序列——這也正是多維時間序列名字的由來。對于多維時序預(yù)測場景,計(jì)算廣告公司 FreeWheel至少有 3 種技術(shù)方案,如下圖所示。
不同技術(shù)方案優(yōu)缺點(diǎn)
在 FreeWheel 的業(yè)務(wù)場景中,我們需要基于種類眾多的定向條件(內(nèi)容來源、地理位置、播放設(shè)備、用戶畫像等)以小時為粒度預(yù)測未來 3 個月的廣告庫存。這樣的業(yè)務(wù)需求至少面臨 4 個方面的挑戰(zhàn):
-
眾多定向條件的交叉組合造成維度爆炸,維度爆炸又帶來數(shù)據(jù)分布的長尾效應(yīng);
-
維度爆炸帶來的工程復(fù)雜度。如果為每個序列構(gòu)建時序模型,那么工程與運(yùn)維成本無法想象;
-
超長時間序列。在傳統(tǒng)的金融時序預(yù)測中,預(yù)測周期往往不超過 120 個時間單元,但在 FreeWheel 的場景中,需要向前預(yù)測 2160(24x90)個時間單元;
-
海量數(shù)據(jù)挑戰(zhàn)。FreeWheel 日投放廣告量達(dá)到10億級規(guī)模,為了向前預(yù)測2160個時間單元,至少需要回溯同樣長的時間周期,也就是說至少要回溯3個月的數(shù)據(jù),數(shù)據(jù)規(guī)??上攵?。
?
機(jī)器學(xué)習(xí)團(tuán)隊(duì)的主要職能在于利用機(jī)器學(xué)習(xí)算法賦能業(yè)務(wù),團(tuán)隊(duì)的核心競爭力在于算法,專注于機(jī)器學(xué)習(xí)在計(jì)算廣告業(yè)務(wù)中的應(yīng)用與落地。與專職算法研究不同,算法的應(yīng)用與落地要求團(tuán)隊(duì)同時具備算法鉆研與實(shí)現(xiàn)、模型調(diào)優(yōu)、工程交付等多方面的能力。受限于團(tuán)隊(duì)規(guī)模與有限的人力資源,FreeWheel 無法承受龐大的工程與運(yùn)維成本,因此上表的方案1被迅速排除。
方案2雖然在一定程度上降低了工程成本,但是訓(xùn)練階段先聚類再時序預(yù)測、推理階段先預(yù)測再反歸一化的非端到端流程依然比較繁瑣,非端到端解決方案的主要痛點(diǎn)在于工程耦合組件較多,耦合組件過多帶來的副作用就是端到端的穩(wěn)定性較差。為了將后期運(yùn)維成本降至最低,我們最終還是選擇了上表中的方案3。盡管方案3涉及的深度模型復(fù)雜度較高、調(diào)優(yōu)挑戰(zhàn)較大,但這正是團(tuán)隊(duì)的核心價值所在。
?
技術(shù)方案敲定后,接下來需要考慮的是采用哪些技術(shù)棧。眾所周知,端到端機(jī)器學(xué)習(xí)流水線至少囊括以下環(huán)節(jié):
FreeWheel 通常使用 Presto 分布式數(shù)據(jù)庫來拉取數(shù)據(jù)源,然后利用高效的分布式計(jì)算引擎 Apache Spark(Databricks商業(yè)版本)來進(jìn)行數(shù)據(jù)預(yù)處理、特征工程和樣本工程。就機(jī)器學(xué)習(xí)算法來說,Spark 的 ML 算法庫提供了豐富的經(jīng)典算法實(shí)現(xiàn)并且支持大規(guī)模樣本量下的分布式模型訓(xùn)練。不過,對于參數(shù)量動輒百萬甚至上億的深度模型來說,模型并行是剛需,Spark 基于數(shù)據(jù)并行的實(shí)現(xiàn)方式便有些力不從心,超大規(guī)模的深度學(xué)習(xí)模型在單點(diǎn)中的存儲與更新已然超出硬件資源上限,從而導(dǎo)致模型訓(xùn)練無法順利完成。鑒于此,FreeWheel 采用支持模型并行機(jī)制的 TensorFlow 來實(shí)現(xiàn)自定義的深度學(xué)習(xí)模型。得益于 Keras Functional API,FreeWheel 很快便實(shí)現(xiàn)了定制化的深度網(wǎng)絡(luò)結(jié)構(gòu)并在單機(jī)環(huán)境中跑通了訓(xùn)練流程,接下來便是基于3個月體量的大規(guī)模樣本在分布式環(huán)境下不停地迭代、調(diào)優(yōu)模型。對于算法人員來說,網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整、超參調(diào)優(yōu)是“家常便飯”,周而復(fù)始的迭代對分布式訓(xùn)練環(huán)境的穩(wěn)定性與運(yùn)行效率提出了較高要求。就目前來說,TensorFlow 的分布式部署主要有如下幾種方式:
三種部署方案各有千秋,基于 Spark 或 YARN 的部署方式適合已經(jīng)部署 Hadoop 生態(tài)的數(shù)據(jù)和算法團(tuán)隊(duì);而基于 Kubernetes 的部署方式則非常有利于離線模型訓(xùn)練與在線模型服務(wù)的融合與統(tǒng)一。不過,對于這三種部署方案,我們不難發(fā)現(xiàn)這其中的每一種都需要 TensorFlow 與底層框架的集成與耦合,對于FreeWheel 機(jī)器學(xué)習(xí)團(tuán)隊(duì)來說,沒有額外的時間和精力來搭建這樣的分布式訓(xùn)練集群。對于一個規(guī)模小、專注于算法研究與落地的團(tuán)隊(duì)來說,FreeWheel 最需要的是“召之即來、揮之即去”的分布式訓(xùn)練環(huán)境,按需而用,用完即棄。于是,FreeWheel 調(diào)研了多種云原生的分布式機(jī)器學(xué)習(xí)平臺,并最終選擇了Amazon SageMaker 來實(shí)現(xiàn)分布式模型訓(xùn)練、調(diào)優(yōu)、部署,從而打通整條端到端大規(guī)模機(jī)器學(xué)習(xí)流水線。
為什么選擇AmazonSageMaker?
Amazon SageMaker 從開發(fā)到部署,以開箱即用和深度定制化兩種方式提供了完備的分布式功能集合。在開發(fā)方面,AmazonSageMaker 提供的 Jupyter notebook 與腳本模式允許開發(fā)者根據(jù)業(yè)務(wù)需要充分定制深度模型,開發(fā)者僅需幾行框架代碼(Skeleton code)即可將現(xiàn)有的 TensorFlow 代碼遷移至Amazon SageMaker,僅需幾個有限的參數(shù)即可按指定機(jī)型、數(shù)量自由啟停分布式訓(xùn)練集群。對于分布式模型訓(xùn)練,Amazon SageMaker 在模型并行方面支持兩種實(shí)現(xiàn)方式:參數(shù)服務(wù)器與 Horovod,在硬件資源方面支持 CPU 與 GPU,這種開放性允許開發(fā)者結(jié)合業(yè)務(wù)場景(圖像識別、分類回歸、時序預(yù)測等)靈活地構(gòu)建運(yùn)行時環(huán)境。
?
在模型訓(xùn)練過程中,Amazon SageMaker console 提供的可視化面板讓開發(fā)者可以及時監(jiān)測模型訓(xùn)練過程、收斂情況、擬合能力、泛化能力,從而使開發(fā)者在下一輪迭代中做到有的放矢。對于模型調(diào)優(yōu),算法人員最頭疼的無疑是超參調(diào)優(yōu)、網(wǎng)絡(luò)結(jié)構(gòu)變更、激活函數(shù)、學(xué)習(xí)率、優(yōu)化函數(shù)等等,不一而足。對于深度模型,網(wǎng)格搜索和隨機(jī)搜索逐漸淡出視野,超參調(diào)優(yōu)的趨勢是利用機(jī)器學(xué)習(xí)來調(diào)優(yōu)機(jī)器學(xué)習(xí),即用機(jī)器學(xué)習(xí)的方法來選擇超參數(shù);值得一提的是,在Auto ML如火如荼發(fā)展的當(dāng)下,作為其中一個門類,超參調(diào)優(yōu)被應(yīng)用得最為廣泛。AmazonSageMaker的Auto Pilot為自動超參調(diào)優(yōu)賦能,允許開發(fā)者以開箱即用的方式充分享受Auto ML發(fā)展的紅利。
?
部署方面,Amazon SageMaker 提供的 API 允許開發(fā)者以按需方式啟停分布式訓(xùn)練集群,按需而用、按需付費(fèi)、用完即停。不僅如此,Amazon SageMaker 自 2017 年底開始支持 Spot 機(jī)型,這一機(jī)型的支持使 FreeWheel 的云上成本在現(xiàn)有的基礎(chǔ)上又降低了至少 50%。Amazon SageMaker 為開發(fā)者提供的功能集合完備而全面,鑒于篇幅有限,難以一一陳述。
?
那么,Amazon SageMaker 如何助力 FreeWheel 實(shí)現(xiàn)大規(guī)模多維時序預(yù)測?效果與收益如何?2021年1月13日,亞馬遜 re:Invent2020 計(jì)算廣告與營銷主題專場會議《Distributedmachine learning for digital video and TV ad serving》(Session ID: ADM302)中,AWS 資深開發(fā)者布道師王宇博聯(lián)袂FreeWheel 機(jī)器學(xué)習(xí)團(tuán)隊(duì)負(fù)責(zé)人吳磊,為您傾情講述個中細(xì)節(jié),敬請期待!
程序員如何避免陷入“內(nèi)卷”、選擇什么技術(shù)最有前景,中國開發(fā)者現(xiàn)狀與技術(shù)趨勢究竟是什么樣?快來參與「2020?中國開發(fā)者大調(diào)查」,更有豐富獎品送不停!
戳:https://bss.csdn.net/m/topic/dev_survey2020
?
總結(jié)
以上是生活随笔為你收集整理的探究贴片广告背后的技术大片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iBeacon 初探
- 下一篇: CF1479A Searching Lo