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

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


以Adam優(yōu)化器為例 , 需要創(chuàng)建兩個slot , 以保存優(yōu)化中的動量信息 , 它的Shape與Embedding相同 。在原生優(yōu)化器中 , 這兩個Variable是單獨創(chuàng)建的 , 并在反向梯度更新的時候會去讀寫 。同理 , 使用HashTable方案時 , 我們需要同時創(chuàng)建兩張單獨的HashTable用來訓練m、v參數(shù) 。那么在前向 , 反向中需要分別對Embedding、 m、v進行一次Lookup和一次insert , 總共需要三次Lookup和三次insert 。
這里一個優(yōu)化點就是將Embedding、 m、v , 以及低頻過濾的計數(shù)器(見下圖14的Counting HashTable)聚合到一起 , 作為HashTable的Value , 這樣對稀疏參數(shù)的相關操作就可以聚合執(zhí)行 , 大大減少了稀疏參數(shù)操作頻次 , 降低了PS的壓力 。

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


圖14 基于HashTable的參數(shù)融合策略
該特性屬于一個普適型優(yōu)化 , 開啟聚合功能后 , 訓練速度有了顯著的提高 , 性能提升幅度隨著模型和Worker規(guī)模的變化 , 效果總是正向的 。在美團內部真實業(yè)務模型上 , 聚合之后性能相比非聚合方式能提升了45%左右 。
3.4.2 Embedding流水線優(yōu)化
流水線 , 在工業(yè)生產中 , 指每一個生產單位只專注處理某個片段的工作 , 以提高工作效率及產量的一種生產方式 。在計算機領域內 , 更為大家熟知的是 , 流水線代表一種多任務之間Overlap執(zhí)行的并行化技術 。例如在典型的RISC處理器中 , 用戶的程序由大量指令構成 , 而一條指令的執(zhí)行又可以大致分為:取指、譯碼、執(zhí)行、訪存、寫回等環(huán)節(jié) 。這些環(huán)節(jié)會利用到指令Cache、數(shù)據Cache、寄存器、ALU等多種不同的硬件單元 , 在每一個指令周期內 , 這5個環(huán)節(jié)的硬件單元會并行執(zhí)行 , 得以更加充分的利用硬件能力 , 以此提高整個處理器的指令吞吐性能 。處理器的指令流水線是一套復雜而系統(tǒng)的底層技術 , 但其中的思想在分布式深度學習框架中也被大量的使用 , 例如:
如果將分布式訓練簡單的抽象為計算和通信兩個過程 , 絕大多數(shù)主流的深度學習框架都支持在執(zhí)行計算圖DAG時 , 通信和計算的Overlap 。如果將深度模型訓練簡單的分為前向和反向 , 在單步內 , 由于兩者的強依賴性 , 無法做到有效并行 , 字節(jié)BytePS[8]中引入的通信調度打破了step iteration間的屏障 , 上一輪的部分參數(shù)更新完畢后 , 即可提前開始下輪的前向計算 , 增強了整體視角下前反向的Overlap 。百度AIBox[9]為了解決CTR場景GPU訓練時 , 參數(shù)位于主存 , 但計算位于GPU的問題 , 巧妙調度不同硬件設備 , 搭建起了主要利用CPU/主存/網卡的參數(shù)預準備階段和主要利用GPU/NVLink的網絡計算階段 , 通過兩個階段的Overlap達到更高的訓練吞吐 。
我們看到 , 在深度學習框架設計上 , 通過分析場景 , 可以從不同的視角發(fā)掘可并行的階段 , 來提高整體的訓練吞吐 。
對于大規(guī)模稀疏模型訓練時 , 核心模型流程是:先執(zhí)行稀疏參數(shù)的Embedding , 然后執(zhí)行稠密部分子網絡 。其中稀疏參數(shù)Embedding在遠端PS上執(zhí)行 , 主要耗費網絡資源 , 而稠密部分子網絡在本地Worker執(zhí)行 , 主要耗費計算資源 。這兩部分占了整個流程的大部分時間 , 在美團某實際業(yè)務模型上分別耗時占比:40%+、50%+ 。

推薦閱讀