一、 硬件平臺
系統(tǒng): Desktop 模塊: TB- RK1808S0 環(huán)境準(zhǔn)備: 飛凌OK3399-C 開發(fā)板, rk1808 人工智能計算棒(固件版本為 V1.3.4 ) , usb 攝像頭,攝像頭和計算棒都插入 OK3399-C開發(fā)板 。 使用 lsusb 命令查看,如下( 紅框 部分 2207:0018 即為 RK1808 人工智能計算棒): 輸入命令如下:
二、 概述AI 計算區(qū)分為四個不同的象限,分別是云端訓(xùn)練、云端推理,邊緣訓(xùn)練以及邊緣推理。其中終端推理,幾乎都集中在 Arm 架構(gòu)生態(tài)上。 AI 神經(jīng)網(wǎng)絡(luò)計算目前可以通過 CPU 、 GPU 、 DSP 、 NPU 、 FAGA 等完成,但不同的硬件特性會導(dǎo)致效率和功耗的不同。其中 NPU —— 嵌入式神經(jīng)網(wǎng)絡(luò)處理器采用“數(shù)據(jù)驅(qū)動并行計算”的架構(gòu),最擅長的就是視頻、圖像類的海量多媒體數(shù)據(jù)的處理,并且相比 GPU 等具有更低的功耗。我司推出 OK3399-C Desktop+RK1808 (含 3Tops 算力 NPU )的組合,在滿足 AI 邊緣計算的情況下,使得功耗大幅降低。 RK1808計算棒擁有主動模式和被動模式兩種模 式。 主動模式下, RK1808 人工智能計算棒是一個專用 AI 應(yīng)用模塊。 RK1808 人工智能計算棒作為主動設(shè)備, RK1808 人工智能計算棒內(nèi)部默認已安裝 rknn-toolkit 和 rknn-api ,上位機(也稱宿主機)無需安裝 rknn-toolkit 和 rknn-api ,模型及算法固化在 RK1808 人工智能計算棒中, OK3399-C 通過 USB 口向計算棒輸入數(shù)據(jù)(例如圖片和視頻流), RK1808 人工智能計算棒自動完成數(shù)據(jù)的前處理、推理、后處理,然后把處理結(jié)果通過 USB 口輸出給 OK3399-C。 為了方便用戶通過 USB 口 傳輸數(shù)據(jù), RK1808 人工智能計算棒會把 USB 口虛擬成網(wǎng)卡等標(biāo)準(zhǔn)設(shè)備,用戶只需通過標(biāo)準(zhǔn)設(shè)備接口的操作(例如網(wǎng)絡(luò)的 socket 編程)即可完成對 RK1808 人工智能計算棒數(shù)據(jù)的輸入和輸出。 細節(jié)如下: 1.RK1808 計算棒插入上位機后,會被虛擬成網(wǎng)卡設(shè)備 2. 上位機 OK3399-C 進行虛擬網(wǎng)卡配置,配置 IP 為 192.168.180.1 ,保證上位機和 1808 中間的 網(wǎng)絡(luò)連接正常 3. 計算棒默認 IP 為 192.168.180.8 ,賬號密碼皆為 toybrick ,用戶可以 SSH 登錄計算棒,拷貝模型和 server 服務(wù)程序到計算棒 4. 計算棒端運行 server 服務(wù)程序,用來接收上位機的連接請求,并調(diào)用 RKNN 進行處理,再返回結(jié)果 5. 上位機運行 client 程序,連接 server 成功之后,發(fā)送推理請求,從 1808 端獲取返回結(jié)果
三、 計算棒網(wǎng)絡(luò) 配置與網(wǎng)絡(luò) 共享 配置
1 、 計算棒網(wǎng)絡(luò) 配置上位機使用 OK3399-C Forlinx Desktop 系統(tǒng) ,點擊右下角網(wǎng)絡(luò)按鈕選擇彈出窗口中的 “ Edit Connections... ”選項:
選擇計算棒 usb 網(wǎng)卡生成的有線網(wǎng)絡(luò)節(jié)點:
配置該節(jié)點為手動模式,設(shè)置 IP : 192.168.180.1 ,子網(wǎng)掩碼: 255.255.255.0 ,并保存:
終端輸入 ifconfig 指令查看網(wǎng)絡(luò)節(jié)點配置如下,可見 usb 網(wǎng)卡配置完成:
ping 一下 1808 計算棒網(wǎng)絡(luò) 192.168.180.8 ,如下網(wǎng)絡(luò)可以連通:
使用 ssh 登錄 1808 計算棒,用戶名和密碼默認都為 toybrick ,如下登陸成功:
2 、網(wǎng)絡(luò) 共享 配置運行 ifconfig ,可以看到 e th0 、 wlan0 等宿主機 網(wǎng)卡, 我們 用于訪問外網(wǎng), enx10dcb69f022c 為 USB 網(wǎng)卡( RK1808 人工智能計算棒虛擬網(wǎng)卡)。不同的系統(tǒng)網(wǎng)卡名稱可能不一樣,以實際網(wǎng)卡名稱為準(zhǔn)。
首先配置宿主機網(wǎng)絡(luò),使宿主機可以連通以太網(wǎng),這里我們使用 wlan0 節(jié)點來上網(wǎng),具體配置不再贅述。 命令行執(zhí)行如下命令,其中 enx10dcb69f022c 需要修改成用戶本地實際值;正常情況只要設(shè)置一次即可,若拔插設(shè)備發(fā)現(xiàn)網(wǎng)卡名稱改變了或者用戶手動刪除該網(wǎng)卡,則需要重新設(shè)置。
1. sudo nmcli connection add con-name toybrick type ethernet ifname enx10dcb69f022c autoconnect yes ip4 192.168.180.1/24
配置 NAT 功能,執(zhí)行如下命令,其中 eno1 需要修改成用戶本地實際值;關(guān)機失效,所以每次電腦重啟都要重新設(shè)置。 1. sudo sysctl -w net.ipv4.ip_forward=1 sudo iptable -F sudo iptables -t nat -Fsudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
注意: 以自己開發(fā)板聯(lián)網(wǎng)的實際端口為準(zhǔn),例: eth0 iptables 命令部分釋義如下: iptables --help --flush -F [chain]Delete all rules in chain or all chains --table -t tabletable to manipulate (default: `filter') --append -A chainAppend to chain --jump -j targettarget for rule (may load target extension)
MASQUERAD ,地址偽裝,算是 snat 中的一種特例,可以實現(xiàn)自動化的 snat SNAT 是 source networkaddress translation 的縮寫,即源地址目標(biāo)轉(zhuǎn)換。比如,多個 PC 機使用 ADSL 路由器共享上網(wǎng),每個 PC 機都配置了內(nèi)網(wǎng) IP , PC 機訪問外部網(wǎng)絡(luò)的時候,路由器將數(shù)據(jù)包的報頭中的源地址替換成路由器的 ip ,當(dāng)外部網(wǎng)絡(luò)的服務(wù)器比如網(wǎng)站 web 服務(wù)器接到訪問請求的時候,他的日志記錄下來的是路由器的 ip 地址,而不是 pc 機的內(nèi)網(wǎng) ip ,這是因為,這個服務(wù)器收到的數(shù)據(jù)包的報頭里邊的“源地址”,已經(jīng)被替換了,所以叫做 SNAT ,基于源地址的地址轉(zhuǎn)換。 DNAT 是 destination networkaddress translation 的縮寫,即目標(biāo)網(wǎng)絡(luò)地址轉(zhuǎn)換,典型的應(yīng)用是,有個 web 服務(wù)器放在內(nèi)網(wǎng)配置內(nèi)網(wǎng) ip ,前端有個防火墻配置公網(wǎng) ip ,互聯(lián)網(wǎng)上的訪問者使用公網(wǎng) ip 來訪問這個網(wǎng)站,當(dāng)訪問的時候,客戶端發(fā)出一個數(shù)據(jù)包,這個數(shù)據(jù)包的報頭里邊,目標(biāo)地址寫的是防火墻的公網(wǎng) ip ,防火墻會把這個數(shù)據(jù)包的報頭改寫一次,將目標(biāo)地址改寫成 web 服務(wù)器的內(nèi)網(wǎng) ip ,然后再把這個數(shù)據(jù)包發(fā)送到內(nèi)網(wǎng)的 web 服務(wù)器上,這樣,數(shù)據(jù)包就穿透了防火墻,并從公網(wǎng) ip 變成了一個對內(nèi)網(wǎng)地址的訪問了,即 DNAT ,基于目標(biāo)的網(wǎng)絡(luò)地址轉(zhuǎn)換。 |
|
|