ios yymodel 将字典转数组模型_TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架
TensorNet是什么?
TensorNet是一個構(gòu)建在TensorFlow之上針對廣告推薦等大規(guī)模稀疏場景優(yōu)化的分布式訓(xùn)練框架。TensorNet的目標(biāo)是讓所有使用TensorFlow的開發(fā)者可以快速的、方便的訓(xùn)練出稀疏參數(shù)超過百億的超大模型。
訓(xùn)練帶有大規(guī)模稀疏特征模型的主要挑戰(zhàn)
在廣告、搜索、推薦等場景下的深度模型都會存在大量的高維離散稀疏特征,訓(xùn)練帶有高維稀疏特征的模型主要有兩個問題:
使用單機模式訓(xùn)練模型速度慢,耗時長,嚴(yán)重制約了模型的迭代速度,使用分布式訓(xùn)練已經(jīng)成為業(yè)界標(biāo)準(zhǔn)。
使用TensorFlow訓(xùn)練稀疏特征模型的主要問題
TensorFlow是最受開發(fā)者歡迎的深度學(xué)習(xí)訓(xùn)練框架,但是TensorFlow對訓(xùn)練帶有大規(guī)模稀疏特征的模型不太友好,主要問題有:
TensorNet——基于TensorFlow的專為大規(guī)模稀疏特征模型優(yōu)化的分布式訓(xùn)練框架
TensorNet在復(fù)用TensorFlow的所有功能的基礎(chǔ)之上,專門定制使其支持大規(guī)模稀疏特征模型的訓(xùn)練。TensorNet的主要提升包括:
TensorNet分布式訓(xùn)練架構(gòu)
TensorNet支持異步和同步模式訓(xùn)練。異步模式在僅有CPU的集群中速度提升十分顯著,同步模式在網(wǎng)卡速度超過100GbE的GPU集群中表現(xiàn)突出。
TensorNet異步訓(xùn)練架構(gòu)
在僅有CPU的集群中使用參數(shù)服務(wù)器的異步訓(xùn)練模式是訓(xùn)練模型速度最快的方法,TensorNet異步訓(xùn)練架構(gòu)與TensorFlow的異步訓(xùn)練架構(gòu)有很大的區(qū)別:
TensorNet同步訓(xùn)練架構(gòu)
TensorNet同步訓(xùn)練架構(gòu)基本與TensorFlow的MultiWorkerMirroredStrategy架構(gòu)一致,主要區(qū)別如下:
TensorNet核心優(yōu)化
TensorNet最核心的優(yōu)化是將模型的embedding tensor優(yōu)化到了最小。如下圖所示,對于最簡單的wide&deep模型,如果在一個廣告系統(tǒng)中有3億用戶,那么就需要定義一個維度為3億的embedding矩陣,在訓(xùn)練模型時需要在這個3億維的矩陣上做embedding_lookup得到當(dāng)前batch內(nèi)的用戶的embedding信息,近而在embedding之上做更加復(fù)雜的操作。
TensorFlow中的實現(xiàn)TensorFlow中的實現(xiàn)在高維稀疏場景下,embedding矩陣太大,占用內(nèi)存多。很顯然當(dāng)特征較多的時候單機無法存儲整個模型。
TensorNet使用一個較小的,可以容納特征在一個batch內(nèi)所有數(shù)據(jù)的embedding矩陣代替TensorFlow默認實現(xiàn)中需要定義的較大的embedding矩陣。
如下圖所示,在batch_size設(shè)置為1024的場景下,對于用戶id特征,在TensorNet中只需要定義一個維度為1024的embedding矩陣,TensorNet的主要處理步驟如下:
從上述可見,TensorNet由于極大的減小了模型所需要的embedding矩陣,從而可以極大的減小內(nèi)存的開銷,以及通過parameter server的方式使得稀疏特征的維度可以支持到接近無限維,從而可以極大的提升模型的刻畫能力。
TensorNet Inference優(yōu)化
由于TensorNet只更改了模型的第一層,從而模型的inference也變得極其簡單。
在使用TensorNet構(gòu)造模型的時候,可以將模型切分為兩部分,如下圖所示,embedding_lookup_graph只在離線訓(xùn)練時使用,在線inference時只需要將sparse embedding導(dǎo)出成字典供inference_graph作為輸入即可,具體的請參考以下系列文章:
1. 為inference準(zhǔn)備——模型切分: https://github.com/Qihoo360/tensornet/blob/master/doc/tutorial/03-split-to-sub-graph.ipynb
2. 使用XLA方式進行在線預(yù)估: https://github.com/Qihoo360/tensornet/blob/master/doc/tutorial/04-deploy-tf-graph-online.ipynb
3. sparse embedding字典導(dǎo)出: https://github.com/Qihoo360/tensornet/blob/master/doc/tutorial/05-export-sparse-feature-embedding.ipynb
TensorNet中split graph inference方案TensorNet中split graph inference方案
在360內(nèi)部場景中我們測試發(fā)現(xiàn)通過split graph配合XLA AOT的方法性能提升近35%。
TensorNet開源及使用
TensorNet已經(jīng)成功落地應(yīng)用到了360廣告ctr預(yù)估相關(guān)的場景中,并取得了顯著的效果,我們已將代碼、文檔及我們在360廣告的應(yīng)用經(jīng)驗全部整理到了項目中,歡迎關(guān)注。
tensorNet主頁:https://github.com/Qihoo360/TensorNet
tensornet快速上手:https://github.com/Qihoo360/tensornet/blob/master/doc/tutorial/01-begin-with-wide-deep.ipynb
更多文檔請看:https://github.com/Qihoo360/TensorNet/README.md
聯(lián)系方式:張彥升(zhangyansheng@360.cn),姚磊(yaolei@360.cn)
微信交流群:
https://weixin.qq.com/g/AQYAAB0H54Ncc-QyDTtKD2l-4V19WXGdpbUfFa6QqwS8NphK5kZ5tWAD0_c342jf (二維碼自動識別)
總結(jié)
以上是生活随笔為你收集整理的ios yymodel 将字典转数组模型_TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广东南方地形地籍成图软件CASS10.1
- 下一篇: 各种格式的文件使用工具打开