日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios yymodel 将字典转数组模型_TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架

發(fā)布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios yymodel 将字典转数组模型_TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)練樣本規(guī)模大。比如對于360廣告場景會有超過100TB的訓(xùn)練數(shù)據(jù)。
  • 模型參數(shù)多。比如對于360廣告場景會有超過100億的參數(shù)。
  • 使用單機模式訓(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ī)模稀疏特征的模型不太友好,主要問題有:

  • TensorFlow支持的特征維度有限。一般的,TensorFlow需要對每一個特征定義一個矩陣,這個矩陣受限于內(nèi)存,往往不能太大。
  • TensorFlow2.x對參數(shù)服務(wù)器的支持較少,使用同步訓(xùn)練的模式會比較慢。
  • TensorNet——基于TensorFlow的專為大規(guī)模稀疏特征模型優(yōu)化的分布式訓(xùn)練框架

    TensorNet在復(fù)用TensorFlow的所有功能的基礎(chǔ)之上,專門定制使其支持大規(guī)模稀疏特征模型的訓(xùn)練。TensorNet的主要提升包括:

  • 使TensorFlow支持的稀疏特征的維度接近于無限。
  • 使TensorFlow2.2 keras支持基于參數(shù)服務(wù)器的異步訓(xùn)練模式,極大的提升了訓(xùn)練速度。在360真實業(yè)務(wù)場景下我們將原來的離線訓(xùn)練時間由3.5小時提升到了25分鐘。
  • 配合TensorNet通過split graph的方法可以對在線推理的性能進行優(yōu)化。在360真實場景測試中我們發(fā)現(xiàn)有近 35% 的性能提升。
  • 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將sparse參數(shù)和與dense參數(shù)分別使用不同的parameter server管理。
  • TensorNet不設(shè)單獨的parameter server節(jié)點。在每個worker中都會維護一個sparse paramter server和dense parameter server。這省去了開發(fā)人員管理ps節(jié)點和worker節(jié)點的不少麻煩。
  • TensorNet對sparse參數(shù)使用分布式哈希表按照哈希值均勻分布不同的節(jié)點上。這相較于TensorFlow需要讓開發(fā)者根據(jù)自身情況將tensor分布在不同的ps節(jié)點上的方法更加靈活,這不僅減小了節(jié)點通信熱點的概率,還減輕了開發(fā)者的工作量。
  • TensorNet將模型的所有dense參數(shù)合并后使用分布式數(shù)組切分到不同的機器上,每次pull和push參數(shù)的時候只有一次網(wǎng)絡(luò)請求。相較于TensorFlow對每個tensor都有一次網(wǎng)絡(luò)請求的方法極大的減少了網(wǎng)絡(luò)請求的次數(shù)從而提升了模型訓(xùn)練的速度。
  • TensorNet異步訓(xùn)練架構(gòu)

    TensorNet同步訓(xùn)練架構(gòu)

    TensorNet同步訓(xùn)練架構(gòu)基本與TensorFlow的MultiWorkerMirroredStrategy架構(gòu)一致,主要區(qū)別如下:

  • TensorNet使用單獨的sparse parameter server節(jié)點保存所有sparse參數(shù)。通過parameter server可以解決TensorFlow支持的sparse特征維度不能太大的問題。
  • TensorNet對sparse參數(shù)做了特殊的定制化的同步。TensorNet在訓(xùn)練時由于每個batch內(nèi)的sparse參數(shù)的`IndexedSlices`指向的內(nèi)容與TensorFlow默認的不同,我們對此做了定制化的同步。
  • TensorNet同步訓(xùn)練架構(gòu)

    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的主要處理步驟如下:

  • 定義模型時定義userid的embedding矩陣的維度為一個batch內(nèi)所有用戶id個數(shù)的最大值。
  • 訓(xùn)練模型時得到當(dāng)前batch內(nèi)的所有用戶id。
  • 將用戶id排序,并按照先后順序為每個userid分配索引,索引從0開始,對應(yīng)為下圖中的virtual sparse feature。
  • 使用userid從parameter server中獲取相應(yīng)的embedding向量,然后按照其對應(yīng)的索引放置到embedding矩陣中。
  • 使用轉(zhuǎn)換后的virtual sparse feature作為模型的輸入。
  • TensorNet中的實現(xiàn)

    從上述可見,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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。