Google Coral Edge TPU USB加速棒上手體驗

asukafighting發表於2019-05-15

Edge AI是什麼?它為何如此重要?

傳統意義上,AI解決方案需要強大的平行計算處理能力,長期以來,AI服務都是通過聯網線上的雲端基於伺服器的計算來提供服務。但是具有實時性要求的AI解決方案需要在裝置上進行計算 ,因此邊緣人工智慧(Edge AI)正在逐漸進入人們的視野。

雖然本質上AI計算可以使用基於GPU的裝置,但這套裝置成本高昂,並且搭配非常繁瑣,比如對記憶體要求越來越高、能耗越來越大等。無論是從研究還是創新角度來講,邊緣人工智慧推理都正在成為蓬勃發展的深度學習革命越來越重要的組成部分。

與此同時手持裝置(比如手機、平板等)日益普及,每年都能賣掉幾十億臺,手機已然成為日常使用最為頻繁的裝置,可以預測對移動AI計算的需求也正在穩步增加。 因此,移動處理器的開發已經變得越來越以人工智慧為重點,這些處理器都具有用於機器學習的專用硬體,比如現在主流的手機CPU評測都會加上一項AI計算能力的跑分。

目前從消費應用到企業應用都遍佈 AI 的身影。隨著聯網裝置數量的爆發式增長,以及對隱私/機密、低延遲時間和頻寬限制的需求,雲端訓練的 AI 模型需要在邊緣執行的情況不斷增加。Edge TPU 是 Google 專門為在邊緣執行 AI 而打造的 ASIC,它體型小、能耗低,但效能出色,讓您可以在邊緣部署高精度 AI。從下圖可以看出Edge TPU核心的面積僅有一美分的大概十分之一大小。

Edge TPU可以用來做什麼?

可以使用Edge TPU在移動裝置上訓練模型,但目前僅支援通過遷移學習在裝置上重新訓練的分類模型,這種訓練方法是在Low-Shot Learning with Imprinted Weights這篇論文中提到的imprinted weight技術,此技術為實時系統創造了許多可能性。並且,據相關評測顯示,Edge TPU是同類產品中計算速度最快的裝置。

市面上已經有的其他AI邊緣推理硬體

雖然這是第一個Edge TPU,但這之前就已經有一些類似的AI專用硬體,例如:

Coral Beta版

TPU,也稱張量處理單元(Tensor Processing Unit)主要供Google資料中心使用。對於普通使用者,可以在Google雲端平臺(GCP)上使用,也可以使用Google Colab來使用免費版。

谷歌在2019年國際消費電子展(以及今年的TensorFlow開發峰會上)首次展示了他們的Edge TPU,然後於三月份釋出了Coral Beta

Beta版本包括開發板和USB加速器,以及用於生產目的的預覽版PCI-E加速器和模組化系統(SOM)。

USB Accelerator

Edge TPU USB Accelerator與任何其他USB裝置基本一樣,跟英特爾的MyriadVPU的差不多,但功能更強大。接下來我們來一個開箱,並且稍微上手看看。

開箱

盒子中包含:

  • 入門指南
  • USB加速器
  • Type C USB資料線

入門指南

入門指南介紹了安裝步驟,你可以很快完成安裝。包括模型檔案在內的所有需要的檔案可以隨安裝包一起在官網下載即可,安裝過程並不需要TensorFlowOpenCV這些依賴庫。

提示:必須使用Python 3.5,否則將無法完成安裝。還需要將install.sh檔案最後一行python3.5 setup.py develop - user 改為 python3 setup.py develop - user

演示程式

Coral Edge TPU API文件包括影像分類和目標檢測的概述和演示程式。

Edge TPU API

在完成以下教程之前,關於Edge TPU API有以下注意事項:

  • 需要安裝Python的edgetpu模組才能在Edge TPU上執行TensorFlow Lite模型。它是一個較高層的API,包含一些簡單的API以執行模型推理過程。
  • 這些API已經預先安裝在開發板上,但如果使用的是USB加速器,則需要自行下載。詳細資訊請參閱此設定指南
  • 推理過程中需要用到以下關鍵API:用於影像分類的ClassificationEngine、用於目標檢測的DetectionEngine和用於遷移學習的ImprintingEngine

影像分類

實現影像分類的Demo非常簡單,比如可以將下邊的圖片作為ClassificationEngine介面的輸入:

目標檢測

與影像分類一樣,我們只需要呼叫一下DetectionEngine介面,就可以將輸入圖片中的目標檢測出並用方框進行標識:

由於預設配置會產生假負例,我們可以將預設示例程式中的閾值從0.05調整到0.5,另外將矩形的寬度調整為5,可以得到以下結果:

由於Coral仍只有測試版,API文件中給出的細節不夠完整,但目前給出的部分用於以上示例已經足夠了。

注意事項

以上demo的所有程式碼、模型和標註檔案都隨安裝包中包含的庫檔案一同在官網下載,根據目前已經給出的模型和輸入標註檔案等,我們可以完成分類和檢測任務。

對於分類任務,結果返回排名前2的預測類別及對應的置信度得分;而對於目標檢測任務,結果將返回置信度得分及標註方框的各頂點座標,若輸入時給出類別標註,返回結果中也包含類別名稱。

樹莓派上效能的侷限性

不幸的是,業餘愛好者最喜歡樹莓派無法充分發揮USB加速器的功能和速度。USB Accelerator使用USB 3.0埠,目前的樹莓派裝置沒有USB 3USB type-C,而只能使用速度較慢的USB 2

目前,它只在Debian Linux上執行,但預計很快就會有支援其他作業系統的方法。

深入擴充

Edge TPU的幫助下,Coral還能提供哪些產品呢?

開發板(Dev Board)

作為開發板來講,樹莓派通常是最受歡迎的選擇,但谷歌卻更推崇NXP i.MX 8M SOC(Quad-core Cortex-A53 與 Cortex-M4F)。有關開發版的更多資訊,請參考此頁面

但是如果用於實驗,尤其是僅需使用Edge TPU的情況下,我們更加推薦USB Accelerator

後續開發

若您已經使用開發板或USB Accelerator做出了不錯的prototype原型機,但後續需要將同樣的程式碼應用於大規模生產環境,該怎麼辦呢?

谷歌已經預先想到這一點,可以在產品列表中看到,下述模組將用於企業支援,並且已經被標記為 即將上線

模組化系統(System-on-module, SOM)

這是一個完全整合的系統(包含CPU、GPU、Edge TPU、Wifi、藍芽和安全元件),採用大小為40mm*40mm的可插拔模組。

此模組可以用於大規模生產,製造商可以按照本模組所提供的指南生產自己喜歡的IO板,甚至上文提到的已經上市的開發板(Dev Board)都包含這個可拆卸的模組,理論上只要拆下來就可以使用。

PCI-E 加速器

關於PCI-E加速器的資訊很少,但顧名思義,它是一個帶有PCI-E(快捷外設互聯標準,Peripheral Component Interconnect Express)的模組,且有兩種變體,這類似於USB加速器,不過不同之處在於將USB介面換成了PCI-E,就像記憶體條或者網路卡那樣,樹莓派也有PCI-E介面的Compute Module版本。

隨著各種外設模組的誕生,可以預料,一些企業級專案也將隨之誕生。谷歌Coral也這麼認為,在他們的網站上有以下說法:

靈活易用,精準裁剪,適用於初創公司與大型企業。

Tensorflow與Coral專案

谷歌的產品大都與Tensorflow有關,目前,Edge TPU僅支援傳統的Tensorflow Lite版本的模型,Tensorflow Lite穩定版剛剛釋出,參見此頁面

目前,你需要通過一個網頁編譯器tflite模型轉換為tflite-tpu模型。如果使用的是PyTorch或其他框架也不用擔心,可以通過ONNX將模型轉化為Tensorflow模型。

展望

儘管缺乏對樹莓派的全面支援,以及Beta版本中文件有限,但我對Coral專案保持樂觀態度。雖然無法立刻確定這種技術的發展前景,但對更強大、低能耗、高成本效益以及更具創新性的產品,我們應當報以更高的期望。好了,本次介紹就到這裡,這個系列的全文會收錄在我的github目錄,歡迎大家star和溝通:github.com/asukafighti…

 

相關文章