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