當(dāng)前位置:首頁(yè) > 智能硬件 > 人工智能AI
[導(dǎo)讀] 一, 背景介紹---點(diǎn)播視頻源站分發(fā)的痛點(diǎn) 點(diǎn)播視頻觀看的流程與源站定義 點(diǎn)播,是相對(duì)于直播說(shuō)的,英文命叫VOD (Video on Demand),顧名思義,某個(gè)觀眾deman

一, 背景介紹---點(diǎn)播視頻源站分發(fā)的痛點(diǎn)

點(diǎn)播視頻觀看的流程與源站定義

點(diǎn)播,是相對(duì)于直播說(shuō)的,英文命叫VOD (Video on Demand),顧名思義,某個(gè)觀眾demand了,才有video看,看到的內(nèi)容是視頻的開(kāi)始;

而直播呢,是不管有沒(méi)有觀眾去看的,視頻一直在往前走,某個(gè)觀眾進(jìn)來(lái)時(shí)看到的,是當(dāng)時(shí)的視頻。

點(diǎn)播視頻的內(nèi)容非常多樣化,有連續(xù)劇、電影、體育錄像、自媒體制作的視頻,甚至包含(現(xiàn)在非?;鸨模┒桃曨l。

大家有沒(méi)有想過(guò),每次打開(kāi)一個(gè)點(diǎn)播視頻的時(shí)候,背后的操作是什么樣子的呢?

簡(jiǎn)單的一種觀點(diǎn)是圖上這樣:

視頻網(wǎng)站提供點(diǎn)播資源,比如說(shuō)PPTV新上了一個(gè)連續(xù)劇,一個(gè)電影,或是短視頻網(wǎng)站新提供了一個(gè)新的短視頻

觀眾通過(guò)網(wǎng)頁(yè)、app等訪問(wèn)網(wǎng)站,進(jìn)行視頻的觀看

實(shí)際上,情況沒(méi)有這么簡(jiǎn)單

視頻網(wǎng)站的提供的點(diǎn)播資源,也就是文件,是放在自己公司的服務(wù)器上面的,這個(gè)服務(wù)器可能是買的,也可能是租的,

存儲(chǔ)這些文件的服務(wù)器集群,就叫做源站

這些視頻文件,實(shí)際上不會(huì)直接給用戶訪問(wèn),而是通過(guò)cdn逐級(jí)分發(fā)出去的,所以這些存儲(chǔ)集群,還要負(fù)責(zé)對(duì)接CDN

所以源站的作用是負(fù)責(zé)存儲(chǔ)和對(duì)接CDN,這里有個(gè)分工,視頻網(wǎng)站擁有視頻版權(quán),CDN擅長(zhǎng)分發(fā)

下面我們來(lái)看看點(diǎn)播、包括短視頻的視頻網(wǎng)站的處理流程,

流程如下:

內(nèi)容生成(這一點(diǎn)是在視頻網(wǎng)站之外就可以做的)。視頻網(wǎng)站采購(gòu)版權(quán),或者是自媒體作者制作好視頻,短視頻作者在手機(jī)端錄制好視頻

把內(nèi)容上傳到視頻網(wǎng)站的源片存儲(chǔ)。視頻網(wǎng)站的編輯上傳采購(gòu)的版權(quán)視頻,自媒體和短視頻作者上傳自己制作的視頻

選擇是否壓制(根據(jù)特性)。視頻網(wǎng)站根據(jù)視頻的特性,選擇是否對(duì)視頻進(jìn)行壓制處理, 例如短視頻一般不需要壓制即可在手機(jī)播放,而電影連續(xù)劇一般會(huì)壓制多檔碼率

成片存儲(chǔ)。壓制好(或不用壓制)的視頻,叫做成片,存儲(chǔ)起來(lái)

回源。CDN從成片存儲(chǔ)回源下載這些視頻,給觀眾看

源站與CDN的網(wǎng)絡(luò)拓?fù)?

我們知道有以下事實(shí):

一個(gè)視頻網(wǎng)站的(成片)視頻,一般不會(huì)只放在一個(gè)機(jī)房?jī)?nèi)。如PPTV的視頻,體育類的會(huì)放在上海的機(jī)房,原因是體育演播室在上海,本地錄制方便且無(wú)需互聯(lián)網(wǎng)帶寬;影視類的都放在武漢的機(jī)房,原因是編輯中心在武漢。

