為什麼機器學習在嵌入式系統中不那麼成功?

再次正確。

這是一個特殊的開發套件" aka mini-computer",專門為在其上運行ML模型而開發。 它非常強大,說實話,超級性感。

但是這裡有些遺漏

我有很多朋友正在做很棒的硬件寵物項目。 他們通常在那裡使用Arduino或STM32(又名Hardcore

Arduino)。

為什麼機器學習在嵌入式系統中不那麼成功?

為什麼機器學習在嵌入式系統中不那麼成功?

為什麼機器學習在嵌入式系統中不那麼成功?

Smart helmet, Robotic car and ALU

我認識幾個對Jetson Nano和類似設備感到興奮的AI工程師。 他們被認為是嵌入式AI的未來。

為什麼機器學習在嵌入式系統中不那麼成功?

Photo by Nvidia

現在。 請考慮"在生產級別使用了多少這種設備?"

答案-小

考慮一下您家中有多少個電氣設備。 然後在您的汽車中添加大量的控制器。 您工作中的安全系統。 我可以繼續很長的清單。

每個設備都有一個控制器。 通常,它是微型且超級便宜。 它無法與Jetson或Raspberry的資源和功能相提並論。

假設您有一個微控制器。 它的主要任務是處理您的手指觸摸屏幕。 它具有ARM Cortex-M0處理器,256KB內存(其中只有80–120可用)。 這是一個實時系統,因此您可以花很少的時間來推斷模型,例如100微秒。 您的目標是在那裡改善或替換某些算法。

祝您好運,歡迎來到"嵌入式AI"世界。

嵌入式世界"由資源有限的1-2美元成本的芯片組成。 這就是在生產水平上使用的東西。

2.純基礎設施

我一直在從事上述項目。 一切都很棒。 我開發了一個可能必須適合該微控制器的小型網絡。

為什麼機器學習在嵌入式系統中不那麼成功?

Photo by Matty Lynn Barnes on Unsplash

是時候開始將模型從我的電腦轉移到設備了!

1.量化。

該處理器無法執行浮點數運算。 即使可以,我們也不會使用它,因為這是一個非常複雜的操作,需要很多時間。

因此,我對權重量化進行了模型化-將值的連續範圍轉換為離散值的有限範圍。

你猜怎麼著? PyTorch和TensorflowLite都不完全支持它。 它們不支持所有激活函數(儘管我使用了非常簡單的HardTanh)。 PyTorch甚至無法將量化模型保存到文件中。

所以,我不得不手工做。

2.推理代碼生成

您想在該控制器上運行模型。 對? 因此,您需要使用C代碼進行模型推理。

很難過,但您必須手動完成。 為什麼? PyTorch沒有推理代碼生成的功能。 相比之下,TFLite具有功能,但功能相當有限,並且不支持常見的激活函數。

因此,我再次手動完成。

我在工作中遇到了很多這樣的情況。 這不是PyTorch或TF方面的重拳,而是"呼救聲"。

*** ML社區的另一面是,正在尋找"嵌入式AI"的專業工具,但還找不到它。 ***

有什麼好處嗎

我看到大型半導體公司對AI產生了極大的興趣,它們正在做非常有價值和重要的事情。 它們值得另一篇文章,因此我列出其中一些,以免使本文太長。

  • CMSIS-NN —用於Arm Cortex-M CPU的高效神經網絡內核
  • 產生高效推理代碼的編譯器,這些推理代碼根據您擁有的硬件進行了優化
  • 還有很多其他很酷的東西
為什麼機器學習在嵌入式系統中不那麼成功?

Photo by Ahmed Hasan on Unsplash

(本文翻譯自Andrew Zhuravchak的文章《Machine Learning Fails When It Comes to Embedded System. Here's Why》,參考:https://towardsdatascience.com/machine-learning-fails-when-it-comes-to-embedded-system-9ce6def9ba75)


分享到:


相關文章: