在Cloudflare Workers上探索WebAssembly AI服務(wù)

來源: Cloudflare
作者:Guest Author
時間:2021-04-20
17207
邊緣的AI帶來諸多好處。一個是可擴展性——將所有數(shù)據(jù)發(fā)送到集中式云是不切實際的。事實上,一項研究預(yù)測,到2025年,全球數(shù)十億物聯(lián)網(wǎng)設(shè)備產(chǎn)生的數(shù)據(jù)將達到90兆字節(jié)。另一個是隱私性——許多用戶不愿意將個人數(shù)據(jù)轉(zhuǎn)移到云上,然而在邊緣處理數(shù)據(jù)會更迅捷。

本文客座作者為來自Latent AI的Videet Parekh,Abelardo Lopez-Lagunas和Sek Chai。

邊緣網(wǎng)絡(luò)為人工智能(AI)的性能和適用性提供了重要的機會。人工智能技術(shù)使得運行引人入勝的應(yīng)用程序成為了可能,例如對象和語音識別,導(dǎo)航,還有推薦(recommendations)。

邊緣的AI帶來諸多好處。一個是可擴展性——將所有數(shù)據(jù)發(fā)送到集中式云是不切實際的。事實上,一項研究預(yù)測,到2025年,全球數(shù)十億物聯(lián)網(wǎng)設(shè)備產(chǎn)生的數(shù)據(jù)將達到90兆字節(jié)。另一個是隱私性——許多用戶不愿意將個人數(shù)據(jù)轉(zhuǎn)移到云上,然而在邊緣處理數(shù)據(jù)會更迅捷。

當AI服務(wù)的分布遠離集中式數(shù)據(jù)中心,而更靠近服務(wù)邊緣時,就可以在不移動不必要的數(shù)據(jù)的前提下提高整體應(yīng)用程序速度。然而,要使深云(deep-cloud)中的AI在邊緣硬件上高效運行仍然存在挑戰(zhàn)。在這里,我們使用術(shù)語“深云”來指代高度集中的大型數(shù)據(jù)中心。部署邊緣AI服務(wù)可能很困難,因為AI需要占用大量計算空間和內(nèi)存帶寬。我們需要調(diào)整AI模型,以便從根本上減少邊緣的計算延遲和帶寬。

分布式AI服務(wù)案例

分布式AI的邊緣網(wǎng)絡(luò)基礎(chǔ)設(shè)施已經(jīng)廣泛可用。諸如Cloudflare之類的邊緣網(wǎng)絡(luò)可服務(wù)于當今很大一部分的互聯(lián)網(wǎng)流量,并可充當設(shè)備與集中式云之間的橋梁。高性能AI服務(wù)之所以成為可能,是因為分布式處理與邊緣數(shù)據(jù)具有極佳的空間接近性。

在Latent AI,我們正在探索將人工智能部署在邊緣的方法,使用的技術(shù)為人工智能模型轉(zhuǎn)換和壓縮到邊緣。邊緣AI模型的大小比傳感器數(shù)據(jù)小了很多個數(shù)量級(例如,邊緣AI模型的大小是千字節(jié)或兆字節(jié),而邊緣數(shù)據(jù)是千兆字節(jié))。我們正在探索在Cloudflare Workers環(huán)境中使用WebAssembly(WASM)。我們希望通過在可用的邊緣基礎(chǔ)設(shè)施上探索可實現(xiàn)的性能來為分布式人工智能服務(wù)確定可能的操作點。

探索架構(gòu)方法

WebAssembly(WASM)是一種新的開放標準格式,用于運行在Web上的程序。它是一種支持基于web的高性能應(yīng)用程序的流行方式。WASM更接近機器代碼,因此比JavaScript(JS)或JIT更快。已提前完成的編譯器優(yōu)化減少了獲取和解析應(yīng)用程序代碼的開銷。如今,WASM具備JS的靈活性和可移植性,并且有著幾乎最佳的已編譯機器代碼的性能。

眾所周知,AI模型具有很大的內(nèi)存使用需求,因為配置它們需要大量的參數(shù)。Cloudflare已經(jīng)使用其Wrangler CLI擴展了對WASM的支持,我們選擇將其用于我們的探索。Wrangler是用于管理Workers的開源CLI工具,旨在為開發(fā)者提供流暢的體驗。

