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

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


我們首先解決了有無的問題 , 使用HashTable來替代Variable , 將稀疏特征ID作為Key , Embedding向量作為Value 。相比原生使用Variable進(jìn)行Embedding的方式 , 具備以下的優(yōu)勢:
HashTable的大小可以在訓(xùn)練過程中自動伸縮 , 避免了開辟冗余的存儲空間 , 同時用戶無需關(guān)注申請大小 , 從而降低了使用成本 。針對HashTable方案實(shí)施了一系列定制優(yōu)化 , 訓(xùn)練速度相比Variable有了很大的提高 , 可以進(jìn)行千億規(guī)模模型的訓(xùn)練 , 擴(kuò)展性較好 。得益于稀疏參數(shù)的動態(tài)伸縮 , 我們在此基礎(chǔ)上支持了Online Learning 。API設(shè)計(jì)上保持與社區(qū)版本兼容 , 在使用上幾乎與原生Variable一致 , 對接成本極低 。
簡化版的基于PS架構(gòu)的實(shí)現(xiàn)示意如下圖6所示:

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


圖6 支撐大規(guī)模稀疏參數(shù)的HashTable方案
核心流程大致可以分為以下幾步:
稀疏特征ID(通常我們會提前完成統(tǒng)一編碼的工作)進(jìn)入Embedding模塊 , 借助TensorFlow搭建的Send-Recv機(jī)制 , 這些稀疏特征ID被拉取到PS端 , PS端上的Lookup等算子會實(shí)際從底層HashTable中查詢并組裝Embedding向量 。上述Embedding向量被Worker拉回進(jìn)行后續(xù)訓(xùn)練 , 并通過反向傳播計(jì)算出這部分參數(shù)的梯度 , 這些梯度進(jìn)一步被位于PS端的優(yōu)化器拉回 。PS端的優(yōu)化器首先調(diào)用Find算子 , 從HashTable獲取到梯度對應(yīng)的原始稀疏參數(shù)向量和相應(yīng)的優(yōu)化器參數(shù) , 最終通過優(yōu)化算法 , 完成對Embedding向量和優(yōu)化器參數(shù)的更新計(jì)算 , 再通過insert算子插入HashTable中 。
3.2 分布式負(fù)載均衡優(yōu)化
這部分優(yōu)化 , 是分布式計(jì)算的經(jīng)典優(yōu)化方向 。PS架構(gòu)是一個典型的“水桶模型” , 為了完成一步訓(xùn)練 , Worker端需要和所有PS完成交互 , 因此PS之間的平衡就顯得非常重要 。但是在實(shí)踐中 , 我們發(fā)現(xiàn)多個PS的耗時并不均衡 , 其中的原因 , 既包括TensorFlow PS架構(gòu)簡單的切圖邏輯(Round-Robin)帶來的負(fù)載不均衡 , 也有異構(gòu)機(jī)器導(dǎo)致的不均衡 。
對于推薦模型來說 , 我們的主要優(yōu)化策略是 , 把所有稀疏參數(shù)和大的稠密參數(shù)自動、均勻的切分到每個PS上 , 可以解決大多數(shù)這類問題 。而在實(shí)踐過程中 , 我們也發(fā)現(xiàn)一個比較難排查的問題:原生Adam優(yōu)化器 , 實(shí)現(xiàn)導(dǎo)致PS負(fù)載不均衡 。下面會詳細(xì)介紹一下 。
在Adam優(yōu)化器中 , 它的參數(shù)優(yōu)化過程需要兩個β參與計(jì)算 , 在原生TensorFlow的實(shí)現(xiàn)中 , 這兩個β是所有需要此優(yōu)化器進(jìn)行優(yōu)化的Variabl(或HashTable)所共享的 , 并且會與第一個Variable(名字字典序)落在同一個PS上面 , 這會帶來一個問題:每個優(yōu)化器只擁有一個β
和一個β
 , 且僅位于某個PS上 。因此 , 在參數(shù)優(yōu)化的過程中 , 該P(yáng)S會承受遠(yuǎn)高于其他PS的請求 , 從而導(dǎo)致該P(yáng)S成為性能瓶頸 。

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


圖7 Adam優(yōu)化算法
但是通過觀察Adam的優(yōu)化算法 , 我們可以看到β
和β
都是常量 , 且藍(lán)色高亮的部分都是相對獨(dú)立的計(jì)算過程 , 各個PS之間可以獨(dú)立完成 ?;谶@樣的發(fā)現(xiàn) , 優(yōu)化的方法也就非常直觀了 , 我們?yōu)槊恳粋€PS上的Adam優(yōu)化器冗余創(chuàng)建了β參數(shù) , 并在本地計(jì)算t和alpha值 , 去除了因此負(fù)載不均導(dǎo)致的PS熱點(diǎn)問題 。

推薦閱讀