www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > OpenFPGA

使用 PYNQ 可以輕松在 FPGA 上實現(xiàn)加速 AI/ML,而無需編寫一行 HDL!讓我們看看如何做到這一點...

介紹

機器學習是近幾年的熱門話題,有許多用例和應用。Zynq 和 Zynq MPSoC 等異構(gòu) SoC 則更具顯著優(yōu)勢,因為它們允許在可編程邏輯內(nèi)實現(xiàn)推理網(wǎng)絡。

在 PL 中實現(xiàn)推理網(wǎng)絡可顯著提高性能。當然,對于那些不熟悉機器學習的人來說,很難知道從哪里開始,尤其是如果想使用可編程邏輯來加速性能。

這就是 Pynq 框架的作用所在,它允許我們使用 Python 等更高級的語言,“訪問”可編程邏輯來執(zhí)行 ML 加速。

對于今天項目,我們將使用適用于 Pynq Z2、Z1 和 Ultra96 的Quantized / Binary Neural Network(BNN)。

該項目的重點是新參數(shù)的訓練和應用。

在 PYNQ 上配置 BNN

Pynq 映像啟動后,使用 Web 瀏覽器通過地址http://pynq:9090連接到 Pynq(如果要求輸入密碼,請輸入“xilinx”)

要安裝 BNN,需要使用終端窗口,可以在瀏覽器中通過選擇新建 -> 終端打開一個新的終端

我們將使用來自 NTNU 的 Xilinx BNN 存儲庫的 Fork,此 Fork 可以很好地展示如何訓練新網(wǎng)絡。

sudo pip3.6 install git+https://github.com/maltanar/BNN-PYNQ.git

下載和安裝需要幾秒鐘。

完成后,將看到一個新的 BNN 文件夾,其中有幾個新的notebook。

  • LFC - 全連接網(wǎng)絡,專為 28 x 28 灰色圖像輸入而設計
  • CNV - 專為 RGB 運算設計的卷積網(wǎng)絡,32 x 32 輸入

兩者的結(jié)構(gòu)如下所示。

測試安裝

安裝 BNN 后,下一步是運行一個(或多個)示例以確保安裝可以正常運行。

對于這個例子,決定運行 Road-Signs-Batch。這個notebook使用卷積網(wǎng)絡對路標進行分類。

此notebook僅針對由一個標志組成的小圖像進行測試,之后的測試將使用包含一個標志和其他圖像的大圖像。在這種情況下,算法會檢測標志并對其進行分類。

該算法的第一遍測試會產(chǎn)生幾個潛在的符號候選者,如下所示。

對該初始圖像應用閾值后可正確識別最終的標志上。

當然,我們可以在應用程序中使用我們自己提供的網(wǎng)絡。

訓練自己的網(wǎng)絡

要創(chuàng)建我們自己的網(wǎng)絡,我們需要幾樣東西,其中首先需要的是一組正確標記的訓練數(shù)據(jù)。在這個例子中,我們將使用 fashion mnist 數(shù)據(jù)集訓練神經(jīng)網(wǎng)絡,使其能夠識別服裝。

當我們?yōu)楦采w層構(gòu)建新網(wǎng)絡時,最重要的是確保我們訓練的網(wǎng)絡與我們希望使用的覆蓋層上的網(wǎng)絡相同。

Xilinx BNN GitHub 提供了一個訓練目錄,其中包含許多可用于創(chuàng)建新網(wǎng)絡的 Python 腳本,許多腳本可以充當模板。

在 BNN github 的 BNN->SRC->Training 目錄下,會發(fā)現(xiàn)許多可以幫助訓練新網(wǎng)絡的腳本

其中包括

  • lfc.py - 描述 LFC 網(wǎng)絡結(jié)構(gòu)
  • cnv.py - 描述 CNV 網(wǎng)絡結(jié)構(gòu)
  • binary_net.py-包含許多有助于訓練的函數(shù)
  • finnthesizer.py-執(zhí)行二進制格式的轉(zhuǎn)換
  • mnist.py - 訓練 LFC 網(wǎng)絡進行 mnist 字符識別 - LFC 網(wǎng)絡的良好模板
  • cifar10.py - 為 cifar 圖像表征網(wǎng)絡訓練 CNV 網(wǎng)絡 - CNV 網(wǎng)絡的良好模板

