VITIS 是一個(gè)用于開(kāi)發(fā)軟件和硬件的統(tǒng)一軟件平臺(tái),將 Vivado 和其他組件用于 Xilinx FPGA SoC 平臺(tái),如 ZynqMP UltraScale+ 和 Alveo 卡。VITIS SDK的關(guān)鍵組件,VITIS AI運(yùn)行時(shí)(VART),為在邊緣和云端部署終端ML/AI應(yīng)用程序提供了一個(gè)統(tǒng)一的接口。
機(jī)器學(xué)習(xí)中的推理是計(jì)算密集型的,需要高內(nèi)存帶寬和高性能計(jì)算,以滿足各種終端應(yīng)用的低延遲和高吞吐量需求。
維蒂斯人工智能工作流程
Xilinx Vitis AI 提供了一個(gè)工作流程,使用簡(jiǎn)單的流程在 Xilinx 深度學(xué)習(xí)處理單元 (DPU) 上部署深度學(xué)習(xí)推理應(yīng)用:
深度處理單元 (DPU) 是一個(gè)可配置的計(jì)算引擎,針對(duì)深度學(xué)習(xí)推理應(yīng)用的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了優(yōu)化,并放置在可編程邏輯 (PL) 中。DPU 包含高效且可擴(kuò)展的 IP 核,可進(jìn)行定制以滿足許多不同應(yīng)用的需求。DPU 定義自己的指令集,Vitis AI 編譯器生成指令。
VITIS AI編譯器以優(yōu)化的方式安排指令,以獲得最大的效能。
在 Xilinx ZynqMP UltraScale+ SoC 平臺(tái)上運(yùn)行任何 AI 應(yīng)用程序的典型工作流程包括以下內(nèi)容:
模型量化
模型編譯
模型優(yōu)化(可選)
構(gòu)建 DPU 可執(zhí)行文件
構(gòu)建軟件應(yīng)用程序
集成 VITIS AI 統(tǒng)一 API
編譯和鏈接混合 DPU 應(yīng)用程序
在 FPGA 上部署混合 DPU 可執(zhí)行文件
人工智能量化器
AI 量化器是一種用于量化過(guò)程的壓縮工具,通過(guò)將 32 位浮點(diǎn)權(quán)重和激活轉(zhuǎn)換為定點(diǎn) INT8。它可以在不丟失模型準(zhǔn)確信息的情況下降低計(jì)算復(fù)雜性。定點(diǎn)模型需要更少的內(nèi)存,因此提供比浮點(diǎn)實(shí)現(xiàn)更快的執(zhí)行速度和更高的電源效率。
人工智能編譯器
AI 編譯器將網(wǎng)絡(luò)模型映射到高效的指令集和數(shù)據(jù)流。編譯器的輸入是量化的 8 位神經(jīng)網(wǎng)絡(luò),輸出是 DPU 內(nèi)核 - 可執(zhí)行文件將在 DPU 上運(yùn)行。在這里,不支持的層需要部署在CPU中,或者可以自定義模型來(lái)替換和刪除那些不支持的操作。它還執(zhí)行復(fù)雜的優(yōu)化,如層融合、指令調(diào)度和片上存儲(chǔ)器的重用。
一旦我們能夠執(zhí)行 DPU,我們需要使用 Vitis AI 統(tǒng)一的 API 來(lái)初始化數(shù)據(jù)結(jié)構(gòu),初始化 DPU,在 CPU 上實(shí)現(xiàn) DPU 不支持的層,并根據(jù)需要在 PL/PS 上添加預(yù)處理和后處理。
人工智能優(yōu)化器
憑借其模型壓縮技術(shù),AI 優(yōu)化器可以將模型復(fù)雜性降低 5-50 倍,同時(shí)對(duì)準(zhǔn)確性的影響最小。這種深度壓縮將推理性能提升到一個(gè)新的水平。我們可以實(shí)現(xiàn)所需的稀疏性并將運(yùn)行時(shí)間縮短 2.5 倍。
AI 分析器
AI 探查器可以幫助分析推理查找導(dǎo)致端到端管道瓶頸的注意事項(xiàng)。性能分析器為設(shè)計(jì)人員提供了 DPU/CPU/內(nèi)存的通用時(shí)間線。此過(guò)程不會(huì)更改任何代碼,并且可以跟蹤函數(shù)并進(jìn)行分析。
人工智能運(yùn)行時(shí)
VITIS AI 運(yùn)行時(shí) (VART) 允許應(yīng)用程序使用統(tǒng)一的高級(jí)運(yùn)行時(shí) API 進(jìn)行邊緣和云部署,使其無(wú)縫且高效。一些主要功能包括:
異步作業(yè)提交
異步作業(yè)收集
多線程和多進(jìn)程執(zhí)行
Vitis AI還提供DSight,DExplorer,DDump和DLet等,用于各種任務(wù)執(zhí)行。
DSight & DExplorer
DPU IP 為特定內(nèi)核提供了多種配置,可根據(jù)網(wǎng)絡(luò)型號(hào)進(jìn)行選擇。DSight 告訴我們每個(gè) DPU 內(nèi)核的利用率百分比。它還提供了調(diào)度程序的效率,以便我們可以調(diào)整用戶線程。還可以查看性能數(shù)字,例如每層和每個(gè)DPU節(jié)點(diǎn)的MOPS,運(yùn)行時(shí)和內(nèi)存帶寬。
Softnautics選擇 Xilinx ZynqMP UltraScale+ 平臺(tái)進(jìn)行高性能和計(jì)算部署。它提供最佳的應(yīng)用處理、高度可配置的 FPGA 加速功能,以及 VITIS SDK,以加速高性能 ML/AI 推理。我們針對(duì)的一個(gè)這樣的應(yīng)用是用于 Covid-19 篩查的口罩檢測(cè)。其目的是根據(jù)各國(guó)政府對(duì) Covid-19 預(yù)防措施指南的要求,部署多流推理,用于對(duì)戴口罩的人進(jìn)行 Covid-19 篩查并實(shí)時(shí)識(shí)別違規(guī)行為。
我們準(zhǔn)備了一個(gè)數(shù)據(jù)集并選擇了預(yù)先訓(xùn)練的權(quán)重來(lái)設(shè)計(jì)一個(gè)用于掩模檢測(cè)和篩選的模型。我們通過(guò)TensorFlow框架訓(xùn)練和修剪了我們的自定義模型。這是人臉檢測(cè)和面具檢測(cè)的兩階段部署。這樣獲得的訓(xùn)練模型是通過(guò)前面章節(jié)中介紹的VITIS AI工作流程傳遞的。我們觀察到推理時(shí)間的速度是 CPU 的 10 倍。Xilinx 提供不同的調(diào)試工具和實(shí)用程序,在初始開(kāi)發(fā)和部署過(guò)程中非常有用。在初始部署階段,我們沒(méi)有檢測(cè)到掩碼和非掩碼類別。我們嘗試將基于 PC 的推理輸出與一個(gè)名為 Dexplorer 的調(diào)試實(shí)用程序之一的輸出相匹配。但是,調(diào)試模式和根導(dǎo)致問(wèn)題進(jìn)一步調(diào)試。運(yùn)行量化器后,我們可以使用更大的校準(zhǔn)圖像、迭代和檢測(cè)來(lái)調(diào)整輸出,視頻饋送的準(zhǔn)確率約為 96%。我們還嘗試使用 AI 分析器識(shí)別管道中的瓶頸,然后采取糾正措施通過(guò)各種方式消除瓶頸,例如使用 HLS 加速來(lái)計(jì)算后處理中的瓶頸。
審核編輯:郭婷
-
FPGA
+關(guān)注
關(guān)注
1630文章
21803瀏覽量
606435 -
soc
+關(guān)注
關(guān)注
38文章
4212瀏覽量
219204 -
人工智能
+關(guān)注
關(guān)注
1796文章
47811瀏覽量
240592
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論