新的互聯網是物聯網 (IoT),它全都與數據有關——以物聯網之前無法想象的規模生成和處理。現在,通過將人工智能應用于這些數據,我們可以獲得顯著改善的洞察力。人工智能現在可以識別倫敦水網的泄漏,因此工程師可以瞄準精確的管道更換。它可以衡量人們在高峰時段使用東京澀谷交叉口對交通流量的影響。它可以衡量紐約人對時代廣場新廣告的反應。三個例子,三個行業——公用事業、物流和營銷——都被人工智能增強了。
物聯網目前正在整理的數據量已經非常龐大,但它將會變得更大,更有趣。2019 年 2 月,Gartner 表示,人工智能在組織中的采用量同比增長了兩倍。對于工程師和工程公司而言,提高設備網絡的智能意味著我們可以開始實現物聯網的真正潛力。
人工智能在工業物聯網 (IIoT) 中最有用的地方
AI正在迅速成為主流計算資源可以處理的任務;我們已經擁有人工智能,以機器學習 (ML) 推理的形式在哮喘吸入器等單傳感器設備上運行。我們可以直接在智能手機上訪問 AI 驅動的照片增強功能,然后在高級車輛中運行計算機視覺應用程序。所有這些都已經在改善生活,但我認為我們將在工業應用中看到最直接的商業價值。
在工業環境中,任何可以提高生產力的技術都是有價值的,運營數據通常用于提供對機器及其當前狀況的洞察。工業傳感器生成的數據包含模式,通過日益復雜的分析,可以幫助預測資產何時會發生故障,從而在故障對生產力產生更大的整體影響之前對其進行修復。預測和預防分析的這一分支以前已在大型服務器和“云”中進行,但 AI 和 ML 的發展意味著它現在正向網絡邊緣靠攏。事實上,它被直接放入構成 IIoT 的機器中。
邊緣機器學習
ML 處理向邊緣移動的原因有很多。第一個是最容易接受的:邊緣是創建數據的地方。不過,還有其他更關鍵的原因;最值得注意的是,因為數據在移動帶寬和處理指令周期方面都消耗資源。如果通過物聯網生成的所有數據都由服務器處理,則將涉及大量的網絡流量和服務器功率的指數級增長。這正是谷歌等公司正在精簡他們的一些算法的原因——這樣他們就可以在邊緣人工智能驅動的設備上獨立于云運行。
就像在邊緣設備中嵌入 HTML 服務器現在很普遍一樣,在端點(例如傳感器)中執行 ML 同樣可行。但是在邊緣實現 ML 的方式至關重要,它遵循分布式處理的概念。訓練 AI 算法所需的處理資源相當可觀,但實際上是非經常性費用。執行推理模型所需的資源較為適中,但在數量上可能消耗與訓練階段一樣多(如果不是更多)的處理資源。它們的不同之處在于,與訓練不同,每個推理實例都可以與所有其他實例隔離打包和執行,這意味著它可以輕松移植到較小的處理資源并根據需要多次復制。
這種分布式智能是新互聯網的形態,它可以在必要時再次孤立運行,同時保留整體的一部分。邊緣處理消除了通過日益擁擠的網絡傳遞數據并消耗越來越寶貴的處理資源的需要。
機器學習架構
訓練完成后,AI 框架會提供部署路徑。對于部署在邊緣的資源受限設備,這包括 TensorFlow Lite 和 Caffe2 之類的設備。這些和其他此類平臺通常是開源的,并且通常帶有“讓您入門”的介紹;已經經過訓練以提供某種形式的推理的模型。這些模型還可以使用自定義數據集進行重新訓練,這一過程稱為遷移學習,可以節省數小時的處理時間。
為了在不同的處理架構之間移植,模型通常通過解釋器運行,并由主機軟件使用 API 訪問。因為模型已經過優化,所以可以使整個實現適應低 100 千字節的內存。
有許多關于 ML 如何在網絡邊緣或網絡邊緣運行的示例,其中許多將運行基于 Linux 的操作系統。這些基于 CPU 的 ML 解決方案使用本質上是通用微處理器,而不是臺式計算機中常見的耗電量大且通常面向 GPU 的大型設備。GPU 具有高度并行的執行塊并利用多個 MAC 單元,旨在盡可能快地執行重復的、面向數學的操作,而無需考慮功耗。它們通常難以編程,需要高功率,并且通常不適合資源受限的邊緣設備。
TensorFlow Lite 旨在在較小的處理器上運行一些 TensorFlow 模型,并提供可提供各種類型 ML 的預訓練模型,包括圖像分類、對象檢測和分割。這三種模型的工作方式略有不同:圖像分類作用于整個圖像,而對象檢測將圖像分解為矩形,而分割則更深入地查看每個單獨的像素。要在 TensorFlow Lite 部署中使用經過訓練的 TensorFlow 模型,需要轉換模型,從而使用可選優化來減小文件大小。該轉換器可以用作 Python 的 API,下面的代碼示例演示了如何使用它。
將張量流導入為 tf
轉換器 = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
open(“converted_model.tflite”, “wb”).write(tflite_model)
在標準處理器上運行 ML 意味著開發人員還可以利用基于行業標準語言(如 Python)的簡單軟件解決方案。在某些情況下,這些處理器可能具有 DSP 擴展功能,它們有助于加速部分數據流,但本質上通用處理器可以處理在較小設備中運行 ML 所需的處理級別,同時仍能處理一般應用程序代碼。
例如,以 CPU 為主導的人工智能已經普遍用于智能手機中,用于識別照片中的特定特征。在工業應用中也是如此,基于多核處理器(如 NXP 的 i.MX 系列)的片上系統 (SoC) 解決方案通常用于將 ML 應用到工業流程中。這包括機器視覺系統,可以識別特定產品在制造過程中的進展。這些 SoC 和其他類似產品是當今如何部署 ML 的完美示例。
超越地平線
雖然 CPU 或 MCU 主導的 AI 現在很普遍,但我們已經期待設備網絡的最遠邊緣,其中尺寸、功率和成本要求受到極大限制。這就是最新版本的 TensorFlow 的用武之地:TensorFlow Lite Micro,或稱為 TF Lite Micro,是該框架的一個版本,設計用于在可能沒有操作系統的微控制器上運行,而不是在運行 Linux 的微處理器上運行。代碼和模型加起來只需要 45kbyte 的 Flash 和 30kbyte 的 RAM 即可運行。這是最遠邊緣的推理,在一個完全自主運行的設備中,沒有任何其他軟件的幫助,或者同樣重要的是,額外的硬件。
使用 TF Lite Micro 的過程與使用 TensorFlow Lite 類似,但需要編寫深度嵌入的代碼來運行推理。除了在代碼中包含相關的 .h 文件外,主要步驟包括: 添加代碼以允許模型寫入日志;實例化模型;為輸入分配內存;輸出和中間數組;實例化解釋器;驗證輸入形狀,并實際運行模型并獲得輸出。下面的代碼片段是如何獲取輸出的示例。
TfLiteTensor* 輸出 = 解釋器。輸出(0);
uint8_t top_category_score = 0;
int top_category_index;
for (int category_index = 0; category_index 《 kCategoryCount;
++類別索引){
const uint8_t category_score = output-》data.uint8[category_index];
if (category_score 》 top_category_score) {
top_category_score = category_score;
top_category_index = 類別索引;
}
}
為了在微控制器上支持機器學習,Arm 開發了 CMSIS-NN 軟件庫,它是處理神經網絡的 Cortex 微控制器軟件接口標準 (CMSIS) 的一部分。通過量化,將浮點數減少到整數(這一過程已被證明幾乎不會導致精度損失),CMSIS-NN 幫助開發人員將模型映射到微控制器的有限資源。
TF Lite Micro 等超高效的 ML 框架以及 CMSIS-NN 使得在超低功耗微控制器上運行 ML 成為可能。這顯然有許多可能的應用,但非常適用于永遠在線系統的一種情況是,系統的大部分保持在深度睡眠模式,直到特定條件使其恢復活力,例如喚醒詞。我們可以將其視為一種新的中斷服務程序,它使用智能來決定何時需要參與芯片/系統的其余部分。這清楚地表明了超低功耗 ML 功能必須在邊緣產生巨大影響的潛力。
展望未來,專注于邊緣推理需求的技術開發將使高度響應且功能強大的 ML 模型能夠以更低的功率水平運行。例如,Arm 為 ArmV8-M 架構開發了新的向量擴展,稱為 Helium。這是 Arm Cortex-M 處理器的最新開發,它在 2015 年推出 Armv8-M 架構時獲得了 Arm TrustZone 的安全優勢。Helium 矢量擴展的開發將類似于 NEON 的處理能力與安全性相結合信任區。Helium 矢量擴展還將為 Cortex-M 類微控制器帶來顯著的性能提升,這將有助于實現許多新應用,在邊緣實現更靈敏、更準確的 ML。Helium 將使 Cortex-M 設備的機器學習性能提高 15 倍,
對于開發人員來說同樣重要的是,這意味著他們可以在用于其他基于微控制器的開發的同一工具鏈中訪問 ML。識別異常振動、意外噪音或警報圖像等集成功能將隱含在控制代碼中,從而簡化將 ML 置于邊緣的整個過程。
由于對不依賴云服務并始終與物聯網。
如果物聯網要擴展到數以萬億計的設備,我們現在意識到需要滿足不斷增長的期望,在邊緣使用推理來限制通過日益擁擠的網絡傳輸的數據量將是必不可少的。
審核編輯:郭婷
評論