嵌入式機器學習設計-ARM特別版

目錄


引言

根據艾倫·圖靈在1950的語言,“機器終將和人類競爭”,經過數十年的實驗室和智囊團的研究,機器學習終於到達了這個可行點,在工程領域和人們的日常生活中爆發。

現在,技術日新月異。機器學習不再是遠端的基於雲的數據中心的保留地。計算處理能力和ML算法的改進,正在推動着應用、訓練和推理迴歸到網絡的邊緣-智能設備已經成爲日常生活的一部分。

0.1 關於本書

傻瓜式嵌入式機器學習設計-ARM特別版,展示了往任何設備添加機器學習不僅是可能的而且非常簡單。本書重點關注關鍵實現點並解釋爲什麼在計劃的早期這些點非常重要。這本書解釋了怎樣實現平臺配置並解釋了爲什麼軟件重要。最後,闡述了生態系統在機器學習中的重要性,且給出了在網絡邊緣使用機器學習的有趣例子。

1 爲什麼ML正在向邊緣遷移?

本章重點:

  • 掌握ML的基本概念
  • 理解差異化和降低成本

機器學習代表了超過了一代計算能力的最大拐點,事實上已經在各個市場上產生了重大影響。它導致了車聯技術的巨大進步,改變了醫療保健事業的面貌,並影響了城市基礎設施的控制方式。它也影響着不太明顯的部門,比如農業,產生於設備的信息正在實現更有效的灌溉,更精確滴病蟲和疾病控制,以及總作物收穫的優化。

機器學習的潛力非常深遠,很難想象哪一個部門不被影響。對於用戶而言,不管是在家中、工作中還是休閒娛樂中,機器學習帶來了新的認知和便利。對於製造商而言,它使流程更加高效併產生了新的業務模型和服務。

1.1 掌握ML的基本概念

術語-人工智能(AI)和機器學習(ML)經常可以互換使用。但是,在數據科學領域,這兩個術語是不同的。本書對其定義如下:

  • AI-是使機器能夠模擬人類智能的硬件和軟件的總稱。要想實現這個智能,設計一些列技術,包括ML、機器視覺、和自然語言處理。

  • ML是AI的子集。ML使用統計學的技術是程序通過訓練而學習,而不是通過規則進行編程。

ML系統處理訓練數據已逐步提高性能,提供伴隨經驗而提高的結果。數據來源於網絡邊緣-可以時IoT設備、邊緣服務器或邊緣設備-發送到cloud端進行訓練。

機器學習是人工智能的一個子集,對於幾個關鍵概念,有如下關係:

算法 < 深度學習 < 機器學習 < 人工智能

一旦機器學習系統被訓練完成,它就能分析新的數據並在訓練數據的上下文中對其進行分類,這被成爲推理。

機器學習執行的2個地方:

  • Cloud

    機器學習通常在遠端、功耗和計算密集的服務器端進行。

  • Edge

    ML推理通常在本地進行,將在提供輸出的設備上進行。術語-edge,可能是指IoT設備,邊緣服務器或邊緣設備。

1.2 差異化和降低成本

儘管機器學習的第一波浪潮專注於雲計算,將爲簡化模型而使其能夠運行在低功耗硬件上的改進技術和在邊緣設備上提高的計算能力結合起來,使差異化和降低單位成本成爲可能:

  • 減少延遲;提高可靠性和安全性

    對於用戶而言,無法響應的APP或無法加載頁面的延遲都是一件煩人的事,但是,許多對時間要求苛刻的應用-比如自動駕駛系統-不能簡單地依賴於雲系統,因爲響應延遲可能會產生嚴重的安全隱患並嚴重影響車輛性能。

  • 功耗

    將數據從設備傳輸到雲端服務器增加了機器學習系統的電力成本,因爲在系統中遷移數據畢竟會消耗電力。基於雲端或網絡執行的機器學習也會增加帶寬負擔,這可能很重要。因爲機器學習往往需要大量的數據。通過儘可能多地在設備上執行機器學習,網絡上和雲基礎設備的功耗和複雜性就會降低。

  • 隱私和安全

    消費者和公司越來越重視數據的安全性。沒有人希望自己的隱私遭到破壞,但是不斷地在雲和設備間遷移數據,這種風險正在增加。當在設備上進行處理時,有關數據存儲和傳輸的法律問題以及隱私法規(例如,歐盟最近的通用數據保護法規(GDPR))的合規性將被降到最低。

  • 個性化

    除了隱私和安全性,在設備上執行機器學習還將導致更多的個性化的計算經驗。隨着更多設備變得智能,它們將需要適應自身的即時環境,並根據周圍環境的場景作出即時響應。當這些設備將用戶和他們關心的事物連接起來時,人工智能就成爲可能,且因人而異。在雲端爲每個用戶提供唯一的維護、定製化的模型是一項巨大的持續開銷,因此,可以運行自己定製化模型的邊緣設備將提供競爭優勢。

