日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

TensorFlow在美團(tuán)推薦系統(tǒng)中的分布式訓(xùn)練優(yōu)化實(shí)踐( 六 )


針對(duì)上面的問題 , 我們采用了Multi RequestBuffer與CQ負(fù)載均衡優(yōu)化 , 破除了在請(qǐng)求發(fā)送和請(qǐng)求應(yīng)答環(huán)節(jié)可能存在的吞吐瓶頸 。
3.3.4 Send-Driven & Rendezvous-Bypass
對(duì)于Tensorflow PS架構(gòu)熟悉的同學(xué)會(huì)了解 , 一整張計(jì)算圖被切割為Worker端和PS端后 , 為了使兩張計(jì)算圖能夠彼此交換數(shù)據(jù) , 建立了基于Rendezvous(匯合點(diǎn))機(jī)制的異步數(shù)據(jù)交換模式 。如下圖12所示:

TensorFlow在美團(tuán)推薦系統(tǒng)中的分布式訓(xùn)練優(yōu)化實(shí)踐


圖12 TensoFlow切圖之Send-Recv對(duì)添加
基于上圖的切圖邏輯 , Recv算子代表著這一側(cè)計(jì)算圖有Tensor的需求 , 而Tensor的生產(chǎn)者則位于與之配對(duì)的另一設(shè)備上的Send算子背后 。
在具體實(shí)現(xiàn)上 , Tensorflow實(shí)現(xiàn)了Recv-Driven的數(shù)據(jù)交換模式 , 如上圖所示 , 位于DeviceA和DeviceB的兩張計(jì)算圖會(huì)異步并發(fā)的執(zhí)行 , 位于DeviceB的Recv執(zhí)行時(shí)會(huì)發(fā)起一條RPC請(qǐng)求發(fā)往DeviceA , DeviceA收到請(qǐng)求后 , 會(huì)將請(qǐng)求路由到Rendezvous中 , 如果在當(dāng)中發(fā)現(xiàn)所需要的數(shù)據(jù)已經(jīng)生產(chǎn)好 , 并被Send算子注冊(cè)了進(jìn)來 , 那么就地獲取數(shù)據(jù) , 返回給DeviceB;如果此時(shí)數(shù)據(jù)還沒有生產(chǎn)好 , 則將來自于DeviceB的Recv請(qǐng)求注冊(cè)在Rendezvous中 , 等待后續(xù)DeviceA生產(chǎn)好后 , 由Send算子發(fā)送過來 , 找到注冊(cè)的Recv , 觸發(fā)回調(diào) , 返回?cái)?shù)據(jù)給DeviceB 。
我們看到 , 匯合點(diǎn)機(jī)制優(yōu)雅地解決了生產(chǎn)者消費(fèi)者節(jié)奏不同情況下數(shù)據(jù)交換的問題 。不過Recv-Driven的模式也引入了兩個(gè)潛在的問題:
據(jù)我們的觀察 , 在實(shí)際業(yè)務(wù)模型中 , 在Rendezvous中Recv算子等待Send算子的比例和Send算子等待Recv算子的比例相當(dāng) , 也就是說對(duì)于Send等到Recv的數(shù)據(jù) , 在Send準(zhǔn)備好的那一剎那就可以發(fā)給對(duì)端 , 但是由于機(jī)制實(shí)現(xiàn)問題 , 還是等待Recv算子過來 , 才將數(shù)據(jù)拉取回去 , 通信過程耗時(shí)較長 。Rendezvous作為一個(gè)數(shù)據(jù)交換的熱點(diǎn) , 它內(nèi)部的邏輯開銷并不低 。
針對(duì)上面提到的問題 , 我們?cè)赗DMA上實(shí)現(xiàn)了另外一種數(shù)據(jù)交換的模式 , 叫做Send-Driven模式 。與Recv-Driven模式相對(duì) , 顧名思義就是有Send算子直接將數(shù)據(jù)寫到Recv端 , Recv端接收數(shù)據(jù)并注冊(cè)到本地Rendezvous中 , Recv算子直接從本地的Rendezvous中獲取數(shù)據(jù) 。具體流程如下圖13所示:

TensorFlow在美團(tuán)推薦系統(tǒng)中的分布式訓(xùn)練優(yōu)化實(shí)踐


圖13 原生的Recv-Driven與補(bǔ)充的Send-Driven機(jī)制
從圖中可以看到 , 相較于Recv-Driven模式 , Send-Driven模式的通信流程得到了比較大的簡化 , 另外在數(shù)據(jù)ready后立即發(fā)送的特性 , 跳過了一側(cè)的Rendezvous , 并且對(duì)于生產(chǎn)者先于消費(fèi)者的情況 , 可以加快消費(fèi)端數(shù)據(jù)獲取的速度 。
3.4 延遲優(yōu)化
這部分優(yōu)化 , 也是分布式計(jì)算的經(jīng)典優(yōu)化方向 。整個(gè)流程鏈路上那些可以精簡、合并、重疊需要不斷去挖掘 。對(duì)于機(jī)器學(xué)習(xí)系統(tǒng)來說 , 相比其它的系統(tǒng) , 還可以用一些近似的算法來做這部分工作 , 從而獲得較大的性能提升 。下面介紹我們?cè)趦蓚€(gè)這方面做的一些優(yōu)化實(shí)踐 。
3.4.1 稀疏域參數(shù)聚合
在啟用HashTable存儲(chǔ)稀疏參數(shù)后 , 對(duì)應(yīng)的 , 一些配套參數(shù)也需要替換為HashTable實(shí)現(xiàn) , 這樣整個(gè)計(jì)算圖中會(huì)出現(xiàn)多張HashTable以及大量的相關(guān)算子 。在實(shí)踐中 , 我們發(fā)現(xiàn)需要盡量降低Lookup/insert等算子的個(gè)數(shù) , 一方面降低PS的負(fù)載 , 一方面降低RPC QPS 。因此 , 針對(duì)稀疏模型的常見用法 , 我們進(jìn)行了相關(guān)的聚合工作 。

推薦閱讀