Latent AI如何加速分布式AI服務(wù)

Latent AI的使命是使環(huán)境計算成為可能,不受任何資源限制。我們開發(fā)了開發(fā)人員工具,這些工具大大減少了在邊緣上處理AI所需的計算資源,同時完全不依賴硬件。

Latent AI的工具可顯著壓縮人工智能模型,以減少它們的內(nèi)存大小。我們在最先進的模型上展示了高達10倍的壓縮率。此功能解決了許多邊緣網(wǎng)絡(luò)部署面臨的加載時間延遲問題。我們還提供了一個優(yōu)化的運行時(runtime),可以本地執(zhí)行神經(jīng)網(wǎng)絡(luò)。其結(jié)果是,在沒有任何特定于硬件的加速器的情況下,運行時的速度提高了2-3倍。這種顯著的性能提升為邊緣提供了快速而有效的推理。

我們的壓縮使用量化算法將AI模型的參數(shù)從32位浮點數(shù)轉(zhuǎn)換為16位或8位模型,并且最小化精度損失。降低比特精度的主要好處是獲得更高的功率效率和更少的存儲需求?,F(xiàn)在,人工智能推理(inference)可以在分布式邊緣使用連續(xù)平臺上的更高效的并行處理器硬件進行處理。

優(yōu)化的AI服務(wù)可以處理最靠近源的數(shù)據(jù),并在分布式邊緣運行推理。

選擇真實的WASM神經(jīng)網(wǎng)絡(luò)示例

為了進行探索,我們使用了稱為MobileNet的最先進的深度神經(jīng)網(wǎng)絡(luò)。MobileNets專為智能手機等嵌入式平臺而設(shè)計,可以在視覺目標檢測中實現(xiàn)較高的識別精度。我們將MobileNets AI模型壓縮得很快,以代表可以部署為分布式AI服務(wù)的各種用例。請參閱此博客以獲取有關(guān)AI模型架構(gòu)的更多詳細信息。

我們使用MobileNetV2模型變體進行探索。使用可檢測的不同視覺對象訓(xùn)練模型:(1)具有10個來自ImageNet數(shù)據(jù)集的對象的大型模型,以及;(2)一個較小的版本,只有兩個來自COCO數(shù)據(jù)集的類。COCO數(shù)據(jù)集是公共開源圖像數(shù)據(jù)庫,被用作AI模型的基準。圖像上標有檢測對象,如人、車輛、自行車、交通燈等。使用Latent AI的壓縮工具,我們能夠?qū)obileNetV2模型壓縮并編譯為WASM程序。以WASM形式,我們可以用較小的存儲空間快速有效地處理AI模型。

我們希望WASM神經(jīng)網(wǎng)絡(luò)盡可能快和高效。我們運行了一個Workers應(yīng)用程序以接受來自客戶端的圖像,將圖像轉(zhuǎn)換并預(yù)處理為清理后的數(shù)據(jù)數(shù)組,在模型中運行它,然后返回該圖像的類。對于大型和小型的MobileNetv2模型,我們創(chuàng)建了三種不同位精度的變體(32位浮點數(shù)、16位整數(shù)和8位整數(shù))。大型AI模型的平均內(nèi)存和推理時間分別為110ms和189ms;對于較小的AI模型,時間分別為159ms和15ms。

我們的分析表明,可以通過減少內(nèi)存操作的開銷來改善整體處理。對于大型模型,將位精度降低到8位會使內(nèi)存操作從48%減少到26%。對于小型模型,內(nèi)存加載時間在推理計算中占主導(dǎo)地位,內(nèi)存操作中的延遲超過90%。

值得注意的是,我們的結(jié)果是基于我們的初步探索的,我們更關(guān)注功能而不是優(yōu)化。我們通過在50-100次迭代中平均測量結(jié)果來確保結(jié)果的一致性。我們承認,與網(wǎng)絡(luò)和系統(tǒng)相關(guān)的一些延遲仍可以進一步優(yōu)化,但我們相信,此處描述的早期結(jié)果顯示了分布式邊緣上的AI模型推理具有一定的前景。

比較大型和小型DNN的內(nèi)存和推理處理時間

從真實的WASM神經(jīng)網(wǎng)絡(luò)示例中學(xué)習(xí)