最後,邊緣設備上的機器學習將實現一個更可靠、更快響應和更安全的用戶體驗,還能降低單位成本、個人數據風險和功耗,並且也無需網絡連接。

1.3 探索機器學習的機會

機器學習與新設備無關,而是可以利用所有的設備。機器學習使設備能夠更好地利用視覺、聲音、熱量和振動,從而關聯其及時環境。這項革新將會創造新的商業模型、降低成本並優化一些列參數的性能。

儘管機器學習的好處令人興奮,但是往產品中添加機器學習的第一步就往往令人生畏。機器學習的要求因模型和工作負荷差異很大;沒有一勞永逸的方案。幾乎所有的模型都允許精度和性能自由可調。這種靈活性允許在設備硬件和模型能力之間尋求一個平衡點,但是,這卻帶來了額外的問題:

  1. 使用場景是什麼?
  2. 哪種神經網絡(NN)模型提供了最佳的性能/精度平衡?
  3. 應該選擇哪種硬件補償算法? 性能很低的硬件可以和精度較低的模型一起使用嗎? 可以根據RAM調整模型嗎?
  4. 選擇哪些工具可以解決這些問題?
  5. 更重要的是:如何平衡這些問題,以最佳的單位成本提供最佳的性能?

2 配置ML環境

本章重點:

  1. 理解ML平臺的組件
  2. 選擇ML開發環境
  3. 案例研究

選擇一個合適的解決方案需要做許多平衡:從小的、低功耗的微控制器單元(MPU)-對成本和功耗有限制的系統,到中央處理器(CPU)-更高性能和通用目的,再到圖形處理器(GPU)-提高圖像處理應用的性能,還有專用的神經網絡處理器(NPU)-更高密集和更高效的機器學習處理。本章將梳理這些內容。

2.1 理解ML平臺的組件

選擇什麼樣的平臺運行機器學習?令人驚訝的是,就硬件而言,它可能需要的就是你身邊現有的東西。許多平臺已經能夠單獨在CPU和GPU上運行ML應用了。(在第5章將會看到這樣的示例)

對於某些應用,更高的性能要求可能需要專用ML處理器,比如,神經處理單元(NPU)。但是,如果每個處理器上運行的軟件棧不同,而將NPU和CPU及GPU混合在一起運行ML,無疑將會增加複雜性。這個問題催生了一個軟件層,負責對軟件應用程序隱藏底層硬件的複雜性。

異構計算是指使用不止一種處理器或硬核以實現更好的性能和更高的效率的系統

異構計算平臺允許應用開發人員可以選擇自己喜歡的NN框架去寫應用,比如’Google’的’TensorFlow’、‘Facebook’的’Caffe’和’Caffe2’,而不必關心來自不同供應商的處理器類型。如圖2-1所示,軟件層負責隱藏硬件並適配不同的應用程序。

圖 2-1

圖 2-1: 一個異構計算平臺的示例,含有多個硬核,以及開源代碼

開源標準有助於降低複雜性,保證不同供應商方案的兼容性。這方面,一個顯著的例子就是開源神經網絡交換格式(ONNX),目前由ARM、Microsoft、Facebook、Amazon和其他的一些公司支持,提供了訓練框架和運行時引擎的通用格式。

