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

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


在TensorFlow PS架構(gòu)中 , 包括Embedding向量在內(nèi)的共享參數(shù)都存儲在PS上 , 并通過網(wǎng)絡(luò)與Worker交互 , 在進(jìn)行Embedding查詢過程中 , 往往會涉及如下兩個環(huán)節(jié):
由于稀疏參數(shù)的性質(zhì) , 從樣本中抽取得到的待查詢Embedding ID , 它的重復(fù)率往往高達(dá)70%~90% , 如果不進(jìn)行去重查詢 , 不論是對HashTable的查詢還是網(wǎng)絡(luò)的傳輸 , 都會帶來不小的壓力 。因此 , 通常會在查詢前進(jìn)行Unique操作 。在大規(guī)模稀疏場景中 , 為了存儲千億規(guī)模的參數(shù) , 會有多個PS機(jī)器共同承載 。而Worker端會負(fù)責(zé)對查詢請求按照設(shè)定的路由規(guī)則進(jìn)行切分 , 這里通常會在查詢前進(jìn)行DynamicPartition動作 。
通常這兩個過程會利用TensorFlow既有的算子進(jìn)行搭建 , 但在實際使用中 , 我們發(fā)現(xiàn)它并不是很高效 , 主要問題在于:
Unique算子原生實現(xiàn) , 它內(nèi)部使用的內(nèi)存分配策略較為低效 。使用了兩倍輸入?yún)?shù)(Embedding ID)的大小進(jìn)行內(nèi)存分配 , 但由于輸入?yún)?shù)較大 , 而且重復(fù)率高 , 導(dǎo)致HashTable創(chuàng)建過大且非常稀疏 。幾乎每次插入都會產(chǎn)生一次minor_page_fault , 導(dǎo)致HashTable性能下降 。我們使用Intel Vtune驗證了這一點(diǎn)(參見圖18) 。Unique和Dynamic Partition算子存在冗余數(shù)據(jù)遍歷 , 這些操作其實可以在一次數(shù)據(jù)遍歷中全部做完 , 節(jié)省掉算子切換、冗余數(shù)據(jù)遍歷的耗時 。

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


圖18 Unique算子內(nèi)部出現(xiàn)DRAM Bound問題
總結(jié)來說 , HashTable開辟過大會導(dǎo)致大量的minor_page_fault , 導(dǎo)致訪存的時間增加 , HashTable過小又可能會導(dǎo)致擴(kuò)容 。我們采用了基于啟發(fā)式算法的內(nèi)存自適應(yīng)Unique算子實現(xiàn) , 通過對訓(xùn)練歷史重復(fù)率的統(tǒng)計 , 我們可以得到一個相對合理的HashTable大小 , 來提高訪存的性能;另外Unique算子內(nèi)HashTable的具體選擇上 , 經(jīng)過我們的多種測試 , 選擇了Robin HashTable替換了原生TF中的實現(xiàn) 。
進(jìn)一步 , 我們對圍繞Embedding ID的Unique和Partition環(huán)節(jié)進(jìn)行了算子合并 , 簡化了邏輯實現(xiàn) 。經(jīng)過上述的優(yōu)化 , Unique單算子可以取得51%的加速 , 在真實模型端到端上可以獲得10%左右的性能提升 , 算子總數(shù)量降低了4% 。
在整個關(guān)鍵算子優(yōu)化的過程中 , Intel公司的林立凡、張向澤、高明進(jìn)行大量的技術(shù)支持 , 我們也復(fù)用了他們的部分優(yōu)化工作 , 在此深表感謝!
4 大規(guī)模稀疏算法建模
大規(guī)模稀疏能力在業(yè)務(wù)落地的過程中 , 算法層面還需要從特征和模型結(jié)構(gòu)上進(jìn)行對應(yīng)升級 , 才能拿到非常好的效果 。其中外賣廣告從業(yè)務(wù)特點(diǎn)出發(fā) , 引入大規(guī)模稀疏特征完成外賣場景下特征體系的升級 , 提供了更高維的特征空間和參數(shù)空間 , 增強(qiáng)了模型的擬合能力 。重新設(shè)計了面向高維稀疏場景的特征編碼方案 , 解決了特征編碼過程中的特征沖突問題 , 同時編碼過程去掉了部分冗余的特征哈希操作 , 一定程度上簡化了特征處理邏輯 , 并降低了特征計算的耗時 。
在系統(tǒng)層面 , 面對百億參數(shù)、百億樣本以上量級的大規(guī)模稀疏模型的訓(xùn)練 , 會帶來訓(xùn)練迭代效率的大大降低 , 單次實驗從一天以內(nèi) , 增長到一周左右 。美團(tuán)機(jī)器學(xué)習(xí)平臺訓(xùn)練引擎團(tuán)隊 , 除了上述TensorFlow框架層面的優(yōu)化、還針對業(yè)務(wù)模型進(jìn)行了專項優(yōu)化 , 整體吞吐優(yōu)化了8到10倍(如果投入更多計算資源 , 可以進(jìn)一步加速) , 大大提升業(yè)務(wù)的迭代效率 , 助力外賣廣告業(yè)務(wù)取得了較為明顯的提升 。

推薦閱讀