最佳實踐案例)
推理調優(yōu)案例【免費下載鏈接】geGEGraph Engine是面向昇騰的圖編譯器和執(zhí)行器提供了計算圖優(yōu)化、多流并行、內存復用和模型下沉等技術手段加速模型執(zhí)行效率減少模型內存占用。 GE 提供對 PyTorch、TensorFlow 前端的友好接入能力并同時支持 onnx、pb 等主流模型格式的解析與編譯。項目地址: https://gitcode.com/cann/ge案例介紹本節(jié)面向推薦模型的推理場景通過一個完整的代碼示例結合推理階段的Profiling數據分析并定位影響模型吞吐性能的關鍵瓶頸并給出相應的優(yōu)化策略。內容涵蓋多實例并行、AICore控核策略以及批量H2DHost-to-Device傳輸等技術的實現方法并介紹這些技術對推理吞吐性能的影響。其中AI Core控核通過配置算子編譯與圖編譯中的“ge.aicoreNum”參數配置算子編譯時使用的AI Core核數。批量H2D通過調用接口aclrtMemcpyBatch來實現批量內存復制功能。多實例并行通過多線程創(chuàng)建多個推理實例來提升系統(tǒng)并發(fā)處理能力。為量化評估不同特性對推理吞吐性能的影響本實驗執(zhí)行10,000次推理任務本樣例模型輸入數據為構造的隨機值記錄單次推理耗時及總時延、計算模型吞吐量TPS與平均時延ms。如下是Atlas A3 訓練系列產品/Atlas A3 推理系列產品在不同配置下的吞吐量與時延表現|配置方案|BatchSize128|BatchSize256| |--|--|--| |單實例|745,55 TPS / 1.471ms|132,247 TPS / 1.685ms| |單實例批量H2D|131,191 TPS / 0.792ms|209,927 TPS / 1.030ms| |多實例并行(4)|155,104 TPS / 2.089ms|360,253 TPS / 2.034ms| |多實例并行(4)AI Core控核(16|16)|185,415 TPS / 1.797ms|384,163 TPS / 1.850ms| |多實例并行(4)AI Core控核(16|16)批量H2D|251,877 TPS / 1.285ms|493,065 TPS / 1.317ms|以單實例BatchSize128為基準數據從上述表格可以看出批量H2D可以顯著降低數據搬運開銷單實例場景下吞吐量提升75.9%時延降低52.9%。多實例并行吞吐量提升至單實例的2.08倍但伴隨時延增加41.7%。以多實例并行BatchSize128為基準數據從上述表格可以看出AI Core控核有效避免多實例并行時的資源競爭吞吐量提升19.5%時延下降13.9%。以多實例并行(4)AI Core控核(16|16)批量H2DBatchSize128為基準數據從上述表格可以看出增大BatchSize對調度密度優(yōu)化效果顯著256 BatchSize場景下吞吐量較128提升95.7%時延增幅7.9%。該特性僅在如下產品型號支持Ascend 950PR/Ascend 950DTAtlas A3 訓練系列產品/Atlas A3 推理系列產品Atlas A2 訓練系列產品/Atlas A2 推理系列產品分析瓶頸點基準用例配置如下表所示基準用例中使用單實例、不使用AI Core控核策略、不開啟批量H2D傳輸技術參考Profiling性能數據采集開啟Profiling性能數據采集功能。表 1基準用例配置|推理次數|BatchSize|多實例并行|AI Core控核|批量H2D| |--|--|--|--|--| |10000|128|1|不控制可用核數|不開啟|數據搬運瓶頸基于Profiling數據分析單次推理前需執(zhí)行多次28獨立H2D數據搬運操作導致數據準備階段NPU處于空閑狀態(tài)整體數據搬運耗時占比顯著53.6%0.740230/1.383355數據分析見下圖所示。圖 1單次推理profiling數據分析 內核粒度不足算子調度存在間隙算子執(zhí)行時間很短1us-5us算子間存在依賴關系導致NPU在算子執(zhí)行間隙產生細小空泡BubblesFree空閑次數539998資源利用率不足10%計算時間/總時間1826.548713/17889.715647詳細數據請參見圖3。圖 2算子執(zhí)行時間 行時間?utm_sourcegitcode_repo_files)圖 3空泡和資源利用率 設計優(yōu)化方案針對上述問題可供使用的優(yōu)化策略如下多實例并行通過多線程交錯執(zhí)行推理任務填補算子間空泡提升NPU利用率。但并行推理可能導致資源競爭增加推理延遲應合理控制并行度以避免資源過度爭用。批量H2D優(yōu)化啟用批量數據搬運機制將多個輸入數據合并為單次H2D操作減少數據搬運次數并提升單次搬運量。AI Core資源控制配合多實例使用通過配置ge.aicoreNum參數限制單算子可使用的AI Core數量如8|8平衡資源分配提高并行的同時避免過度競爭。增大BatchSize增大單次推理BatchSize提升算子粒度與調度密度降低調度開銷占比。下面給出批量H2D-多實例并行-AI Core控核多策略疊加場景的推理效果驗證。驗證優(yōu)化方案該場景配置如下表所示使用多實例并行、配置AI Core控核策略開啟批量H2D傳輸技術參考Profiling性能數據采集開啟Profiling性能數據采集功能。表 2批量H2D-多實例-控核用例配置|推理次數|BatchSize|多實例并行|AI Core控核|批量H2D| |--|--|--|--|--| |10000|5096|6|8|8|true|結果驗證如下數據搬運啟用批量數據搬運機制將多個輸入數據合并為單次H2D操作單次推理數據搬運次數顯著降低28 --2數據搬運耗時占比降低53.6% --10.4%0.398185/3.820395詳細數據請參見下圖。圖 4啟用批量數據搬運Profiling數據分析 內核粒度不足算子調度間隙通過合理的并行和控核可以抹掉算子間隙通過增大BatchSize改善算子粒度提高調度密度減少調度開銷占比空泡數量降低81.3%對比圖3中的Free空閑次數539998資源利用率提升至72%計算時間/總時間4390.608297/6086.974405詳細數據請參見圖6。圖 5增大BatchSize改善算子粒度 圖 6空泡和資源利用率 【免費下載鏈接】geGEGraph Engine是面向昇騰的圖編譯器和執(zhí)行器提供了計算圖優(yōu)化、多流并行、內存復用和模型下沉等技術手段加速模型執(zhí)行效率減少模型內存占用。 GE 提供對 PyTorch、TensorFlow 前端的友好接入能力并同時支持 onnx、pb 等主流模型格式的解析與編譯。項目地址: https://gitcode.com/cann/ge創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考