一個(gè)視頻網(wǎng)站會(huì)對(duì)接多個(gè)CDN,也可能自己建設(shè)CDN。如PPTV,在自己CDN的基礎(chǔ)上,和國(guó)內(nèi)外各大知名CDN廠商都有深度的合作

每個(gè)CDN(包括自建)供應(yīng)商對(duì)應(yīng)的網(wǎng)絡(luò)接入點(diǎn)位置,質(zhì)量都有很多區(qū)別

另外,對(duì)于視頻網(wǎng)站來(lái)說(shuō),一個(gè)視頻文件,只用保存一兩份(當(dāng)然,視頻公司會(huì)做冷熱備份等等操作,所以,實(shí)際上落盤的存儲(chǔ)不只這么少,這個(gè)細(xì)節(jié)屬于存儲(chǔ)高可用的范疇,就不深究了),

為了存儲(chǔ)在不同機(jī)房,唯一的一份數(shù)據(jù)同時(shí)發(fā)到多個(gè)CDN,源站內(nèi)部需要使用多級(jí)緩存的結(jié)構(gòu)。

在視頻源站內(nèi)部的多級(jí)緩存之間,也就是多個(gè)機(jī)房之間的分發(fā),叫做內(nèi)部分發(fā);

視頻源站(L2集群)到CDN接入點(diǎn)間的分發(fā),叫做外部分發(fā)。一般L2集群對(duì)接CDN接入點(diǎn),在與CDN聯(lián)調(diào)對(duì)接時(shí),就會(huì)選好優(yōu)質(zhì)線路,甚至在一個(gè)運(yùn)營(yíng)商的機(jī)房。

所以,我們介紹的重點(diǎn)還是,如何把視頻文件從N個(gè)成片存儲(chǔ)集群,通過(guò)K個(gè)L1集群,分發(fā)到M個(gè)L2集群中。

點(diǎn)播視頻源站分發(fā)過(guò)程中,存在的問(wèn)題

點(diǎn)播視頻從中央集群向L1,L2集群(機(jī)房)分發(fā)時(shí),采用樹(shù)狀分發(fā)(這個(gè)樹(shù)的建立,會(huì)根據(jù)經(jīng)驗(yàn)或者網(wǎng)絡(luò)本身特性),每個(gè)中央節(jié)點(diǎn)到不同的L1機(jī)房線路質(zhì)量差距很大,不同的L1機(jī)房到L2機(jī)房質(zhì)量也差異很大

分發(fā)過(guò)程走的是互聯(lián)網(wǎng)線路(專線太貴),互聯(lián)網(wǎng)線路的穩(wěn)定性不可預(yù)期,有時(shí)網(wǎng)絡(luò)抖動(dòng),會(huì)造成分發(fā)失敗,甚至挖斷光纜導(dǎo)致某條干網(wǎng)不可用的事故也經(jīng)常出現(xiàn),某條線路或者某個(gè)機(jī)房的問(wèn)題,可能會(huì)造成區(qū)域性的不可用

不同集群(機(jī)房)在規(guī)劃和建設(shè)時(shí),服務(wù)器(計(jì)算、存儲(chǔ)、IO)能力、出入口帶寬不一樣,不同集群向下分發(fā)時(shí)對(duì)應(yīng)的節(jié)點(diǎn)數(shù)也不一致,會(huì)出現(xiàn)不同集群間的負(fù)載差異較大的情況,俗稱忙的忙死閑的閑死,忙的節(jié)點(diǎn),很可能成為瓶頸

點(diǎn)播視頻源站分發(fā)鏈路優(yōu)化的意義

如何解決上面說(shuō)的問(wèn)題呢,我們自然的會(huì)想到,如果每個(gè)文件的分發(fā)過(guò)程,都能自動(dòng)選擇一個(gè)最優(yōu)秀的鏈路,而不是根據(jù)那個(gè)配置死的回源樹(shù),那么分發(fā)的過(guò)程將會(huì)帶來(lái)這些優(yōu)勢(shì):

更加高效和穩(wěn)定 避免區(qū)域性的故障

