《如何快速搭建全 GPU 加速的 AI 應用.pdf》由會員分享,可在線閱讀,更多相關《如何快速搭建全 GPU 加速的 AI 應用.pdf(19頁珍藏版)》請在三個皮匠報告上搜索。
1、MachineIntelligenceOf DamoGPU加速的AI應用如何快速搭建全在GPU上搭建復雜AI應用的最佳實踐青神阿里巴巴達摩院一機器智能技術MD#page#01AI應用服務趨勢和挑戰Contents02全GPUAI應用服務舉例目錄03Hummingbird框架介紹#page#01一級標題AI應用服務趨勢和挑戰#page#超勢AI應用服務趨勢和挑戰119硬件多樣化編程語言多模型多模態復雜計算圖異構硬件發展迅速,各種加速單元Python社區視頻能解碼Python訓練快速實現多個模型配合完成一個任務C+推理在線離線視頻圖片,音頻,NLP等多領域預處理(Resize,CSC)配合Nvid
2、iaXavier(DLA等)其他硬件加速器Mit#page#挑戰AI應用服務趨勢和挑戰硬件利用效率低多模型組織與并行O11GPU使用率無法達到100%單個模型無法完成復雜任務0-0單Batch推理+多進程實現壓滿GPU而不是多Batch推理多模型配合整體延時高無法完成實時性應用存在大量CPUGPU內存烤貝,速度低性能分析困難開發效率和開發者找到應用和系統瓶頸困難訓練G線上性能準以追蹤-100%Python推理-Python:性能低,并行度(GIL)低開發效率高-C+:性能高,并行度高,開發難度高大量Python開發者,C+開發者較少MiD#page#全GPUAI應用服務舉例實時視頻處理不止推理
3、#page#流程圖常見實時視頻處理應用流程跟蹤數據源視頻解碼一級模型二級模型三級模型其他業務模塊行人屬性行人特征抽取后處理行人機動車跟蹤業務相關內容預處理招圖視頻(流)解碼檢測模型預處理車牌識別車牌檢測模型推理后處理預處理常見問題編解碼問題3:預處理成為性能瓶頸問題2:HostDevice傳輸速度低問題1:多模型下實時性難保證使用CPU進行預處理,比如大量CPU和GPU之間的數據搬加入跟蹤需要10FPS的速度,只Resize等成為瓶頸運,PCI-E帶寬不夠,傳輸數據低有100ms的時間給解碼到跟蹤之間的處理問題4:性能分析困難問題6:視頻解碼成為瓶頸問題5:多模型并行推理性能低CPU解碼會占用
4、太多的CPU資源多模型并行,性嫩瓶頸分析困難多個模型并行推理,速度下降嚴解碼速度不夠造成推理模塊等待時間Log無法找到真正原因重#page#Tracker之間延時實時性同步執行流水線問題1:多模型下實時性難保證H264解碼H264解碼實時跟蹤Tracker之間延時檢測預處理檢測預處理檢測模型延時來自兩次調用Tracker的時間間隔檢測模型行人截圖預處理例如10FPS意味著100ms延時行人截圖預處理Feature提取模型順序執行:所有相加小于100msFeature提取模型Tracker更新流水線:兩個模塊之間小于100msTracker更新H264解碼時間(100ms)檢測預處理流水線檢測模
5、型參考CPU多級流水線設計,CPU多線程并行行人截圖預處理-GPU計算。Reactive架構:節點之間message發送Feature提取模型CPU計算可以靈活增加更多的處理節點Tracker更新一視頻解碼DAG邏輯上并行處理節點可以進一步升級成DAGMi#page#傳輸問題2:HostDevice傳輸速度低實際應用中的NsigntSystems截圖Profile到帶寬測試機PCI-E帶寬最差情況7.2GB13GB0.027GBmemcpyDt.Me.Begins:105.117sBogins:45.71468Ends:105.118s(+858.617us)Ends:45.94255DtoH
6、memcpy6,220,800bytesSource memory kind:Dein細:DPageablekimDestination memorykincPagcableThroughput:27.3021MiThroughput:7.24514GitonID:344524CorrelCorrelation ID:985048Host:Pageable內存MiD#page#Pinned Data TransferPageable Data Transfer傳輸問題2:HostDevice傳輸速度低(2)DRAMDRAMPinned MemoryPageable Memory Vs Pinn
7、ed MemoryPageable內存需要在Driver(Kernel)中進行多次搬運有限的copyengineMemCpMC.MemCp.GPU只有非常少的copyengine,導致計算kerne排隊Begins:104.924sDefault streamEnds:104.925s(+475.675us)Pinned Memory觀察是否在defaultstream上排隊DtoHmemcpy6,220,800bytesSource memory kind:Device13GBDestination memory kind:PinnedAvoid memory copyThroughput:
8、13.0778GiB/s盡量避免在Host和Device之間的CopyCorrelation ID:957926MiD10#page#預處理問題3:預處理成為性能瓶頸預處理時間減少使用GPU做全部預處理,而不是調用OpencV進行CPU預處理41NPPICSC: YUV - RGBNPPIResize:1080P-224(eg)MeanNorm:0-255-1.0f1.0fCustomize Kernel280整體處理能力提升240ODZ371601208040預處理檢測模型U頻處理M11#page#100m性能分析問題4:性能分析困難傳統的打日志方式很難得到系統頸173.548Nsight
9、Systems72.112Fetch.可視化profilingNVTX自定義Tag自定義Tag來和應用的執行聯系起來CUDA(TeslaT4,0000:D8:00.037.3%Otherstreams(615)10.2%Stream2295尋找瓶頸10.1%Stream2296性能瓶頸可能來自任何地方,¥100.0%Al Streams結合NsightSystems提供的信H47.8%Kernels息分析IMo.McmMO.MomMo.84.1%Memory21 streams hidden.MiD12#page#問題5:多模型并行推理性能低多模型并行推理會對GPU內顯存帶寬,以及計算SM帶來
10、壓力,需要在計算和傳輸上面都做做優化。多個同樣類型的模型在算法層面可以進行backbone合并節約計算量另外一方面需要關注在CopyEngine排隊現象,以及CUDAStream上的排隊現象模型合井減少計算量多個相同類型模型可以訓練相同的backbone,節約計算提高GPU效率多Batch推理盡量使用多Batch進行推理,在多模型情況下,極限性能和batch的數量有關系減少計算量低精度量化使用intBint4,利用TensorCores提升計算效率GhN13#page#問題6:視頻解碼成為瓶頸使用GPU的NVDEC模塊進行硬件解碼可One Thread pre Camera Channel以大
11、幅offloadCPU的解碼提算量口FFmpeg, NVIDIA Video Codec NPPIandinoCopyDemuxCSC5Decode口支持GPU硬件解碼QueueCplil口支持CPU軟件解碼FFmpegd&PNPPIMemAllc口可配置抽鎖,自適應碼流卡頓口可配置輸出GPU、CPUBufferOutputCopy5CSCDemuxDecodeQueue口可配置輸出格式,RGB24,BGR24,NV12口循環隊列管理GPU、CPU內存OutputSCopyCSCDecode口JPEG編解碼加速:nvJPEGQueueMiD14#page#總結優化總結并行推理優化實時計算圖低精
12、度量化,多batch,模型合并實時流水線,計算圖全GPU傳輸優化可視化性能分析應用服務PinnedMemory更容易分析出系統瓶頸結合應用自定義NVTXtag硬件加速解碼GPU預處理GPU加速視頻,圖片編解碼,避免傳輸避免傳輸,提高處理速度也加速處理15MiD#page#Hummingbird框架介紹快速搭建全GPU的AI應用服務#page#03邏輯圖樣式Hummingbird框架圖MobileWeb推理平臺桌面訓練應用層Linux DockerTraningPyforch TensorflowC+PyhonHtp目標:APIAPAPIServicePython APlHummingbird應
13、用框架支持達摩院內部復雜的多模預處理后處DAG&視頻輸繁碼模型推理Tenso組件層態AI應用和服務的在GPU理加速PipelineCPU,其他硬件上的快速開發和高效運行,和生產級別的GPU硬編解碼ResizeGPU加速Runtime/ DAGTensor(DlPack功能層穩定性模型推理CSCGPUProflerBFCAlocator-支持Python,C+應用開發其他推理引章CameliaDAG Schedule-Open Source In Future第三方FMoeoIVPEGPromatheJsPyoind11&BinderSDKIntel lppNdia NPNVMLARM CPUN
14、idia GPU其他XBS CPU推理硬件MiyD17#page#MachineIntelligencemo高性能GPU視頻編解碼,多batch推理DAG,GPU預處理,CPU+GPU并行計算圖(DAG)沉淀A推理應用最佳實踐快速搭建全GPU的應用服務易用,易集成工程效率&運算效率兼顧SDK形式而非系統,依賴少,侵入性低,可以被集成文檔:Python help,tutorial Ct+ SDK Doc,Markdown Doc易定制滿足達摩院內部A推理&訓練需求開發可以Python+CUDAGPU運行的擴展可以兼容CuPy.PyTorch,TensorFlow等Python框架MID#page#謝謝觀看Thanks工作為達摩院SAIL實驗室HCI團隊成員共同完成異構計算,分布式系統,訓練/推理引擎,長期招聘Zhenyu.Gualibaba-MID