你有許多運行ML模型的選擇:

  • 長時間運行的低功耗微處理器CPU:

    小型模型可以在這些低功耗芯片上運行,降低成本。比如,檢測喚醒系統其它部分的動作和行爲,以便實施更詳細的分析。

有時候,微處理器帶有DSP,數字信號處理器,它可以加快處理,而不需專用的DSP即可爲ML提供乾淨的信號。這可以節省成本、面積和開發時間,尤其是在沒有DSP軟件開發背景的前提下。

  • 高效、通用CPU:

    依賴內核的配置和數量,可以很好地運行完整的ML。例如:用於隱藏字幕生成的實時語音識別。

  • 多媒體和CPU內核:

    通常運行和移動設備內核運行相同的模型,從而提高性能和效率。如果設計中已經考慮使用GPU,則可以把CPU用於其它任務,以最大化效率。

  • 專用NPU:

    專用芯片以較低的功耗提供了運行通用ML模型的最高性能。比如,確定實時高清視頻源中的那些像素對應一個人。

要想準確地知道你的設備中需要哪些組件,需要多方面的仔細考慮,是我們接下來要討論的內容。

2.2 選擇ML開發環境

選擇合適的硬件,是否需要專用NPU,以及怎樣把它集成到系統和工具中,這些都因情況而定。但是,對於受限的環境,以下幾個功能必須在架構設計中考慮進去:

  1. 數據處理:

    你的邊緣解決方案需要哪種數據提取和處理?這可能依賴於你要運行的模型類型和同時運行的模型數量。這些模型有多複雜?它們是否有計算能力和帶寬限制?

  2. 連接:

    設備上可以做什麼?什麼需要連接到雲端?什麼必須要留在雲端?

  3. 集成:

    是否有集成或者依賴管理?開發者社區將使用哪些框架?不同框架開發的模型,系統如何支持?

  4. 功率、尺寸和熱量等:

    你的邊緣設備是否有功率、尺寸和熱量等方面的限制?

  5. 精確度:

    想要的精度是多少?儘管你首先會想,精度越高越好,但並不總是這樣。到一定水平後,就會達到一個收益遞減點。在某些場景下,提高2個百分點的精度可能需要在計算能力和內存方面要求10倍的增加。所以,應該非常清晰地知道特定情況下的精度水平。

  6. 隱私和安全:

    你的邊緣解決方案對隱私和安全有哪些考慮?

  7. 工作負載:

    NPU是否大部分空閒,用其它也空閒的CPU或GPU是否可以完成?另一方面,雖然CPU或GPU能夠運行模型,但是如果這些資源的負載已經很重,使用NPU是否是一個更好的方案?

綜上考慮,所需的組件是不同的。一個CPU或GPU是否已經足夠?是否需要添加一個NPU?在成本限制內,滿足需求的NPU的大小?綜合市場上已有的不同處理核的能力,匹配你的需求。

下面的案例研究,提供了一個可以在邊緣嵌入式設備上運行的實例。

2.3 案例研究:用於哮喘病人的邊緣機器學習的實例

例如, Amiko Respiro提供了更智能的呼吸技術,幫助哮喘病人更輕鬆的呼吸。該方案包含基於ML的傳感器,作爲標準呼吸器的附件,以提高哮喘病的治療。這些智能傳感器必須是低功耗的,可擴展的,能夠有效地控制成本,並且可以和一個基於可連接的平臺上的面向病人的APP配合使用。

Respiro傳感器模塊的核心是一個超低功耗的ARM Cortex-M處理器,能夠:

  • 在設備上實現數據處理,無需連接到雲端

  • 使用低功耗藍牙(BTLE)連接到智能手機

  • 效率曲線可延長設備電池壽命

該解決方案使用機器學習解釋呼吸器的振動數據。傳感器被訓練,識別病人的呼吸形態和吸入時間,計算出重要的參數,諸如肺活量和呼吸技術。