我們可以從示例用例中學(xué)到什么?

首先,我們建議對部署在網(wǎng)絡(luò)邊緣的AI模型使用最小的計算和內(nèi)存占用。小的內(nèi)存占用允許WASM AI模型更好地排列數(shù)據(jù)類型,從而減少內(nèi)存負載開銷。WASM從業(yè)者都知道,WASM的加速來自于JavaScript API和本地機器碼之間的API的緊密耦合。因為WASM代碼不需要推測數(shù)據(jù)類型,所以WASM的并行編譯可以實現(xiàn)更好的優(yōu)化。

此外,我們鼓勵使用運行8位精度的AI模型來減少總體大小。這些8位AI模型易于針對目標硬件進行壓縮和編譯,從而大大減少承載模型進行推理的開銷。此外,對于視頻圖像,可以省去將數(shù)字化的原始數(shù)據(jù)(例如,數(shù)字化并存儲為整數(shù)的圖像文件)轉(zhuǎn)換為浮點值以供浮點AI模型使用的開銷。

最后,我們建議對人工智能模型使用智能緩存,這樣Workers就可以從根本上減少內(nèi)存加載時間,并在運行時只專注于神經(jīng)網(wǎng)絡(luò)推理。同樣,8位模型允許托管更多AI模型,并為推理做好準備。根據(jù)我們的探索結(jié)果,托管的小型AI模型可以在大約15毫秒的推理時間內(nèi)提供服務(wù),具有低延遲和本地處理般的特點,提供了非常引人注目的用戶體驗。與諸如Tensorflow.js的純JS工具鏈相比,WASM API顯著提高了性能。例如,對比WASM上189ms的大型AI模型的推理時間,我們觀察到Tensorflow.js工作流的范圍是1500ms,也即8倍的計算延遲。

解鎖分布式邊緣的未來

分布式邊緣網(wǎng)絡(luò)通過優(yōu)化WASM神經(jīng)網(wǎng)絡(luò),可以使推理更接近用戶,提供更接近數(shù)據(jù)源的新邊緣AI服務(wù)。利用Latent AI技術(shù)來壓縮和編譯WASM神經(jīng)網(wǎng)絡(luò),分布式邊緣網(wǎng)絡(luò)可以(1)托管更多模型,(2)提供較低的延遲響應(yīng),以及(3)降低功耗的同時提供更高效的計算。

使用小型AI模型檢測示例人員,10倍壓縮至150KB

例如,想象一下,前面描述的小型AI模型可以區(qū)分人是否在視頻源中。數(shù)字系統(tǒng),如門鈴和門口入口攝像頭可以與Cloudflare Workers連接,以驗證攝像頭視場中是否有人。同樣,其他AI服務(wù)也可以進行聲音分析,以檢查破窗和漏水。借助這些分布式AI服務(wù),應(yīng)用程序無需訪問深云服務(wù)即可運行。此外,傳感器平臺可以采用超低成本,低功耗,并且尺寸非常緊湊的硬件。

應(yīng)用程序開發(fā)人員現(xiàn)在可以通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練、壓縮和本地編譯為WASM神經(jīng)網(wǎng)絡(luò)來提供人工智能服務(wù)。Latent AI開發(fā)人員工具可以壓縮WASM神經(jīng)網(wǎng)絡(luò)并提供WASM運行時,從而為設(shè)備和基礎(chǔ)架構(gòu)邊緣提供驚人的快速推理。有了規(guī)模和速度的優(yōu)勢,開發(fā)人員可以輕松地為他們的用戶創(chuàng)建高性能的體驗,無論他們身在何處,以及規(guī)模如何。更重要的是,我們可以在邊緣上擴展企業(yè)應(yīng)用程序,提供使用邊緣網(wǎng)絡(luò)的投資回報。

關(guān)于Latent AI

Latent AI是SRI International的一個早期風險投資項目。我們的使命是賦能開發(fā)人員并改變我們構(gòu)建邊緣AI的思考方式。我們開發(fā)的軟件工具旨在幫助公司將AI添加到邊緣設(shè)備,并為用戶提供新的智能IoT應(yīng)用程序。獲取有關(guān)LEIP SDK可用性的更多信息,請隨時通過info@latentai.com與我們聯(lián)系或訪問我們的網(wǎng)站。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Cloudflare,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多