自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對比GPU,使用FPGA創(chuàng)建神經(jīng)網(wǎng)絡(luò)

人工智能
嵌入式工程師常見的情況是在硬件加速器(如FPGA)和主機(jī)CPU之間建立通信。這項工作因其繁瑣和容易出錯而臭名昭著。

當(dāng)代的CPU按照一維方式進(jìn)行計算,順序執(zhí)行指令,并將算法分解為逐條加載和執(zhí)行的指令。然而,未來的計算發(fā)展趨勢表明,我們將越來越多地依賴硬件加速器來支持并行執(zhí)行,這將成為計算的常態(tài)。這種發(fā)展趨勢將統(tǒng)一算法和硬件結(jié)構(gòu)的利用,從而實現(xiàn)更快、更高效的解決方案。

在這個發(fā)展趨勢中,支持二維計算的GPU的崛起已經(jīng)部分實現(xiàn)了這一趨勢。GPU具備大規(guī)模并行計算的能力,使得許多原本難以并行化的應(yīng)用程序性能得到大幅提升。

圖片圖片

【左圖】GPU最適合尷尬地并行處理圖像處理算法。視頻畫面流暢。【右圖】CPU的串行限制導(dǎo)致明顯的延遲和性能不佳。

然而,GPU只能在特定情況下加速特定的算法。未來,通過互連的CPU和各種硬件加速器實現(xiàn)超優(yōu)化將成為可能。FPGA將成為這個未來的重要組成部分,F(xiàn)PGA允許通過對硬件結(jié)構(gòu)進(jìn)行編程來實現(xiàn)極度定制化的二維計算。

圖片圖片

【左圖】展示了CPU如何通過串行執(zhí)行逐個指令來解決問題的過程?!居覉D】展示了GPU、FPGA和ASIC等硬件加速器如何在空間和時間上進(jìn)行二維計算。

本文為大家展示如何將一個具體的神經(jīng)網(wǎng)絡(luò)用于睡眠追蹤,并將其映射到FPGA上。更重要的是演示將硬件映射到算法所需的關(guān)鍵工具,介紹如何實現(xiàn)異構(gòu)計算。

1 睡眠追蹤:鉛筆尖上的神經(jīng)網(wǎng)絡(luò)

這里制作了一個基于可穿戴FPGA的睡眠追蹤器。在這個過程中,建立了一個流水線,能夠?qū)⒆畛跤肞ython(Keras)描述的神經(jīng)網(wǎng)絡(luò)映射到硅芯片(FPGA)上。從數(shù)據(jù)采集到神經(jīng)網(wǎng)絡(luò)預(yù)測,整個睡眠追蹤過程完全在一個微小的FPGA上運(yùn)行,沒有處理器參與。

圖片圖片

在比鉛筆尖還小的FPGA上部署了三層前饋神經(jīng)網(wǎng)絡(luò)(左圖),這些FPGA可以在iCE40 Ultra Wearable Development Platform(右圖中綠色圈出)中找到。

利用密歇根大學(xué)(Walch等人,2019年的《睡眠》期刊)開發(fā)的經(jīng)過同行評審的算法實現(xiàn)。這是首個開源的睡眠數(shù)據(jù)集和相應(yīng)的算法存儲庫。

使用來自該項目的有標(biāo)簽數(shù)據(jù)對這里的FPGA神經(jīng)網(wǎng)絡(luò)(NN)核心進(jìn)行了驗證。使用的神經(jīng)網(wǎng)絡(luò)是一個多層感知器,以加速度計數(shù)據(jù)、心率和晝夜節(jié)律數(shù)據(jù)作為輸入,并以91.3%的整體準(zhǔn)確率預(yù)測清醒、快速動眼(REM)睡眠和非快速動眼(non-REM)睡眠。

圖片圖片

FPGA睡眠追蹤器的高級架構(gòu)圖。在前端,STM IMU芯片是連接到FPGA的數(shù)據(jù)源。在后端,可以連接一個主機(jī)計算機(jī)來讀取數(shù)據(jù)并向睡眠追蹤器發(fā)送命令。從頭開始使用SystemVerilog自己開發(fā)了采樣器、特征提取器、NN核心和UART核心。這能夠?qū)崿F(xiàn)一個在微小FPGA上可部署的高效解決方案。

構(gòu)建的參數(shù)化定義的FPGA NN核心是獨立于供應(yīng)商的,并且適用于超出此應(yīng)用范圍的其他應(yīng)用,因為流水線允許在一定約束條件下輕松更新模型形狀和參數(shù)。

2 可適應(yīng)加速器上二維算法的未來

如今,部署可適應(yīng)加速器(如FPGA)是一項高摩擦且耗時的任務(wù)。將從今天的實踐和未來的改進(jìn)角度描述FPGA開發(fā)的三個方面。

2.1 二維算法將以高級方式(例如Python)進(jìn)行描述并自動部署

編寫FPGA代碼是一項神秘的任務(wù),需要不同于數(shù)據(jù)科學(xué)家和大多數(shù)軟件工程師的專業(yè)知識。對于本來可以極大受益于基于FPGA的二維加速的團(tuán)隊來說,這可能成為一道阻礙。能夠使用熟悉的高級語言(如Python)描述針對FPGA的算法對于普及FPGA的使用至關(guān)重要。FPGA專家也將從這種基礎(chǔ)設(shè)施帶來的主要效率提升中受益。

