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