如果說傳統物聯網(IoT)更多體現的是線性思維,即物體產生資料,透過網際網路傳到雲端,然後分析產生價值。那麼今天的物聯網則完全是立體三維概念,需要同時解決即時應用、成本、分析預測、精準性、人工智慧(AI)、資訊安全等多重問題。如何讓這些元素之間產生和諧的動力,將運算濃度和運算分佈變成「邊雲協同」的分散式架構,是當前業界最為關注的話題。

物聯網從邊緣趨向負載整合

AI的發展離不開資料,因為它需要大量的資料進行訓練。在當前這樣一個萬物智慧互連的時代,資料量的產生速度超出了一般人的想像。以智慧攝影機為例,隨著攝影機的解析度從1080P轉向4K,其一天所採集到的資料量將達到200GB。面臨同樣問題的還包括智慧醫院、自動駕駛和智慧工廠,它們一天所產生的資料將分別超過3TB、4TB和1PB。有人做過這樣的預測,到2020年,一個網路用戶平均每天將產生的資料量大概是1.5GB。

然而物聯網產業體量巨大,零碎化程度嚴重,將AI推向邊緣側其實並不是一件簡單的事情。況且在2012年以前,AI在做影像辨識時的準確度是低於人類的。下圖中,虛線代表人類辨識水準,實線代表機器辨識錯誤率。可以看到,2012年以前機器辨識的錯誤率還是高於人類的,但呈逐漸下降趨勢,2012年之後,隨著AlexNet等神經網路的出現,AI水準才出現了質的飛躍。

20180807_Intel_NT61P3

因此,在一個邊緣協同的端到端系統中,由於不同網路來源的功耗、運算性能和所能承擔的成本各不相同,在選取硬體架構時往往會有特定要求。英特爾(Intel)副總裁兼物聯網事業部中國區總經理陳偉表示,英特爾的做法是根據使用者需求提供不同架構的解決方案,涵蓋Xeon處理器、Xeon Phi處理器、Movidius/Nervana神經網路處理器和FPGA、網路、記憶體技術等硬體平台,以及多種軟體工具及函式程式庫,最佳化開源架構,讓他們進行自主選擇。

英特爾中國區物聯網事業部技術長兼首席工程師張宇則強調了在邊緣趨向負載整合是物聯網演進的一個必然趨勢。也就是說,原來在不同設備上獨立存在的負載會越來越多地透過虛擬化等技術,整合到一個單一的高性能的運算平台,以實現一個綜合的複雜的功能,各個功能子系統既能分享裝置提供的運算、儲存、網路等資源,還具有一定的獨立性,避免彼此的相互影響,從而簡化系統架構,降低系統總體。

同時,負載整合實際上也為邊緣運算的實現以及為實施AI的應用提供了條件。整合後的裝置既是邊緣資料的匯聚節點,同時也是邊緣控制的中心,這為邊緣智慧提供了處理所需的資料,同時也提供了控制的入口。因此英特爾認為AI和負載整合的結合,會在今後的邊緣運算的系統中發生。

視訊是終極物聯網感測器

來自《戰略師的物聯網指南》的資料顯示,到2021年,邊緣到雲端產業支出預計將達到110億美元。在這一涵蓋智慧製造、智慧城市等領域的巨大物聯網機遇中,智慧裝置、感測器和互連事物捕捉的視訊將會佔據60億美元的份額。

為此,英特爾日前針對軟體開發人員以及開發、監控、零售、醫療、辦公自動化、自動駕駛等領域的資料科學家,推出了開放視覺推論及神經網路最佳化軟體平台——OpenVINO (Open Visual Inference & Neural Network Optimization)。這是一個快速開發高性能電腦視覺和深度學習視覺應用的工具套件,包括英特爾深度學習部署工具套件,具有模型最佳化器、推論引擎、超過20個預先訓練的模型,以及針對OpenCV和OpenVx的最佳化電腦視覺庫。OpenVINO工具套件可透過CPU、GPU、FPGA、Movidius VPU等硬體進行部署,增強視覺系統功能和性能,輕鬆實現邊緣到雲端的異質執行。

20180807_Intel_NT61P4

測試結果顯示,在英特爾Core i7 7800X處理器上執行Google Nex網路,相應的性價比是目前市場上主流解決方案的兩倍以上;如果選用FPGA,其性能、功耗、成本比值的綜合考量性能大概能達到1.4倍以上;而使用Movidius的話,性能可進一步提升至5倍以上。

作為一家平台化的公司,英特爾鎖定高性能電腦視覺和深度學習視覺兩大熱點領域,並提供包括CPU、核顯(Integrated GPU)和深度學習加速器(FPGA、Movidius VPU)在內的完整硬體解決方案都不令人意外。但在陳偉看來,實際應用中,不但指望產生一個一勞永逸方案的想法是不切實際的,即便在如何深度挖掘這些硬體的運算潛力方面,也仍然存在很多壁壘。

電腦視覺和深度學習開發工具OpenVINO

從AI的演進過程中可以看到,早期的AI運算,無論是訓練還是推論都發生在資料中心,因為只有資料中心才能夠提供如此驚人的運算能力和電力消耗。然而近年來,隨著網路壓縮演算法的廣泛使用,以及AI專用晶片的出現,使得一些深度學習運算可以從雲端推送到邊緣,使得智慧攝影機、智慧型網路視訊記憶體、NVR等產品逐步面世。

在整個端到端的網路中,不同的網路來源所能提供的運算量是不一樣的,能夠支援的作業系統也各不相同,因此有各自適用的晶片架構。例如在攝影機中,一個攝影機的功耗大概是15W,從15W中能夠提供給智慧運算的能量有2-3W,對於這樣的使用場景,類似於ASIC這樣的架構是最適宜的;然而在資料中心,通用處理器是最適宜的,這就給開發者帶來了一定的困擾。簡單而言,就是說為某一種晶片所開發的軟體在面對一個新架構時,很可能是不適用的,這在無形中就增加了開發的門檻。

張宇說自己跟很多從事AI應用開發的開發者交流過,發現最大的困擾來自以下兩個方面:一是網路模型已經訓練完畢,但由於推論平台能力有限,只能下載網路模型的一部份而不是全部;另外一個則是將訓練好的模型推送到推論平台之後,不是性能達不到設計要求,就是模型架構得不到英特爾Movidius或是FPGA架構的支援。

20180807_Intel_NT61P5

在視覺領域,傳統的電腦視覺和深度學習方法已在廣泛使用中。深度學習方法在物件檢測、目標辨識方面已經開始替代傳統的電腦視覺,但在光流運算或是影像增強領域,電腦視覺仍然有自己的用武之地。

OpenVINO對這兩類方法都有很好的支援,從而幫助開發者將已經訓練好的網路模型部署到目標平台之上進行推論操作。考慮到目前比較流行的深度學習架構包括Caffe、Tensor Flow、MxNet三種,模型最佳化器和推論引擎可以把開發者基於開放的深度學習架構所開發的網路模型,針對所選用的目標平台進行最佳化,然後將這些最佳化的結果轉換成包含網路拓撲結構、模型參數和模型變數的中間表述檔(IR檔)供推論引擎讀取,再利用相應的硬體外掛程式將IR檔下載到目標平台上進行執行,開發者可以透過測試程式或應用來驗證結果的正確性。

傳統電腦視覺工具庫則是經過預編譯的,支援OpenCV3.3版本。此外,OpenVINO還包含了對OpenVX以及OpenVX在神經網路擴展的支援,同時在媒體、視訊、影像處理領域還包含已經非常成熟的英特爾媒體軟體開發套件(Media SDK),可以幫助開發者非常方便的利用英特爾CPU中整合顯卡的資源來實現多種視計格式(H.264、H.265)的編碼、解碼以及轉碼的操作。這樣,一個工具庫同時支援多種作業系統,使用者可以非常方便的調用英特爾硬體資源,實現性能的提升,達到事半功倍的效果。

讓我們一起看看整合了先進軟硬體的英特爾視覺解決方案如何在邊緣節點(包括攝影機和本機伺服器)處促進強大的深度學習推論功能在各行各業中的應用:

  • 交通監控。採用英特爾FPGA和Movidius VPU的攝影機可捕捉資料,並自動將其發送至下游十字路口系統,協助交通部門最佳化交通和做好規劃。這些資訊可通過車載系統或應用直接傳達給司機,幫助他們規劃路線。
  • 公共安全。借助使用OpenVINO工具套件開發的Myriad VPU和演算法,經過訓練的深度神經網路現在可利用推論功能透用臉部辨識分析並辨識失蹤兒童。採用了這一技術的城市執法機構可在經過訓練的資料集匹配到人群中已報告失蹤兒童的臉部時,即時收到相關通知。
  • 工業自動化。英特爾視覺解決方案可協助智慧工廠融合OT和IT,重塑工業業務模式和成長策略。生產控制將可自動、流暢運轉,縮短上市時間。
  • 機器視覺。借助AI增強工業機器視覺,支援更精準的工廠自動化應用。解決方案組合攝影機、電腦和演算法,以分析影像和視訊,在邊緣提供可以用於指導行動的重要資訊。
  • 回應式零售。在邊緣使用英特爾電腦視覺解決方案的零售商,可以快速辨識特定客戶或客戶行為模式,從而提供個性化的精準行銷服務。
  • 營運管理。透過使用基於英特爾架構的電腦視覺解決方案,零售商可簡化運營、管理庫存、最佳化供應鏈和增強推銷能力,並協助他們發掘資料的更高價值。

OpenVINO的關鍵

既能夠實現Caffe、Tensor Flow、MxNet架構之上所開發的模型導入,還能夠進行模型最佳化,採用Python語言進行編寫的模型最佳化器居功至偉。一個簡單的使用場景就是在通用處理器上所產生的訓練結果,由於受到資料精度、記憶體、作業系統等多方面的限制,在部署到前端的嵌入式推論平台上時會受到各種限制,而在模型最佳化器的協助下,就可以自動實現。

張宇列舉了兩個最佳化的案例。第一,在做訓練的時候,有可能會存在一個Dropout層,它的主要作用是在訓練過程中讓一定比例的神經元失效,從而避免在訓練過程中讓模型參數陷入局部極小值,導致失去最優效果。但Dropout層在做推論的時候是沒有必要的,因此OpenVINO中的模型最佳化器可以自動檢測當前的網路模型,如果發現有Dropout層存在,就會自動將其剔除掉。第二,將神經網路模型裡包含的卷積層、全鄰接層、啟動函數層的網路最佳化工作交給模型最佳化器進項實現,目前英特爾已經驗證超過了150個在Caffe、MxNet和Tensor Flow上所設計的模型。

推論引擎也是深度學習部署套件的一個重要組成部分,由一套C++函式程式庫組成。它可經過簡單、統一的API介面來支援英特爾的所有架構,實現深度學習推論所需要的操作,例如對資料的讀取,對輸入輸出資料格式的定義、以及調用相應的硬體外掛程式等。

目前,用戶可以把中間檔下載到英特爾Arria10 FPGA板卡之上,調用DLA庫,實現在FPGA上的網路推論操作;或者透過MKLDN外掛程式,把中間檔下載到英特爾Atom、Core和Xeon處理器上,在這些通用CPU之上實現深度學習的運行;或者,透過CLDNN和OpenCL介面將神經網路運行在英特爾的整合顯卡之上,以及利用Movidius外掛程式把神經網路運行在基於Myriad2/Myriad X深度學習運算棒上。今後,如果有一個新的硬體架構需要支援,就可以設計一個相應的外掛程式來實現功能的擴展,而不需要改變外掛程式之上的軟體,從而能夠保護開發者的開發成本。

20180807_Intel_NT61P8

OpenVINO工具套件的另一個優勢在於其存取實際上是分層的,不同的開發者可以根據自己的使用要求和開發能力去選擇不同的API介面進行調用。對於新手來說,OpenVINO中包含了很多應用的示例,比如物件檢測、人臉辨識等;對於能力更強的使用者,OpenVINO可提供網路的實現,也被稱作Model Zoo,他們可以在此基礎上實現相應的應用開發。如果要設計一些新的網路模型,或是直接調用硬體底層介面實現對硬體的直接存取,則可以利用模型最佳化器和推論引擎將網路模型轉換成硬體可辨識的語言後,再下載到硬體平台上執行。