處理器允許Respiro運行實時ML算法,以識別行爲模式並解釋傳感器模塊本身內的數據。用戶無需等待後臺處理詳細的傳感器數據。當用戶按下觸發鍵,傳感器模塊立即識別用戶的呼吸方式數據並提供低延時的、用戶私有的數據反饋。

Respiro傳感器和病人安裝在手機上的APP綁定在一起。傳感器收集呼吸器的使用數據,而不會中斷藥物輸送方式,併發送數據和反饋給APP。該傳感器模塊也很方便的添加新功能,擴展更進一步的創新互聯醫療解決方案。

3 爲什麼軟件真正重要?

本章重點:

  1. 利用現成的硬件、工具和模擬器縮短上市時間
  2. 通過軟件實現差異化
  3. 訓練和部署ML模型

根據著名的技術專家Mark Andressen的名言,“Software is eating the world.”。稍有不慎,軟件就會佔用大量的開發預算,並推遲產品的開發計劃。但是,軟件創新和ML功能也日益成爲設備供應商差異化的關鍵因素,如果你想再產品中加入ML功能,就必須對你的具體軟件需求有一個深刻的理解。

3.1 利用現成的硬件、工具和模擬器縮短上市時間

降低軟件和ML模型開發風險的最快方法就是,使用與最終產品功能儘可能接近的硬件進行原型設計。這可以通過使用行業標準的CPU和CPU實現,或者對之前的產品進行迭代實現。

爲了滿足你的需求,建議選擇大型供應商提供的組件-最好是具有豐富的原型設計平臺的生態系統。這意味着你可以在重要的領域,比如性能、功率或者硬件的連接性上,選擇與你的最終設計比較接近的技術。

一旦原型平臺定下來,下一步就是搭建有效的開發環境。根據你的設備,這可能包括:

  • 操作系統
  • 編譯器
  • 高性能庫
  • 調試和性能分析工具
  • ML框架

因爲開發團隊需要時間來建立這些工具和庫的專業知識。那麼在已經熟悉的平臺上構建,可以提高生產效率和創新能力,從而大大減低軟件開發的風險。

理想情況下,團隊開發的工具和軟件應可移植到最終的平臺上。當早期的硬件爲測試並降低緊要關頭的延時和性能意外而做好準備的時候,通用的標準和架構可以使集成變得更爲順利。

如果選擇的架構提供模擬器和快速建模工具,開發風險就會進一步降低。當今的快速模型和模擬器完全有能力在硬件準備好之前,在模擬器上運行完整操作系統並運行最終的應用程序。使用可重複的模擬器,提供了更進一步的容錯和性能預測。模擬器上有效運行的項目通常都能成功地部署到真正的硬件上。

簡而言之,爲了有效降低軟件開發的風險,請選擇一個架構和現成的原型平臺:

  • 最終產品所需的功能相近

  • 團隊熟悉的一組通用工具、庫和框架

  • 提供強大的仿真解決方案,可最大程度減少集成軟件和硬件的時間

3.2 通過軟件實現差異化

選擇了硬件體系架構,也就等於選擇了軟件棧和生態系統。大的生態系統具有專業的團隊,能夠持續地優化和改進它們的軟件棧。例如,ARM提供了Arm NN,計算庫,和CMSIS-NN。如圖3-1所示,在4個月的時間裏,在Cortex-A系列CPUMali GPU上的AlexNetInceptionSqueezeNetVGG-16提高了1.6倍~2.6倍,

在開發和維護都很活躍的軟件棧基礎上開發,可確保在未來的性能和安全改進中受益,無需自己再開發維護。

Figure 3-1

圖3-1 軟件性能提升

所有設計都有針對硬件的軟件平衡選擇。通常,軟件解決方案可以使團隊在發佈之前持續創新軟件功能,優化機器學習的模型架構和性能訓練,直到最合適。

在某些情況下,生態系統和ML研究團隊提高的性能,使你之後的產品版本具有顯著的差異化性能和功能,而無需大的硬件變動-只要這些功能與原始設計的硬件緊密相關就可以。

