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

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


2.2 系統(tǒng)負載分析
2.2.1 問題分析工具鏈
TensorFlow是一個非常龐大的開源項目 , 代碼有幾百萬行之多 , 原生系統(tǒng)的監(jiān)控指標太粗 , 且不支持全局的監(jiān)控 , 如果要定位一些復雜的性能瓶頸點 , 就比較困難 。我們基于美團已經(jīng)開源的監(jiān)控系統(tǒng)CAT[2] , 構建了TensorFlow的細粒度監(jiān)控鏈路(如下圖1所示) , 可以精準定位到性能的瓶頸問題 。

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

圖1 TensorFlow PS架構全鏈路監(jiān)控
同時 , 在性能優(yōu)化的過程中 , 會涉及到大量的性能測試和結果分析 , 這也是一個非常耗費人力的工作 。我們抽象了一套自動化的實驗框架(如下圖2所示) , 可以自動化、多輪次地進行實驗 , 并自動采集各類監(jiān)控指標 , 然后生成報告 。

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

圖2 自動化實驗框架
2.2.2 業(yè)務視角的負載分析
在推薦系統(tǒng)場景中 , 我們使用了TensorFlow Parameter Server[3](簡稱PS)異步訓練模式來支持業(yè)務分布式訓練需求 。對于這套架構 , 上述的業(yè)務變化會帶來什么樣的負載變化?如下圖3所示:

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

圖3 TensorFlow PS架構大規(guī)模訓練負載分析
總結來看 , 主要包括通信壓力、PS并發(fā)壓力、Worker計算壓力 。對于分布式系統(tǒng)來說 , 通常是通過橫向擴展來解決負載問題 。雖然看來起可以解決問題 , 但從實驗結果來看 , 當PS擴展到一定數(shù)量后 , 單步訓練時間反而會增加 , 如下圖4所示:

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

圖4 擴展PS提升訓練性能實驗
導致這種結果的核心原因是:Worker單步訓練需要和所有的PS通信同步完成 , 每增加1個PS要增加N條通信鏈路 , 這大大增加了鏈路延遲(如下圖5所示) 。而一次訓練要執(zhí)行上百萬、上千萬步訓練 。最終導致鏈路延遲超過了加PS算力并發(fā)的收益 。

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

圖5 增加PS帶來的鏈路開銷
而對于這個系統(tǒng) , 優(yōu)化的核心難點在于:如何在有限的PS實例下 , 進行分布式計算的優(yōu)化 。
3 優(yōu)化實踐
3.1 大規(guī)模稀疏參數(shù)介紹
對于推薦系統(tǒng)模型 , 絕大多數(shù)參數(shù)都是稀疏參數(shù) , 而對稀疏參數(shù)來說有一個非常重要的操作是Embedding , 這個操作通常也是負載最重的 , 也是后續(xù)優(yōu)化的重點 。由于我們對稀疏參數(shù)進行了重新定義 , 后續(xù)的優(yōu)化也基于此之上 , 所以我們先介紹一下這部分的工作 。
在原生的TensorFlow中構建Embedding模塊 , 用戶需要首先創(chuàng)建一個足夠裝得下所有稀疏參數(shù)的Variable , 然后在這個Variable上進行Embedding的學習 。然而 , 使用Variable來進行Embedding訓練存在很多弊端:
Variable的大小必須提前設定好 , 對于百億千億的場景 , 該設定會帶來巨大的空間浪費;訓練速度慢 , 無法針對稀疏模型進行定制優(yōu)化 。

推薦閱讀