不同集群(機(jī)房)的負(fù)載更加合理和平均

二, 節(jié)點(diǎn)間數(shù)據(jù)分發(fā)質(zhì)量的評(píng)估

為何先評(píng)估兩個(gè)服務(wù)器節(jié)點(diǎn)間的分發(fā)質(zhì)量

前面提到了優(yōu)化的辦法是選擇好的分發(fā)鏈路,那么,到底怎樣分發(fā)鏈路才是一個(gè)好的鏈路呢?我們先來(lái)看以下事實(shí):

鏈路是由數(shù)據(jù)通過(guò)的服務(wù)器節(jié)點(diǎn)構(gòu)成的

鏈路中,相鄰的服務(wù)器節(jié)點(diǎn)傳輸質(zhì)量的最差值,決定這條分發(fā)鏈路的質(zhì)量上限

所以,我們首先研究?jī)蓚€(gè)服務(wù)器節(jié)點(diǎn)間傳輸質(zhì)量的情況

兩個(gè)服務(wù)器節(jié)點(diǎn)間傳輸質(zhì)量的評(píng)估

那么,用什么的來(lái)評(píng)估兩個(gè)服務(wù)器節(jié)點(diǎn)間的傳輸質(zhì)量呢,我們自然希望有一個(gè)量化的數(shù)據(jù),一個(gè)簡(jiǎn)單的想法就是“文件下載耗時(shí)”。

影響兩個(gè)服務(wù)器節(jié)點(diǎn)間的傳輸質(zhì)量(下載耗時(shí))的因素有這些:

文件大小

服務(wù)器之間網(wǎng)絡(luò)線路的情況,包括數(shù)據(jù)延遲、丟包率、躍點(diǎn)數(shù)等等

發(fā)送服務(wù)器(接收服務(wù)器)的當(dāng)前負(fù)載,包括CPU負(fù)載,內(nèi)存用量,IO負(fù)載,當(dāng)前帶寬,存儲(chǔ)用量

當(dāng)前時(shí)間

我們接下來(lái)會(huì)簡(jiǎn)單分析,這些因素會(huì)對(duì)下載有什么影響

文件大?。何募酱?,下載越慢,耗時(shí)越長(zhǎng)

服務(wù)器之間網(wǎng)絡(luò)線路的情況:兩個(gè)服務(wù)器之間的網(wǎng)絡(luò)情況,具體有這些指標(biāo)

延遲:下圖中的ping指令,可以測(cè)試出兩個(gè)服務(wù)器間的延遲信息,對(duì)于數(shù)據(jù)傳輸來(lái)說(shuō),延遲越小越好

MTU(Maximum Transmission Unit):是指一種通信協(xié)議的某一層上面所能通過(guò)的最大數(shù)據(jù)包大?。ㄒ宰止?jié)為單位)。最大傳輸單元這個(gè)參數(shù)通常與通信接口有關(guān)(網(wǎng)絡(luò)接口卡、串口等),如下方圖中所示,傳輸3000字節(jié),如果mtu設(shè)置成1500,需要打成兩個(gè)包,而當(dāng)mtu設(shè)置為1492,則需要打成3個(gè)包,傳輸3個(gè)包當(dāng)然要比2個(gè)耗時(shí)更多。

丟包率:下圖中的ping指令,測(cè)試出當(dāng)前丟包為0個(gè),在網(wǎng)絡(luò)出現(xiàn)問(wèn)題時(shí),這個(gè)數(shù)據(jù)可能不為0,視頻下載基于HTTP,底層是TCP協(xié)議,丟包后要重傳,丟包率越低會(huì)越好

躍點(diǎn)數(shù):躍點(diǎn)數(shù)代表兩個(gè)服務(wù)器間通信時(shí)經(jīng)過(guò)的路由設(shè)備數(shù)目,數(shù)據(jù)通過(guò)路由器時(shí),路由器中會(huì)有數(shù)據(jù)包隊(duì)列,隊(duì)列過(guò)滿,數(shù)據(jù)有被丟棄的風(fēng)險(xiǎn);路由器在計(jì)算數(shù)據(jù)包下一跳的時(shí)候,也會(huì)有一定的耗時(shí);