選擇硬件方案的時候,請密切注意一下方面的軟件性能:

  • 優化的軟件協議棧:

    這是實現硬件性能最大化的關鍵指標。

  • 生態軟件:

    必須能夠提供持續的性能和安全更新。

  • 自己的解決方案:

    考慮哪一部分硬件實現,哪一部分軟件實現更爲靈活方便。

3.3 訓練和部署ML模型

神經網絡的優點是其靈活性,其缺點也是靈活性。可以通過權衡精確度,性能,內存要求和硬件兼容性,適應你想要的性能參數-但是爲了最佳部署,而尋求某種平衡和訓練神經網絡並不是一件容易的事。正如軟件部署一樣,同樣需要花費精力在這些工具的使用上。爲了最小化風險,請尋找基於或者兼容TensorFlowONNX的開源代碼的方案。

隨着模型訓練和優化技術的提高,曾經侷限於數據中心的人工智能(例如語音和圖像識別,推薦和預測),應用在手機和嵌入式設備上的情況越來越多了。當然了高性能的NPU除外。

當今世界,最流行的AI平臺無疑是智能手機,其中包括的ML功能有,文本預測,語音識別和計算攝影。但是,隨着人們越來越瞭解嵌入式ML開發的好處,這些功能正在擴展,並在越來越多的嵌入式設備上可用。比如,有效的語音關鍵詞搜索(例如,聽一個喚醒詞或簡單的命令),已經在微控制器上得到了充分證明。

ML分爲2個階段:訓練階段-負責學習;推理階段-將學習應用。今天,訓練通常發生在服務器或相似的設備上,但是推理已經越來越多地遷移到邊緣設備上了,比如家庭、工廠、和工作場所的消費級和工業級設備。

ML工作負載的特點是,對計算和內存帶寬有着苛刻的要求。但是,諸如量化、修剪和模型壓縮之類的最新優化技術將使先前僅限於數據中心的解決方案部署到移動和嵌入式設備上成爲可能。

充分利用可用的計算資源變得越來越複雜。儘管,在專用的ML芯片上,ML模型可以高效的運行;但是,在許多情況下,在一個或者多個CPU或GPU內核上運行某些神經網絡(或者部分神經網絡),可能會更加節能、低延遲和節能,當然,這完全取決於設備、其工作狀態和工作負載。

尋找一個平臺,使開發人員和數據科學家可以在跨CPU、GPU和NPU的高效節能的環境中輕鬆構建和運行ML應用,並在現在和未來的設計中保留最大靈活性。該軟件應該提供與現有ML框架(例如TensorFlowPyTorch)的橋樑,同時隱藏硬件的實現細節。這可以允許開發者繼續使用他們喜歡的框架和工具,同時異構平臺將結果無縫轉換在底層硬件上運行。

4 爲什麼生態系統很重要?

  • 重用已存在的資源
  • 尋找更好的產品和市場的鍥合度

有句老話:"當你嫁給某人,你就嫁給了他的家庭。"當你選擇架構時,或多或少,把自己置於了一個大的生態系統中,它包括芯片供應商、OEM廠商、軟件供應商和諮詢顧問;各種培訓和教育材料;尤其重要的是,其經驗豐富的工程師人才庫。

如本章所述,充分利用生態系統是最小化成本和縮短上市時間的重要手段。

4.1 重用已存在的資源

企業成功最重要的資產之一就是建立和利用內部專業知識的能力。建立在可互操作標準之上的生態系統允許解決方案和技能可以跨項目遷移,減少上市的風險和時間。

基於標準的設計可以確保軟件和對ML投資的未來發展:能夠以對軟件棧最小的破壞切換到硬件,可以給你遷移到更好解決方案的靈活和自由。

爲此,用途單一的硬件堪稱一把雙刃劍:雖然最初軟件開發很快,但是如果平臺不能提供源源不斷的具有各種性能和功耗特性的新產品,在未來的設計中,你可能不得不轉向別的未結盟的供應商。這種技術斷層意味着,在原先的設計中積累的專業知識不能傳到下一代產品中-甚至不能迭代到當前的產品中。最終,最初的速度可能讓位於項目最終的停滯。