在這個例子中,將使用 fashion-mnist.py,它是 mnist.py 的改編版,用于訓練 LFC 網(wǎng)絡來檢測和分類服裝。

為了進行此訓練們需要以下東東:

  • AWS 或高端 GPU
  • 耐心

一旦決定了訓練環(huán)境,需要做的第一件事是設置 SW 環(huán)境,確保安裝了以下內(nèi)容。

  • Python - 包括 NumPy 和 SciPy
  • Theano - 用于處理多維數(shù)組的 Python 庫
  • PyLearn2——機器學習的 Python 庫
  • Lasange - 用于構(gòu)建和訓練神經(jīng)網(wǎng)絡的 Python 庫

在包含 GPU 的宿主機上使用以下命令:

sudo apt-get install git python-dev libopenblas-devliblapack-dev gfortran -y
wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py --user
pip install --usergit+https://github.com/Theano/Theano.git@rel-0.9.0beta1
pip install --user https://github.com/Lasagne/Lasagne/archive/master.zip
pip install --user numpy==1.11.0 
git clone https://github.com/lisa-lab/pylearn2$ cd pylearn2
python setup.py develop --user

安裝軟件環(huán)境后,下一步就是下載訓練圖像和標簽

可以使用以下命令下載這些。

wget -nc http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz; gunzip -f train-images-idx3-ubyte.gz
wget -nc http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz; gunzip -f train-labels-idx1-ubyte.gz
wget -nc http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz; gunzip -f t10k-images-idx3-ubyte.gz
wget -nc http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz; gunzip -f t10k-labels-idx1-ubyte.gz

這樣我們就可以開始訓練了。

python fashion-mnist.py

訓練完成后,我們將擁有經(jīng)過訓練的網(wǎng)絡 npz 文件。

使用 WinSCP 將 npz 文件傳輸?shù)?Pynq。

同時將 binary_net、fashino-mnist-gen-binary-weights 和 finnthesizer python 腳本一并上傳。

在 PYNQ 上實現(xiàn)

在 Pynq 上運行新網(wǎng)絡之前,需要將權重轉(zhuǎn)換為二進制格式。

通過運行下面的 Python 腳本來實現(xiàn)這一點

python fashion-mnist-gen-binary-weights.py

這將創(chuàng)建一個包含所有權重的新目錄。

完成后我們就可以開始創(chuàng)建我們自己的notebook。

在 BNN 區(qū)域下創(chuàng)建notebook,執(zhí)行以下操作:

  • 設置根目錄和parameter目錄 - 在parameter目錄中,將找到不同訓練網(wǎng)絡的所有網(wǎng)絡參數(shù)。

  • 將 fashion-mnist 生成的權重傳輸?shù)?param 目錄中。不過,只需要在第一次運行此腳本時執(zhí)行此操作。

一旦將參數(shù)加載到 params 目錄中后,我們就要檢查它們是否可以通過 LFC 網(wǎng)絡的 available_params 函數(shù)訪問。

如果安裝正確,還應顯示 fashion-mnist-lfc 以及最初的兩個網(wǎng)絡。

最后階段是使用參數(shù)運行推理。為此,我們需要加載圖像,將其轉(zhuǎn)換為 mnist 圖像格式并將其應用到網(wǎng)絡。

然后我們可以輸出推理的結(jié)果并顯示圖像以查看預測是否正確。

正如所看到的,它從圖像輸入中正確地識別出了一條褲子。

為了了解網(wǎng)絡的總體準確度,我們可以下載并運行 10K 張標記圖像。

然后我們可以批量處理圖像并計算網(wǎng)絡的整體準確度。

這相當于準確率略低于 85%,在線搜索時準確率為 84.87%,與其他fashion-MNIST 準確率相比,這略低于其他的,其他實現(xiàn)的準確率在 88-92% 范圍內(nèi),具體取決于網(wǎng)絡。



本站聲明: 本文章由作者或相關機構(gòu)授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