服務(wù)器的最大帶寬:服務(wù)器最大帶寬,當(dāng)然是越大越好(當(dāng)然成本也越高),例如家里裝寬帶,500M的肯定比100M的好(也更貴)

發(fā)送服務(wù)器(接收服務(wù)器)的當(dāng)前負(fù)載情況

CPU負(fù)載:CPU負(fù)載在不大的時(shí)候,對(duì)下載影響不大,當(dāng)CPU負(fù)載超過(guò)一定值時(shí),會(huì)嚴(yán)重影響下載的效率

內(nèi)存用量:內(nèi)存用量在不高的時(shí)候,對(duì)下載影響不大,當(dāng)內(nèi)存用量過(guò)一定值時(shí),會(huì)嚴(yán)重影響下載的效率

IO負(fù)載:IO負(fù)載在不大的時(shí)候,對(duì)下載影響不大,當(dāng)IO負(fù)載超過(guò)一定值時(shí),會(huì)嚴(yán)重影響下載的效率

當(dāng)前帶寬使用情況:當(dāng)前帶寬在不接近最大帶寬的時(shí)候,對(duì)下載影響不大,當(dāng)它接近最大帶寬時(shí),數(shù)據(jù)包傳輸阻塞,會(huì)嚴(yán)重影響下載的效率

圖中為top指令看到的當(dāng)前機(jī)器負(fù)載

當(dāng)前時(shí)間:

以上提到的數(shù)據(jù),都是隨著時(shí)間抖動(dòng)的,例如說(shuō)帶寬數(shù)據(jù),視頻網(wǎng)站早上看的人少,晚上看的人多,工作日看的人和周末又不一致,而遇到一些節(jié)假日,又有新的特點(diǎn),整體互聯(lián)網(wǎng)的使用趨勢(shì)是向上的,所以從一個(gè)長(zhǎng)期時(shí)間來(lái)看,帶寬數(shù)據(jù)應(yīng)該是波動(dòng)向上的。

這里要提一個(gè)問(wèn)題,正是由于相同尺寸、相同鏈路的下載速度,在不同時(shí)間點(diǎn)的表現(xiàn)差異巨大,才需要引入一個(gè)動(dòng)態(tài)的預(yù)估機(jī)制。

例如,一個(gè)文件2G大小,我們?cè)陂_(kāi)始下載前,覺(jué)得鏈路A是最好的,但是實(shí)際上下載了300M后,鏈路的A的質(zhì)量已經(jīng)不好了,這是鏈路B可能反倒更好,我們想要達(dá)到的目的是,計(jì)算出下載完2G大小文件的綜合耗時(shí)最低是哪條。

建立兩個(gè)節(jié)點(diǎn)間數(shù)據(jù)傳輸質(zhì)量模型的設(shè)想

度量?jī)蓚€(gè)節(jié)點(diǎn)間的分發(fā)質(zhì)量,我們可以用一個(gè)數(shù)值,下載時(shí)長(zhǎng)(Download TIme,縮寫(xiě)為DT)來(lái)表示,這個(gè)數(shù)據(jù)受到很多具體的、隨時(shí)間呈現(xiàn)一定規(guī)律的因素(變量)影響,那么我們可以有一個(gè)美好的設(shè)想:用一個(gè)模型,或者說(shuō)是一個(gè)函數(shù),來(lái)描述這些因素與DT間的關(guān)系,后續(xù)新的文件下載時(shí),使用這個(gè)模型,輸入當(dāng)前這些變量,預(yù)測(cè)文件下載的耗時(shí)。

假設(shè)函數(shù)如下:

DT = Func(file_size,current_TIme,defer,cpu_load,mem_load,io_load, ……。)

我們知道一個(gè)文件大小為100M,當(dāng)前時(shí)間點(diǎn)已知,節(jié)點(diǎn)間這些變量已知,我們可以根據(jù)這個(gè)函數(shù)算出時(shí)長(zhǎng)來(lái)。

三, 機(jī)器學(xué)習(xí)算法的設(shè)計(jì)和實(shí)現(xiàn)

機(jī)器學(xué)習(xí)的引入

前面提出了建立一個(gè)模型(函數(shù))的設(shè)想,來(lái)預(yù)測(cè)DT,這個(gè)模型如何建立呢?

