机器学习在ABR算法中的应用纵览
?
本文整理自LiveVideoStack線上分享第三季,第五期,由清華大學(xué)計(jì)算機(jī)系網(wǎng)絡(luò)技術(shù)研究所博士生王莫為為大家介紹近些年ABR算法的發(fā)展,探討基于機(jī)器學(xué)習(xí)的ABR算法的優(yōu)劣勢(shì),并結(jié)合AiTrans比賽分析其在直播場(chǎng)景中的應(yīng)用問題。
文/王莫為
整理/LiveVideoStack
?
大家好,我是來自清華大學(xué)計(jì)算機(jī)系的博士生王莫為,導(dǎo)師是崔勇教授,本次分享的主題是機(jī)器學(xué)習(xí)在ABR算法中的應(yīng)用,機(jī)器學(xué)習(xí)在網(wǎng)絡(luò)、系統(tǒng)和流媒體中都有各種各樣的應(yīng)用。
?
我們組自2016年就開始對(duì)機(jī)器學(xué)習(xí)如何與網(wǎng)絡(luò)相結(jié)合做一些調(diào)研和綜述,發(fā)現(xiàn)在2016年前后相關(guān)應(yīng)用特別少,而且大多集中在擁塞控制和流量分類方面。AlphaGo之后就出現(xiàn)了許多深度學(xué)習(xí)包括深度強(qiáng)化學(xué)習(xí)方面的應(yīng)用,應(yīng)用包括路由、流媒體QoE優(yōu)化和數(shù)據(jù)中心等。
?
去年八月份網(wǎng)絡(luò)領(lǐng)域頂會(huì)SIGCOMM主會(huì)中五十篇論文中有三篇都是與機(jī)器學(xué)習(xí)相關(guān)的,Workshop和Posters and Demos加起來有二十多篇,其中NetAI workshop在SIGCOMM歷史上首次人數(shù)破百,AI在系統(tǒng)、網(wǎng)絡(luò)、流媒體傳輸各個(gè)方面都在不斷深入,本次分享也將從ABR的角度來介紹它的發(fā)展。
1. 自適應(yīng)碼率(ABR)算法
?
本次分享的內(nèi)容主要分為三個(gè)方面,首先會(huì)介紹ABR算法的一些背景和過去的一些傳統(tǒng)算法,接下來會(huì)介紹機(jī)器學(xué)習(xí)驅(qū)動(dòng)的ABR算法的發(fā)展和它潛在的一些問題,最后會(huì)簡(jiǎn)單介紹一下AITrans競(jìng)賽與直播場(chǎng)景下的ABR算法。
?
生活中各種各樣的視頻應(yīng)用越來越多,包括視頻點(diǎn)播、視頻直播、短視頻和在線教育,各大廠商也花費(fèi)了很大力氣去提高用戶體驗(yàn)。
?
觀看視頻時(shí),我們經(jīng)常會(huì)遇到由于各種各樣原因?qū)е碌囊曨l卡頓或者碼率不高導(dǎo)致畫面不清晰的問題,這時(shí)大家一般都會(huì)在右下角通過選擇視頻清晰度來改善卡頓或者不清晰的問題,而目前很多廠商已經(jīng)上線了自適應(yīng)碼率技術(shù)來提高用戶的使用體驗(yàn)。
?
國(guó)內(nèi)包括B站、愛奇藝都有相對(duì)應(yīng)的技術(shù)上線,國(guó)外的YouTube、Twitch也有相關(guān)的技術(shù)應(yīng)用。自適應(yīng)碼率一般來講采用基于HTTP的DASH協(xié)議,基本運(yùn)作流程是首先在CDN中存儲(chǔ)已經(jīng)按照不同碼率編碼好的視頻塊,客戶端會(huì)不斷向服務(wù)器請(qǐng)求某個(gè)碼率下的視頻塊,每個(gè)視頻塊含有幾秒鐘的內(nèi)容,服務(wù)器把視頻傳輸給客戶端,客戶端會(huì)把視頻塊存在本地的緩沖區(qū)Buffer里。上圖中紫色的塊可以認(rèn)為是視頻塊,持續(xù)時(shí)間是一秒,高度就是它的碼率。在視頻播放中,Buffer就會(huì)被實(shí)時(shí)消耗,如果此時(shí)你的下載速率與碼率不匹配就會(huì)出現(xiàn)排空Buffer或者累計(jì)Buffer,當(dāng)帶寬遠(yuǎn)低于碼率時(shí)會(huì)出現(xiàn)卡頓,于是各個(gè)播放器廠商都會(huì)考慮采用自適應(yīng)碼率來根據(jù)當(dāng)前網(wǎng)絡(luò)狀況和Buffer長(zhǎng)度來選擇合適的碼率去優(yōu)化用戶的體驗(yàn)質(zhì)量(Quality of Experience),也就是QoE。QoE包括的指標(biāo)一般有視頻質(zhì)量、卡頓和碼率抖動(dòng)等。
?
ABR的研究已經(jīng)持續(xù)了很多年,但仍有一些挑戰(zhàn)需要解決。假設(shè)現(xiàn)在有一個(gè)播放器已經(jīng)播放了一段時(shí)間,視頻的Throughput如上圖所示,這時(shí)需要選擇一個(gè)碼率使得用戶的QoE較高。有一種方式是對(duì)Throughput進(jìn)行預(yù)測(cè),然后根據(jù)Throughput的變化選擇一個(gè)與它接近或者比它低一點(diǎn)的碼率,但在移動(dòng)設(shè)備或者無線場(chǎng)景下,網(wǎng)絡(luò)變化難以預(yù)測(cè),這給ABR決策帶來了挑戰(zhàn)。另一方面QoE指標(biāo)之間是相互沖突的,視頻質(zhì)量越高視頻塊越大,所需的帶寬越大,因此造成卡頓的概率越高,如果比較保守的選擇低質(zhì)量的視頻塊,雖然可以減少卡頓概率,但也會(huì)犧牲視頻質(zhì)量從而無法提高QoE。另一方面,ABR算法跟隨Throughput變化的速度會(huì)影響視頻切換的頻率,如果想讓碼率變化盡可能的平滑就需要用提前準(zhǔn)備好的Buffer去處理未來可能會(huì)遇見的Throughput的低谷。最后一點(diǎn)是碼率決策具有一定的級(jí)聯(lián)效應(yīng),先前的決策會(huì)對(duì)未來產(chǎn)生很大影響,換言之就是需要提前為某些Throughput的抖動(dòng)變化預(yù)留一些Buffer,比如在某一時(shí)刻對(duì)Throughput的預(yù)測(cè)不是很好,選擇了比較高的碼率,如果網(wǎng)絡(luò)發(fā)生抖動(dòng),在未來全部選擇低碼率也無法阻止這一次卡頓,所以這就需要ABR算法具有一定的前瞻性和預(yù)測(cè)性。
2. 機(jī)器學(xué)習(xí)驅(qū)動(dòng)的ABR算法
?
關(guān)于ABR算法的研究工作一直都在進(jìn)行。Rate-based的方法是一種經(jīng)典的傳統(tǒng)ABR算法,它首先對(duì)Throughput進(jìn)行估計(jì),之后選擇與Throughput接近或略低的碼率,可能還要配上些啟發(fā)式算法來處理魯棒性或者帶寬探測(cè)的問題。2014年提出的BBA(buffer-based approach)算法基于buffer來進(jìn)行碼率決策,之所以選擇buffer是因?yàn)門hroughput抖動(dòng)非常大,很難對(duì)其進(jìn)行預(yù)測(cè)。BBA的基本策略是在Buffer比較小的時(shí)候認(rèn)為卡頓概率比較高,選擇相對(duì)低的碼率,Buffer比較大的時(shí)候卡頓概率比較低,可以選擇相對(duì)高的碼率,處于二者之間時(shí)會(huì)以某種線性函數(shù)或者其他對(duì)應(yīng)關(guān)系將buffer長(zhǎng)度映射到中間的碼率,來實(shí)現(xiàn)一種不依賴Throughput的解決方案。這個(gè)方案會(huì)出現(xiàn)Buffer比較小時(shí)相對(duì)保守,切換比較頻繁的現(xiàn)象。還有一種同時(shí)基于throughput和buffer進(jìn)行碼率決策的方法MPC,全稱是Model Predictive Control模型預(yù)測(cè)控制。其基本邏輯是先對(duì)客戶端的播放邏輯進(jìn)行簡(jiǎn)單建模,建模的目標(biāo)是可以利用throughput和buffer來判斷選擇不同碼率下未來可以得到的QoE,從而可以利用這個(gè)模型對(duì)未來進(jìn)行規(guī)劃。
到了2016年和2017年就開始出現(xiàn)了一些基于機(jī)器學(xué)習(xí)的ABR算法,其中CS2P主要解決MPC在Throughput預(yù)測(cè)不準(zhǔn)的情況下會(huì)出現(xiàn)明顯性能下降的問題,尤其是在Throughput進(jìn)行快速抖動(dòng)的情況下。CS2P利用隱馬爾可夫模型進(jìn)行帶寬預(yù)測(cè),可以認(rèn)為是利用機(jī)器學(xué)習(xí)算法進(jìn)行間接ABR決策的工作。
Pensieve是基于深度強(qiáng)化學(xué)習(xí)進(jìn)行端到端碼率決策的ABR算法。
2.1 CS2P
?
CS2P的全稱是Cross-Session Stateful Prediction,基本邏輯是利用更好的Throughput預(yù)測(cè)來達(dá)到更好的碼率選擇,基本操作就是把Throughput預(yù)測(cè)拼到MPC方案上。作者觀察到吞吐量具有某種狀態(tài)轉(zhuǎn)移特性,關(guān)鍵特征相似的會(huì)話吞吐量特性相似,例如上圖中兩條紅線之間Throughput會(huì)呈現(xiàn)某種狀態(tài)特性,然后它又對(duì)這些數(shù)據(jù)集中某一個(gè)時(shí)間段到另一個(gè)時(shí)間段的吞吐量轉(zhuǎn)移進(jìn)行了分析,發(fā)現(xiàn)其中確實(shí)具有明顯的狀態(tài)轉(zhuǎn)移特性,這種特性可以考慮用隱馬爾可夫模型去建模Throughput的變化。另一方面,作者發(fā)現(xiàn)如果把所有session的Throughput信息都拿去訓(xùn)練同一個(gè)模型,就會(huì)導(dǎo)致這個(gè)模型變得很差,表征能力不強(qiáng)或者學(xué)到相對(duì)平均的結(jié)果以至于不能反映每一個(gè)子類的特性。為了解決這個(gè)問題,可以考慮利用關(guān)鍵特征對(duì)會(huì)話進(jìn)行聚類,之后再針對(duì)每個(gè)類別訓(xùn)練單獨(dú)的隱馬爾可夫模型。這個(gè)工作整體上就是通過Throughput的預(yù)測(cè)方式間接對(duì)碼率進(jìn)行決策。
2.2 Pensieve
?
2017年的Pensieve(Pensieve:AI帶來的更流暢的高質(zhì)量觀看體驗(yàn))是第一篇基于深度強(qiáng)化學(xué)習(xí)端到端進(jìn)行碼率決策的論文,這篇文章中提到之所以這樣做是因?yàn)橄惹暗墓ぷ骺傆幸恍┕逃械木窒?#xff0c;因此考慮用端到端的方式去學(xué)習(xí),減少人為干涉。ABR本身具有長(zhǎng)期規(guī)劃特性,這與深度強(qiáng)化學(xué)習(xí)本身十分適配,深度神經(jīng)網(wǎng)絡(luò)也可以處理多維輸入狀態(tài)來輔助決策。
?
強(qiáng)化學(xué)習(xí)的基本邏輯是靠Agent和Environment之間不斷交互進(jìn)行學(xué)習(xí)。具體的操作方式是,Agent會(huì)從Environment中不斷地觀測(cè)到狀態(tài)state,基于state做出一些決策動(dòng)作action傳遞給Environment,Environment會(huì)依據(jù)當(dāng)前狀態(tài)和決策轉(zhuǎn)移到下一個(gè)狀態(tài),并且給Agent一個(gè)Reward反饋,Agent由此進(jìn)行學(xué)習(xí)去最大化未來的累計(jì)Reward和。
?
ABR中的決策就是為未來每一個(gè)視頻塊選擇一個(gè)合適的碼率,輸入信息包括當(dāng)前帶寬、歷史選擇碼率和當(dāng)前Buffer長(zhǎng)度,除此之外可能還需要塊大小、下載時(shí)間和剩余塊數(shù)量等信息,由此Agent就可以每次決定一個(gè)動(dòng)作后告訴環(huán)境。這里首先需要解決ABR算法與環(huán)境的交互的問題,強(qiáng)化學(xué)習(xí)需要不斷地交互迭代才能實(shí)現(xiàn)很好的學(xué)習(xí)效果,這要求環(huán)境需要足夠的快才能在有限的時(shí)間內(nèi)完成學(xué)習(xí)過程。這里有兩個(gè)選擇,一個(gè)是ABR算法與真實(shí)環(huán)境進(jìn)行交互,但真實(shí)環(huán)境交互次數(shù)遠(yuǎn)不足以支持Agent的訓(xùn)練,所以這里采用了一個(gè)塊級(jí)別的仿真器來對(duì)客戶端行為進(jìn)行近似模擬,實(shí)現(xiàn)高加速比(十分鐘模擬100小時(shí)播放)。有了仿真器和Agent交互之后就需要考慮Reward的設(shè)計(jì),ABR算法的最終目標(biāo)是要最大化的QoE和,每一步的Reward就應(yīng)該是單步的QoE(質(zhì)量、卡頓、切換的帶權(quán)線性和),這個(gè)QoE 模型也是MPC所使用的。Pensieve的訓(xùn)練方案用的是A3C的快速異步算法,使用真實(shí)trace 或者人工合成的trace得到的效果都還不錯(cuò)。
2.3 機(jī)遇與挑戰(zhàn)
?
Pensieve看上去似乎無懈可擊,但仍存在一些問題。在ABR和流媒體優(yōu)化中,QoE模型如何構(gòu)建一直是一個(gè)懸而未決的問題,不同用戶和業(yè)務(wù)需求中質(zhì)量、卡頓和切換比例關(guān)系可能會(huì)有變化。而Pensieve一旦訓(xùn)練完成之后,比例關(guān)系就已經(jīng)確定,不太能夠適應(yīng)新的業(yè)務(wù)需求,因此預(yù)測(cè)在未來可能會(huì)出現(xiàn)多目標(biāo)強(qiáng)化學(xué)習(xí)來解決多目標(biāo)QoE的要求。
Pensieve在泛化方面有兩種場(chǎng)景,一個(gè)是In-distribution,假設(shè)Pensieve應(yīng)用的網(wǎng)絡(luò)狀態(tài)場(chǎng)景是可采樣的,這樣我們就可以對(duì)目標(biāo)場(chǎng)景有一定認(rèn)識(shí),但之前的一些實(shí)驗(yàn)表明如果把流量分布的數(shù)量增加并且將對(duì)應(yīng)的數(shù)據(jù)集混合在一起訓(xùn)練,分布的數(shù)量越多會(huì)導(dǎo)致Pensieve性能下降的約大。這使得在某些具體的數(shù)據(jù)集上訓(xùn)練Pensieve,混合訓(xùn)練和單獨(dú)訓(xùn)練的pensieve agent之間的QoE差距會(huì)達(dá)到50%,這是不太能接受的程度。第二個(gè)場(chǎng)景是Out-of-distribution,在沒有訓(xùn)練過的場(chǎng)景上pensieve很大程度會(huì)fail。
在視頻源泛化方面,由于視頻內(nèi)容不同,編碼得出的塊的大小抖動(dòng)幅度也不一樣,如果在訓(xùn)練時(shí)沒有考慮到多種視頻源特性的話會(huì)導(dǎo)致一定程度上的性能下降,所以在這里可能會(huì)需要一些在線學(xué)習(xí)或者M(jìn)eta-learning的方案去實(shí)現(xiàn)在線學(xué)習(xí)。
?
第三個(gè)問題在于仿真器與真實(shí)網(wǎng)絡(luò)環(huán)境是否匹配的問題,這其中最大的問題在于仿真器是一個(gè)數(shù)值仿真,在網(wǎng)絡(luò)狀態(tài)部分采用的是直接讀取Throughput trace去看某一時(shí)間段平均Throughput 大概是多少,這時(shí)Throughput trace是沒有與傳輸層進(jìn)行交互的,所以這里沒法體現(xiàn)不同決策對(duì)傳輸層所帶來的影響,這種情況下仿真器所得到的結(jié)果就會(huì)潛在得與真實(shí)網(wǎng)絡(luò)環(huán)境存在偏差,同時(shí)也沒辦法模擬多用戶帶寬競(jìng)爭(zhēng)的問題。還有個(gè)問題在于現(xiàn)在使用Throughput trace往往反應(yīng)的都是當(dāng)時(shí)的吞吐量而非帶寬容量,而實(shí)際上的帶寬大小很難采集,這之間的差異也會(huì)對(duì)這個(gè)問題產(chǎn)生影響。
?
在Pensieve paper中提到可以使用mahimahi仿真器作為傳輸層的仿真模擬,mahimahi很多時(shí)候也被用在TCP的擁塞控制場(chǎng)景里,它能夠模擬中間瓶頸鏈路的Buffer變化情況,從而反映帶寬和RTT的變化。但其本身加速比非常低,如果聯(lián)合Throughput trace一起訓(xùn)練會(huì)拉低整個(gè)訓(xùn)練效率,因此這個(gè)方案存在一些效率問題。最近也有學(xué)者在考慮應(yīng)用層ABR和傳輸層TCP擁塞控制的聯(lián)合優(yōu)化,斯坦福大學(xué)的puffer就是這方面的工作,大家可以關(guān)注一下。雖然有了Pensieve 提供的數(shù)據(jù)集、QoE模型和仿真器,但在網(wǎng)絡(luò)或者流媒體領(lǐng)域去真的推進(jìn)這件事情的話還需要一個(gè)公認(rèn)的仿真系統(tǒng)或者開放的數(shù)據(jù)集。
?
3. AITrans競(jìng)賽與直播場(chǎng)景下的ABR算法
?
團(tuán)隊(duì)在去年9-12月份舉辦了一個(gè)直播流媒體的比賽AITrans,在其中構(gòu)建了一套系統(tǒng)和平臺(tái),包括仿真器和數(shù)據(jù),希望能為大家提供一些這方面的幫助,這個(gè)比賽后來拓展為ACM MM Grand Challenge。其主要任務(wù)是希望大家?guī)椭覀內(nèi)?yōu)化直播場(chǎng)景下的ABR決策,其中DASH以視頻塊為傳輸單位,延遲大,所以改為與公司合作,做了一個(gè)幀級(jí)別基于Push的直播流媒體傳輸系統(tǒng)。同時(shí)直播內(nèi)容實(shí)時(shí)產(chǎn)生,ABR算法可利用信息減少,因?yàn)槭侵辈?duì)低延遲、高清、低卡頓、少切換的多目標(biāo)QoE有更多的要求,這都導(dǎo)致了這個(gè)場(chǎng)景和原先點(diǎn)播場(chǎng)景有一些區(qū)別。為了解決低延遲的問題我們?cè)贏BR的基礎(chǔ)上又添加了時(shí)延控制機(jī)制,也就是快慢播和跳幀,以此來對(duì)時(shí)延進(jìn)行控制,最后在搭建的低時(shí)延直播傳輸仿真平臺(tái)L3VTP進(jìn)行測(cè)試。
?
在比賽的過程中可以發(fā)現(xiàn)選手們?cè)谥辈?chǎng)景下更多的還是在使用BBA、MPC、Pensieve算法的變種,比如有多閾值BBA,MPC + Oboe [SIGCOMM’18]和在Pensieve基礎(chǔ)上加上直播信息作為輸入,并修改訓(xùn)練算法和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的變種等。
而一些選手包括冠軍隊(duì)都采用了一些方案來提高ABR的性能,一是網(wǎng)絡(luò)狀態(tài)分類,二是在直播場(chǎng)景下對(duì)源端信息進(jìn)行幀大小和間隔的預(yù)測(cè)(機(jī)器學(xué)習(xí)或傳統(tǒng)方法)。由于快慢播和跳幀機(jī)制的存在,采用強(qiáng)化學(xué)習(xí)的方案中還額外面對(duì)Reward對(duì)齊的問題。在點(diǎn)播中每個(gè)下載的塊都會(huì)去播放,從而可以在下載時(shí)直接對(duì)塊的QoE進(jìn)行計(jì)算,而在直播中時(shí)延控制機(jī)制會(huì)導(dǎo)致下載的塊也可能不會(huì)被播放,或者是以不同的速率播放,這都會(huì)影響最終的QoE,所以在最后計(jì)算reward的時(shí)候要和當(dāng)時(shí)的決策對(duì)應(yīng)才能使算法能夠更好的運(yùn)行。這其中得到的教訓(xùn)是不要過度依賴仿真器,團(tuán)隊(duì)在初賽時(shí)使用仿真器而決賽時(shí)使用真實(shí)系統(tǒng),這兩個(gè)之間還是存在某些實(shí)現(xiàn)上的差異,以至于某些在仿真器環(huán)境下比較好的算法在真實(shí)環(huán)境下出現(xiàn)了一些問題。
總結(jié)
以上是生活随笔為你收集整理的机器学习在ABR算法中的应用纵览的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xilinx软硬IP双管齐下解决音视频处
- 下一篇: Hotstar赛事直播编码组合优化