ML的發展也帶來了一些列的挑戰:研究社區發展迅速,幾乎每天都會發布新的、更好的運算符,激活功能和NN架構。無論你選擇在CPU、GPU還是NPU上運行模型,都應該避免,當未來的研究或者競爭對手的開發,在軟件中支持新的、定製化的操作符時,你的模型都不應該受到硬件的影響

4.2 尋找更好的產品和市場組合

很少有公司全面定製設備,即使最大的公司,也需要重用他們自己的“輪子”或者外部可用的“輪子”。

當你選擇一個大的、充滿活力的生態系統,也就意味着你選擇了潛在的功能模塊和供應商,它們將會給你最完美的產品/市場組合。

此外,選擇一個大生態系統,更容易發現滿足你大部分需求的現成解決方案。這可以減少你自己實現功能的數量,進一步減少成本。

4.3 站在巨人的肩膀上

上市速度和差異化是任何產品設計的關鍵因素。投入到一個基於標準的生態系統中,意味着公司可以依靠合作伙伴社區,而不是從頭開始"造輪子"。

這一點在ML中最爲重要。隨着新的商業機會和創造性的現實世界中的解決方案的增加,新的模型和算法必須被適應。開源計劃允許公司擴展其專有框架和工具以更快地將創新產品推向市場方面發揮了重要作用。

ML標準化是一項重要但極具挑戰的工作,因爲一切東西都在快速變化,從使用場景到軟件棧和硬件處理器。甚至,數據也會帶來問題。但是,從系統架構的角度來看,一些廠商建立了跨越生態系統的標準化。

機器學習需要2種框架才能協同工作:

  • 訓練框架,比如TensorFlow, 數據科學家和ML工程師使用它來訓練數據中的新模型。

  • 推理框架,比如Arm NN,基於上面訓練出來的模型,在底層的CPU、GPU和ML專用IP核上有效地運行。

當ARM將其開源推理引擎-Arm NN-捐獻給Linaro Machine Intelligence計劃時,就是號召整個生態系統貢獻和開發一個簡單的優化後的推理引擎。這樣,就會使生態中的每一個人都可以從別人的專業知識和優化中受益。

5 邊緣機器學習的10個例子

  • 在邊緣應用機器學習
  • 在邊緣解決問題

在邊緣引用ML的潛力是無限的,以下是10個啓發性的解決方案:

  • 安全、智能的低功耗智能家居安全領域:

    使用基於設備的、始終在線的、動作、人和聲音的檢測來識別家庭成員和入侵者。只有當檢測到動作或聲音的時候纔開始記錄,並給用戶的智能手機發送一個通知。

  • 醫院工作人員和訪客跟蹤:

    提醒接待人員未知人員和未授權人員訪問。邊緣識別意味着永遠不會存儲或傳輸訪客和患者的圖像。

  • 植物病害檢測:

    使用圖像識別智能手機應用APP可以以幾乎100%的精確度檢測到病變-甚至在離線狀態下。

  • 快速選擇產品:

    通過攝像頭對水果和蔬菜進行分類,自動識別不同的類別並提高生產線效率。

  • 無人機應用:

    通過基於相機的視覺和運動預測,識別並跟隨目標,同時避開障礙物。

  • 輔助駕駛系統:

    通過相機、運動傳感器、和GPS實時理解和指導司機的駕駛行爲,減少碰撞。

  • 增強的人機交互:

    簡化交互、提高生產效率,並在設備間創造更流暢的用戶體驗。

  • 設備翻譯機:

    使交流成爲可能-無論位置多麼遙遠-避免了昂貴的漫遊費用。

  • 設備優化:

    通過優化操作系統對各個應用程序的調度來顯著延長電池壽命。

  • 計算攝影:

    解決棘手的問題,比如遠處的物體和弱光條件,以或得接近完美的圖像。

6 參考網站

ARM官網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章