我們先看數(shù)學(xué)上是怎么做的,在數(shù)學(xué)范疇里,對(duì)于已知一組自變量、應(yīng)變量數(shù)據(jù),反過(guò)來(lái)求函數(shù)的過(guò)程,叫做擬合

二維空間里,一個(gè)自變量,一個(gè)應(yīng)變量,就是簡(jiǎn)單的曲線擬合,

三維空間了,兩個(gè)自變量,一個(gè)應(yīng)變量,就是曲面擬合,

N維空間里, N-1個(gè)自變量,1個(gè)應(yīng)變量,也能擬合,

這些具體的算法在數(shù)學(xué)書(shū)里都有,最小二乘法什么的,感興趣的同學(xué)可以自行查看。

而在計(jì)算機(jī)科學(xué)范圍內(nèi),AI研究的先驅(qū)者,提出了利用神經(jīng)網(wǎng)絡(luò)做機(jī)器學(xué)習(xí)的辦法,來(lái)處理這個(gè)問(wèn)題。

機(jī)器學(xué)習(xí)是什么呢,現(xiàn)在網(wǎng)上有很多解釋,我們這里簡(jiǎn)單來(lái)說(shuō)明下

我們給機(jī)器(計(jì)算機(jī)上的程序)已知的輸入、輸出,讓它去找規(guī)律出來(lái)(知識(shí)發(fā)現(xiàn)),然后我們讓它根據(jù)找到的規(guī)律,用新的輸入算出新的輸出來(lái),并對(duì)這個(gè)輸出結(jié)果做評(píng)價(jià),如果合適就正向鼓勵(lì),如果結(jié)果不合適,就告訴機(jī)器這樣不對(duì),讓它重新找規(guī)律。

其實(shí)這個(gè)過(guò)程在模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,以獲取新的知識(shí)或技能,重新組織已有的知識(shí)結(jié)構(gòu)使之不斷改善自身的性能。

機(jī)器學(xué)習(xí)的本質(zhì)就是讓機(jī)器根據(jù)已有的數(shù)據(jù),去分析出一個(gè)模型來(lái)表示隱藏在這些數(shù)據(jù)背后的規(guī)律(函數(shù))。

如何實(shí)現(xiàn)這個(gè)找規(guī)律的過(guò)程呢?

我們先說(shuō)數(shù)學(xué)上是如何建立函數(shù)的(如何做擬合),過(guò)程如下:

選取擬合函數(shù)(冪函數(shù),指數(shù)函數(shù),對(duì)數(shù)函數(shù),三角函數(shù)等)

設(shè)定參數(shù)

比較誤差,調(diào)節(jié)參數(shù)

迭代

對(duì)于圖中這一系列點(diǎn),我們第一感覺(jué)這些點(diǎn)的排布是符合正弦函數(shù)的,那么我們使用三角函數(shù)中的正弦函數(shù)去擬合它,并且設(shè)定函數(shù)的周期、振幅、相位等等參數(shù),你和后,發(fā)現(xiàn)在x 》 5后,還是有一定誤差的,這就需要去判斷誤差是可接受,如果不可,則需要重新做擬合。

對(duì)于上圖中的這些點(diǎn)做擬合,我們發(fā)現(xiàn)這些點(diǎn)的分布好像是個(gè)拋物線,那么根據(jù)我們中學(xué)的數(shù)學(xué)知識(shí),拋物線是冪函數(shù)中二次冪函數(shù)的圖像,所以使用二次冪函數(shù)做擬合,最終得到一個(gè)方程來(lái)。

和數(shù)學(xué)領(lǐng)域一樣,AI領(lǐng)域里,輸入通過(guò)一個(gè)模型(函數(shù))變成輸出,這個(gè)模型(函數(shù))靠什么確定呢,靠猜!

猜不是問(wèn)題,問(wèn)題是如何猜的更準(zhǔn)?

AI的先驅(qū)提出了模擬人類大腦神經(jīng)元的思路,來(lái)處理如何猜模型的問(wèn)題

神經(jīng)網(wǎng)絡(luò)和人工神經(jīng)網(wǎng)絡(luò)

大腦神經(jīng)元是這個(gè)樣子:

大腦的神經(jīng)網(wǎng)絡(luò)是這個(gè)樣子:

大腦神經(jīng)元的特點(diǎn)是這樣,每個(gè)神經(jīng)元只負(fù)責(zé)處理一定的輸入,做成一定的輸出,給下級(jí)節(jié)點(diǎn),最后組合起來(lái),形成人腦中的神經(jīng)網(wǎng)絡(luò),這也就是動(dòng)物思考的過(guò)程了。

人工神經(jīng)網(wǎng)絡(luò)就是,人為的構(gòu)造出一些處理節(jié)點(diǎn)(模擬腦神經(jīng)元),每個(gè)節(jié)點(diǎn)有個(gè)函數(shù),處理幾個(gè)輸入,生成若干輸出,每個(gè)節(jié)點(diǎn)與其它節(jié)點(diǎn)組合,綜合成一個(gè)模型(函數(shù))。

從左到右分別是輸出層, 隱藏層,輸出層。

輸入層負(fù)責(zé)接受輸入,輸出層負(fù)責(zé)輸出結(jié)果,隱藏層負(fù)責(zé)中間的計(jì)算過(guò)程。

隱藏層的每一個(gè)節(jié)點(diǎn),就是一個(gè)處理函數(shù)。隱藏層的結(jié)構(gòu),也就是層數(shù),節(jié)點(diǎn)數(shù),還是每個(gè)節(jié)點(diǎn)的函數(shù)將決定整個(gè)神經(jīng)網(wǎng)絡(luò)的處理結(jié)果。

Tensorflow的介紹

Tensorflow的介紹網(wǎng)上非常多(可以搜索查看),按照本文的上下文,我們簡(jiǎn)單的介紹如下:

Tensorflow是一個(gè)通過(guò)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)深度學(xué)習(xí)的平臺(tái),我們給它輸入,輸出,約定一些(猜測(cè)模型)的規(guī)則,讓他去幫我們猜測(cè)具體模型。

使用TensorFlow的步驟可以簡(jiǎn)單的概括為,收集訓(xùn)練數(shù)據(jù) 訓(xùn)練 比較 迭代 …。.

訓(xùn)練數(shù)據(jù)的收集

我們來(lái)介紹如何為建立兩個(gè)節(jié)點(diǎn)間的傳輸質(zhì)量的模型收集訓(xùn)練數(shù)據(jù)。

前面介紹過(guò),數(shù)據(jù)分為輸入和輸出數(shù)據(jù)。

輸入數(shù)據(jù)為4類:

下載的文件大小-可直接記錄

當(dāng)前時(shí)間-使用unix TImestamp

網(wǎng)絡(luò)情況的統(tǒng)計(jì)-來(lái)自一些測(cè)速工具

發(fā)送(接收)服務(wù)器的負(fù)載情況-來(lái)自zabbix的記錄

輸出數(shù)據(jù)為下載一個(gè)文件的時(shí)間記錄,需要做離散化處理(后續(xù)介紹離散化原因)

Zabbix 的介紹:

基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)的開(kāi)源解決方案

zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營(yíng);并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位/解決存在的各種問(wèn)題

zabbix server與可選組件zabbix agent

支持Linux,Solaris,HP-UX,AIX,F(xiàn)ree BSD,Open BSD,OS X

Zabbix的anget部署在傳輸節(jié)點(diǎn)上,定期收集機(jī)器的負(fù)載和帶寬使用數(shù)據(jù), 并向中心(zabbix server)匯總。

下圖是zabbix對(duì)于當(dāng)前帶寬的統(tǒng)計(jì)情況:

下圖是3個(gè)月的帶寬負(fù)載:

下圖是3個(gè)月的cpu負(fù)載:

使用IPERF工具收集網(wǎng)絡(luò)數(shù)據(jù)

IPERF工具可以收集以下數(shù)據(jù):

當(dāng)前服務(wù)器之間的傳輸帶寬

丟包率

MSS、MTU

支持tcp/udp

下圖為iperf的使用截圖:

Ping工具收集延遲,測(cè)試節(jié)點(diǎn)連通性:

Tractroute工具收集節(jié)點(diǎn)間躍點(diǎn)數(shù)信息

(windows cmd中,命令為tracert)

訓(xùn)練的準(zhǔn)備