要在應(yīng)用中部署一個新的睡眠追蹤器網(wǎng)絡(luò),用戶只需運(yùn)行一個腳本并輕微修改幾個文件。無需具備硬件知識,也無需編寫新的SystemVerilog代碼。

圖片圖片

神經(jīng)網(wǎng)絡(luò)部署流程使非FPGA專家能夠訓(xùn)練新模型并部署到FPGA上。流程的步驟包括訓(xùn)練和導(dǎo)出Keras模型,使用腳本將輸出模型解析為FPGA編譯器工具鏈所需的數(shù)據(jù),更新頂層FPGA項目文件中的模型常量,然后重新編譯FPGA比特流。

這有效的原因在于只允許使用高度約束的模型。未來,更通用的高級綜合(HLS)工具,如賽靈思(Xilinx)的Vitis HLS和谷歌的XLS,將允許用戶提供要部署到可適應(yīng)加速器的通用高級算法描述。

2.2 將以Python等語言高效地測試和調(diào)試二維算法

仿真、驗證和調(diào)試是FPGA應(yīng)用設(shè)計過程中關(guān)鍵的部分。這些過程也將從高級接口和工具中得到重大改進(jìn)。

圖片圖片

睡眠追蹤器應(yīng)用的頂層測試平臺圖。能夠使用Cocotb和Python進(jìn)行測試、驗證和調(diào)試FPGA設(shè)計,這是一大福音。Python的異步/等待語法的便利性以及在Python中輕松模擬子組件/導(dǎo)入測試數(shù)據(jù)的簡易性極大地加快了我們的工作。

已經(jīng)取得了巨大的進(jìn)展。例如,雖然直接在SystemVerilog中編寫了所有組件,但在所有的離設(shè)備驗證和測試平臺(對每個模塊和整個睡眠應(yīng)用)上都使用了Cocotb,而從未離開過Python。借助Cocotb,可以在Python生態(tài)系統(tǒng)中使用周期精確的仿真,這對于FPGA驗證非常重要,而且對開發(fā)人員非常高效。

2.3 Rust將成為連接異構(gòu)系統(tǒng)的粘合劑

嵌入式工程師常見的情況是在硬件加速器(如FPGA)和主機(jī)CPU之間建立通信。這項工作因其繁瑣和容易出錯而臭名昭著。

在Rust中構(gòu)建了FPGA睡眠應(yīng)用程序的設(shè)備驅(qū)動程序和更高級的Session API。前者實現(xiàn)了自定義數(shù)據(jù)包協(xié)議,而使用后者創(chuàng)建了各種與FPGA睡眠應(yīng)用程序交互的程序。Rust是一個很好的解決方案,因為其類型系統(tǒng)和靜態(tài)檢查使得編寫安全的低級代碼和符合人體工程學(xué)的高級API變得更加容易。本演講的后半部分將詳細(xì)介紹其中一些特性。

相信Rust是將異構(gòu)計算系統(tǒng)連接在一起的最佳選擇。在這個角色中,Rust將提供低級通信的安全性,減少驅(qū)動程序的脆弱性,并為算法之間跨硬件邊界進(jìn)行通信提供人體工程學(xué)的API。

圖片圖片

將Rust作為CPU <-> FPGA的粘合劑的展望,包括針對常見I/O類的代碼生成設(shè)施。

責(zé)任編輯:武曉燕 來源: Java學(xué)研大本營
相關(guān)推薦

2017-09-06 15:32:19

神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)硬件

2018-06-18 14:19:47

IBM神經(jīng)網(wǎng)絡(luò)GPU

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2018-03-21 10:14:38

JavaScript交叉GPU

2025-02-24 08:00:00

機(jī)器學(xué)習(xí)ML架構(gòu)

2017-08-28 21:31:37

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2017-04-26 09:30:53

卷積神經(jīng)網(wǎng)絡(luò)實戰(zhàn)

2017-09-15 13:35:11

JavaScript神經(jīng)網(wǎng)絡(luò)

2017-09-18 08:08:33

JavaScript神經(jīng)網(wǎng)絡(luò)代碼

2017-09-10 07:07:32

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集可視化

2025-02-25 14:13:31

2023-06-27 13:51:07

FPGA數(shù)據(jù)中心程序

2020-08-06 10:11:13

神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)算法

2018-01-09 10:05:55

神經(jīng)網(wǎng)絡(luò)ClojureCortex

2017-09-28 16:15:12

神經(jīng)網(wǎng)絡(luò)訓(xùn)練多層

2018-08-27 17:05:48

tensorflow神經(jīng)網(wǎng)絡(luò)圖像處理

2017-05-04 18:30:34

大數(shù)據(jù)卷積神經(jīng)網(wǎng)絡(luò)

2019-05-07 19:12:28

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)Python

2022-04-07 09:01:52

神經(jīng)網(wǎng)絡(luò)人工智能

2017-08-29 13:50:03

TensorFlow深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)
點贊
收藏

51CTO技術(shù)棧公眾號