說到機器學習,在計算方面,大多數邊緣應用程序只執行推理,然而,隨着 連邦學習(Federated Learning)等新興技術的出現,這種情況在未來可能會發生變化。
但就目前而言,在小型微控制器和其他邊緣設備上運行機器學習模型已經成爲可能,這將帶來各種各樣有趣的應用。
邊緣設備的定義在不同的應用中會有很大的差異,它包括從智能手機到自動駕駛汽車,以及介於兩者之間的各種設備。目前,數量最多的邊緣設備(也可以連接到網絡),很有可能就是智能手機。越來越多的其他設備配備了小型 MCU(microcontroller,微控制器),它們不連接任何網絡,用於家庭花園的智能噴水滅火系統等應用。
具體來說,全球智能手機的總數量已達數十億部。連接的智能設備數量在不斷增加,從智能恆溫器到門鈴,再到送貨機器人。這些設備大多靠電池運行(也有像智能助理這樣的例外),並連接到 wifi、藍牙和/或移動網絡。
在這些設備上進行機器學習時,通常會將設備傳感器的數據發送回雲端進行推理,該過程具有以下特點:
-
消耗更多的能量(通過有線或無線網絡移動數據會消耗能量)。
-
導致應用程序受到較高延遲的影響。
-
由於數據傳輸和雲計算的成本,導致費用更高。
-
需要額外的工作來處理數據隱私和安全問題。
這些高層次的優勢使得機器學習模型嵌入到設備上變得至關重要,不過,這也帶來了更多的數據隱私和安全問題。
說到機器學習,在計算方面,大多數邊緣應用程序只執行推理,然而,隨着連邦學習(Federated Learning)等新興技術的出現,這種情況在未來可能會發生變化。
但就目前而言,在小型微控制器和其他邊緣設備上運行機器學習模型已經成爲可能,這將帶來各種各樣有趣的應用。請繼續閱讀本文,瞭解如何開始爲邊緣設備開發機器學習應用程序。
邊緣架構
由於邊緣產品的類型不同,它們的架構也不盡相同。目前使用的不同架構可以分爲 5~6 類,如下圖所示:
基於 ARM Cortex-A 架構的處理器賦能了今天幾乎所有的智能手機,而基於 Cortex-M 的微控制器則用於鍵盤、智能手錶、安全攝像頭以及我們周圍的大量其他產品。
基於 x86 的筆記本計算機、上網本等也有數以百萬計的人使用,它們還用於 ATM 和各種其他產品。一些智能手機還搭載了高通(Qualcomm)和華爲等公司開發的定製機器學習加速器。
在功耗方面,不同的產品可以分爲三類,從超低功耗的 Cortex-M 系列微控制器,到 NVIDIA、Mobileye 和德州儀器(Texas Instruments)的高性能自主汽車專用系統。
ARM 公司最近推出了帶有 NPU(Neural Processing Unit,神經處理單元)的 Ethos-N 系列處理器,該處理器與 Cortex-M 處理器相結合,可用於各種低功耗應用。NDP101 是一款低功耗 SoC 芯片,用於語音應用中的關鍵詞分類。
模型動物園與模型
由於邊緣設備的算力和內存有限,因此,邊緣機器學習模型的關鍵屬性是:
給定模型的優化過程會因應用程序而異:在某些應用程序中,如自動駕駛汽車,對準確率要求最高,但可能不會執行量化等模型壓縮技術。
針對特定平臺進行優化的預訓練模型可以顯著提升推理速度,也可以用於遷移學習來訓練特定應用的模型。它們還提供了一個很好的基準來比較自定義模型,並且還可以幫助開發團隊更快地達到 MVP。TensorFlow 和 PyTorch 是兩個最流行的機器學習框架,它們可以在樹莓派(Raspberry Pi)和 NVIDIA Jetson 等任何 Linux 兼容板上運行。下面是一些專門針對邊緣模型的模型動物園和庫。
-
Intel OpenVINO Model Zoo:Intel 提供了大量針對 Intel x86 CPU 優化的預訓練模型。免費模型可用於人臉檢測、行人檢測、人體姿勢估計等用例。OpenVINO 工具箱可以用來優化 Intel 產品的自定義模型。
-
iOS Core ML:像 GPT-2 和 BERT 這樣的最先進模型的精簡版可以在 iOS 設備上使用。
-
TensorFlow Lite:是 TensorFlow 生態系統的一部分,可以用在 Android、iOS 和其他各種邊緣設備上部署機器學習模型。預訓練模型可用於對象檢測、姿勢估計,使用 mobileBert 進行問答等等,這些都是針對 Android 設備的。ML Kit 是 Firebase 生態系統的另一個選項,也可以在 iOS 上使用。ML Kit 還有一個視覺 API,可以用來識別 400 個常見物體的圖像,還可以使用 AutoML Vision Edge 來訓練自定義模型。
-
PyTorch Mobile:是 PyTorch 生態系統的一部分,支持 Android、iOS 和其他邊緣設備。PySyft 是一個用於保護機器學習隱私的庫,與 PyTorch 一起使用,可以用在一些邊緣設備上。
-
PocketFlow 是來自騰訊公司的一個開源項目,用於深度學習模型的自動壓縮和加速。
-
ARM CMSIS NN:該庫爲 ARM Cortex-M 系列微控制器的卷積等常見操作提供了高效實現。在這篇關於 CMSIS-NNN 的論文中,ARM 描述了在 Cortex-M7 MCU 上運行 CNN 所做的各種優化。這裏有幾個例子。
-
Coral Edge TPU:Edge TPU 的預訓練模型可用於圖像分類、對象檢測和圖像分割等。
-
Fritz AI:爲 iOS 和 Android 提供了預訓練模型,可免費上手和實驗。此外,Fritz AI 還有一個端到端的移動模型構建平臺,目前還處於早期訪問階段。
雲平臺
- AWS IoT:包括 Amazon FreeRTOS、AWS IoT Core 以及其他各種服務,用於管理和開發邊緣應用。
硬件
傳感器
在邊緣應用中,傳感器是關鍵,因爲它們幫助我們收集和測量不同類型的環境信息,如溫度、聲音、圖像、運動、溼度等。下面是一些有趣的傳感器:
-
ST LSM6DSOX Inertial Sensor:這是一個帶有三軸加速度計和三軸陀螺儀的慣性傳感器。它還有一個機器學習核心,有 8 個獨立的決策樹,可以用來對運動模式進行分類。
-
Sensor Tag、Sensor Tile 和 Sensor Puck 是帶有 BLE(Bluetooth low energy,低功耗藍牙)和溼度、溫度、環境光等多種環境傳感器的開發套件。
邊緣開發套件
有幾家公司(這裏列出了一長串這類公司的名單)正在研究深度學習加速器,用於深度神經網絡的訓練/推理;然而,目前可供開發人員開始開發的產品還很少。下面是一些現在可以購買的開發板列表,用於開發邊緣人工智能應用:
低功耗板
-
搭載 Ambiq Apollo3 微控制器的 SparkFun Edge 開發板——由 Ambiq Micro 開發的 Apollo 3 是最高效、低功耗的 32 位 Cortex-M4F 微控制器之一。這裏有一些例子,如喚醒詞檢測、打造一個魔法棒!費用:14.95 美元。
-
Lattice iCE40 UltraPlus FPGA Platform:是基於 FPGA 的開發工具包,可用於運行小型 CNN(4~8 層),用於關鍵詞檢測、人臉檢測等應用。這裏提供了帶有各種傳感器(麥克風、慣性傳感器等)的開發工具包。費用:99 美元。
中功耗板
-
Google Edge TPU:Google 前不久宣佈的 Edge TPU,現已可購。這是 Coral 平臺的一部分。開發板還包含一個來自 NXP 的 Cortex-A53 SoC,可以獨立使用,並且有攝像頭的連接器等。它可以使用 TensorFlow Lite 進行編程。Google 提供了一些性能數據,見這裏。開發板(如上圖)可以在這裏購買。費用:149.9 美元。
-
NVIDIA Jetson Nano:這是 NVIDIA 在 GTC 2019 上發佈的 Edge AI 最新深度學習開發板。Jetson Nano 的主要優勢之一是它包含了四核 ARM CPU,可以運行 Linux 系統,而 Intel 神經計算棒和 Edge TPU 加速棒需要單獨的板子,比如樹莓派等。它可以使用 TensorFlow、PyTorch 進行編程。費用:99 美元。
有關 Coral Edge TPU 開發板和 NVIDIA Jetson Nano 的更詳細比較,請查看這篇博文:《Google Coral Edge TPU 開發板與 NVIDIA Jetson Nano 開發板的硬件比較》(Google Coral Edge TPU Board Vs NVIDIA Jetson Nano Dev board — Hardware Comparison)。
- Intel Neural Compute Stick 2(Intel 神經計算棒 2):這款 USB 外觀的開發板採用了 Intel Myriad X 視覺處理單元(Vision processing unit,VPU) 。在 Myriad X 之前,Intel/Movidius 已經推出了 Myriad2,爲第一代 Intel 神經計算棒提供動力。要進行編程,必須使用 IntelOpenVino 工具包。可在這裏購買。費用:99 美元。
-
Coral USB Accelerator:這包含了 USB 外形尺寸類似於 NCS 2 的 Google Edge TPU,它可以與樹莓派或任何筆記本計算機一起使用。費用:74.99 美元。
-
Sipeed MAix M1 (RISC-V + Kendryte 120):這款用於樹莓派的 Grove Hat,目前僅售 24.50 美元(預購結束後爲 28.90 美元)。它擁有雙核 600MHz RISC-V CPU 和 Kendryte K120 16 位神經網絡處理器。費用:24.50 美元。
- Raspberry Pi(RPi,樹莓派):樹莓派採用四核 ARM Cortex-A7 系列處理器,可與 Edge TPU 加速棒結合,打造功能強大、易於使用的邊緣人工智能平臺。費用:35 美元。
AWS DeepLens:這是來自 AWS 的開發套件,面向計算機視覺應用的開發人員。它可以在 Intel Atom 處理器上運行推理,並可以輕鬆地與 AWS IoT 服務集成,將推理結果發送到雲端。費用:199 美元。
結 語
在邊緣開發人工智能應用需要使用受限的資源(內存、計算等),並對費用、功耗和麪積進行優化,所有這些都使其成爲當今人工智能領域最具挑戰性的問題之一。
隨着互聯設備的興起,以及這些嵌入式設備上的應用開發軟件的發展,我們將看到更多的邊緣應用使用機器學習來解決醫療、節能和機器人等領域的新問題,這裏僅舉幾個例子。
作者介紹:
Manu Suryavansh,機器學習工程師。
原文鏈接:
https://heartbeat.fritz.ai/machine-learning-at-the-edge-μml-2802f1af92de