數(shù)據(jù)的組合與格式化:

將網(wǎng)絡(luò)數(shù)據(jù),負(fù)載數(shù)據(jù),文件大小,時(shí)間,格式化后組合成一條json。

將下載耗時(shí)數(shù)據(jù)分段后做離散化處理,這里解釋下,為何要對(duì)結(jié)果(輸出)做離散化,TensorFlow擅長(zhǎng)做分類處理的學(xué)習(xí),當(dāng)分類的結(jié)果集合是個(gè)連續(xù)集的時(shí)候,可能的結(jié)果就有無(wú)窮多個(gè),這將大大加大訓(xùn)練的難度,降低訓(xùn)練的速度。把結(jié)果離散化處理好,接近時(shí)間的時(shí)間處理成一個(gè)值,超過(guò)一定閾值的時(shí)間都化為一個(gè)值,這樣結(jié)果的區(qū)間有限,將大大降低訓(xùn)練難度。

訓(xùn)練模型參數(shù)的預(yù)設(shè)定:

我們前面說(shuō)到數(shù)學(xué)范疇的擬合時(shí),會(huì)先根據(jù)自己經(jīng)(xia)驗(yàn)(meng),從冪函數(shù)、三角函數(shù),指數(shù)函數(shù),對(duì)數(shù)函數(shù)中選取一種或是多種組合起來(lái)作為擬合的基礎(chǔ)。

對(duì)于神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),我們也不能一上來(lái)啥都不管,就讓它亂猜,而是要根據(jù)已(geng)知(shi)經(jīng)(xia)驗(yàn)(meng),設(shè)定模型和參數(shù)。

前面提到,每個(gè)節(jié)點(diǎn)都是一個(gè)函數(shù),那么,我們選什么函數(shù)呢,我們先考慮最簡(jiǎn)單的情況,線性函數(shù),我們用一堆線性函數(shù)組合起來(lái)成為一個(gè)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)描述的模型,肯定還是個(gè)線性模型,它不足以描述世界上大部分的規(guī)律。

下圖是常見(jiàn)的線性函數(shù):

那么我們考慮,把每個(gè)函數(shù)再做非線性化,就是在一個(gè)線性函數(shù)外,再套一個(gè)非線性函數(shù)(稱作激活函數(shù)),再組合成一個(gè)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)描述的模型,基本上能覆蓋世界上大部分的規(guī)律了(別問(wèn)我原因,我也不懂。。。)。

下圖是常使用的一些非線性函數(shù):

構(gòu)成的網(wǎng)絡(luò):

每個(gè)節(jié)點(diǎn)上的函數(shù)類型,我們先猜了一個(gè),那么,網(wǎng)絡(luò)的結(jié)構(gòu)呢,到底用幾層,每層幾個(gè)節(jié)點(diǎn),這個(gè)事情,在做不同領(lǐng)域的神經(jīng)網(wǎng)絡(luò)時(shí),選擇真是千差萬(wàn)別。

我們?cè)谠u(píng)估節(jié)點(diǎn)間傳輸質(zhì)量時(shí),先根據(jù)(拍)經(jīng)(腦)驗(yàn)(門)設(shè)置層數(shù)為15,每層50個(gè)節(jié)點(diǎn),節(jié)點(diǎn)函數(shù)也按照基本經(jīng)驗(yàn)進(jìn)行設(shè)置。

下面的參數(shù)將影響TensorFlow的訓(xùn)練結(jié)果:

初始學(xué)習(xí)率

學(xué)習(xí)率衰減率

隱藏層節(jié)點(diǎn)數(shù)量

迭代輪數(shù)

正則化系數(shù)

滑動(dòng)平均衰減率

批訓(xùn)練數(shù)量

線性函數(shù)、激活函數(shù)設(shè)置

其中,隱藏層節(jié)點(diǎn)數(shù),迭代輪數(shù),批訓(xùn)練數(shù)量,線性函數(shù)、激活函數(shù)設(shè)置將影響較大,如何設(shè)置,前面已經(jīng)提及,而剩余參數(shù)影響稍小,有興趣的同學(xué)可以自行搜索。

TensorFlow的處理流程

單個(gè)節(jié)點(diǎn)處理如下圖:

一個(gè)節(jié)點(diǎn)做了 ReLU(Wx+b)再與其它節(jié)點(diǎn)組合,最終生成輸出結(jié)果。

整體上分為以下幾步:

數(shù)據(jù)輸入

訓(xùn)練

訓(xùn)練結(jié)果審查

調(diào)節(jié)參數(shù)

重新訓(xùn)練

訓(xùn)練結(jié)果審查

……

訓(xùn)練結(jié)果滿意

通過(guò)Tensorflow的結(jié)果,計(jì)算最優(yōu)傳輸路徑

當(dāng)我們經(jīng)過(guò)大量的訓(xùn)練和調(diào)優(yōu)后,得到了每?jī)蓚€(gè)(需要的)服務(wù)器節(jié)點(diǎn)間的訓(xùn)練模型,通過(guò)這個(gè)模型,輸入當(dāng)前文件大小、時(shí)間、服務(wù)器和網(wǎng)絡(luò)的測(cè)試狀態(tài),就可以算出一個(gè)預(yù)期的下載傳輸耗時(shí)。

我們把節(jié)點(diǎn)間兩兩計(jì)算的結(jié)果,代入到網(wǎng)絡(luò)拓?fù)鋱D中

使用最短路徑算法,計(jì)算最優(yōu)(和次優(yōu))的傳輸路徑

這里是的算法為Dijkstra算法 (翻譯為 迪杰斯特拉算法)

這是一個(gè)非常經(jīng)典的最短路徑算法,就不占篇幅介紹了,有興趣的同學(xué)可以自行搜索。

整體處理流程回顧

首先,收集訓(xùn)練數(shù)據(jù),使用zabbix數(shù)據(jù)、網(wǎng)絡(luò)測(cè)速數(shù)據(jù)、文件大小、當(dāng)前時(shí)間信息為輸入,下載耗時(shí)為輸出,進(jìn)行模型訓(xùn)練,并對(duì)模型做持續(xù)的優(yōu)化。

使用當(dāng)前的zabbix數(shù)據(jù)、網(wǎng)絡(luò)測(cè)速數(shù)據(jù)、文件大小、當(dāng)前時(shí)間信息為輸入,使用訓(xùn)練好的模型做計(jì)算,得到預(yù)期的下載結(jié)果。

相關(guān)節(jié)點(diǎn),兩兩計(jì)算預(yù)期結(jié)果,構(gòu)成一個(gè)傳輸網(wǎng)絡(luò),使用Dijkstra算法計(jì)算傳輸網(wǎng)絡(luò)內(nèi)的最小路徑。

四, 未來(lái)展望

使用最大流算法進(jìn)行文件分片下載

目前的算法針對(duì)的是整體文件進(jìn)行下載,實(shí)際上,流媒體服務(wù)器早已經(jīng)實(shí)現(xiàn)了文件虛擬切割,http協(xié)議也有range請(qǐng)求,在此基礎(chǔ)上,把一個(gè)文件分割,通過(guò)多條鏈路同時(shí)下載,將提升下載速度,也將進(jìn)一步提升網(wǎng)絡(luò)利用率。

具體可參考EK 算法,Dinic算法等。

使用最小費(fèi)用最大流對(duì)最大流算法進(jìn)行改進(jìn)

考慮到每個(gè)機(jī)房,每條線路建設(shè)時(shí),成本不一樣。

在最大流有多組解時(shí),給每條邊在附上一個(gè)單位費(fèi)用的量,在滿足最大流時(shí)的計(jì)算最小費(fèi)用是多少,這樣對(duì)于成本使用將更精細(xì),機(jī)房如需擴(kuò)容也將做成指導(dǎo)。

在直播領(lǐng)域的應(yīng)用

目前點(diǎn)播源站內(nèi)部分發(fā),進(jìn)行模型訓(xùn)練采用的輸入數(shù)據(jù)是上述數(shù)據(jù),結(jié)果是下載耗時(shí);對(duì)于直播來(lái)說(shuō),可以使用和直播相關(guān)的數(shù)據(jù)進(jìn)行組合與訓(xùn)練,結(jié)果為QoS,生成新的模型,對(duì)直播回源的內(nèi)部調(diào)度預(yù)測(cè)最佳鏈路。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