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