溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PyTorch的原型功能有哪些

發(fā)布時(shí)間:2021-12-28 10:03:43 來源:億速云 閱讀:142 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“PyTorch的原型功能有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“PyTorch的原型功能有哪些”這篇文章吧。

PyTorch的一個(gè)原型功能:支持Android的神經(jīng)網(wǎng)絡(luò)API (NNAPI)。PyTorch Mobile旨在為ML開發(fā)人員提供一流的體驗(yàn),并在所有移動(dòng)硬件上實(shí)現(xiàn)高性能的執(zhí)行。NNAPI的支持對(duì)于實(shí)現(xiàn)這一目標(biāo)至關(guān)重要,因?yàn)樗鼣U(kuò)展了我們可以用來快速執(zhí)行模型的硬件集。這個(gè)初始版本包含了對(duì)一組小而強(qiáng)大的特性和操作的全功能支持,我們將在未來幾個(gè)月擴(kuò)大支持。

NNAPI允許Android應(yīng)用程序在手機(jī)芯片最強(qiáng)大、最高效的部件上運(yùn)行計(jì)算密集型神經(jīng)網(wǎng)絡(luò),包括GPU(圖形處理單元)和NPU(專門的神經(jīng)處理單元)。它在Android 8 (Oreo)中被引入,并在Android 10和11中顯著擴(kuò)展,以支持更豐富的AI模型集。雖然NNAPI為各種硬件驅(qū)動(dòng)程序提供了方便的統(tǒng)一接口,但它是一個(gè)需要大量集成工作的低級(jí)API。像PyTorch這樣的高級(jí)框架使更多的應(yīng)用程序開發(fā)人員可以獲得這些好處。

NNAPI沒有本地磁盤模型格式,所以我們選擇將模型定義封裝在普通的TorchScript模型中。開發(fā)人員將在訓(xùn)練后準(zhǔn)備好他們的模型,然后在NNAPI上執(zhí)行。然后,保存的模型可以打包到Android應(yīng)用程序中(或通過網(wǎng)絡(luò)交付),然后使用PyTorch Mobile的Java API或libtorch c++ API加載和運(yùn)行。對(duì)于已經(jīng)使用PyTorch Mobile的應(yīng)用程序,不需要更改代碼。開發(fā)人員可以簡(jiǎn)單地用NNAPI模型替換他們的CPU模型。

對(duì)于PyTorch開發(fā)者來說,訪問和使用Android的NNAPI對(duì)隨時(shí)在線的實(shí)時(shí)模型(如設(shè)備上的計(jì)算機(jī)視覺)特別有吸引力。這些模型往往是計(jì)算密集型的、對(duì)延遲敏感的和能耗高的。同時(shí)滿足這三個(gè)要求是一項(xiàng)挑戰(zhàn),這使得這些模型成為利用硬件加速的最佳選擇。這也是Facebook對(duì)NNAPI感興趣的原因之一。在門戶設(shè)備上支持虛擬背景體驗(yàn)的AI模型現(xiàn)在正在Messenger應(yīng)用程序中使用NNAPI進(jìn)行測(cè)試,以啟用沉浸式360度背景功能。

如表1所示,在Pixel 3上為這個(gè)模型使用Android的NNAPI,可以在單核CPU和2核CPU之間實(shí)現(xiàn)高性能,從而為非ML應(yīng)用程序代碼釋放CPU。此外,在像Pixel 4和Pixel 5這樣的新設(shè)備上,NNAPI支持更高級(jí)別的性能,這可以被更復(fù)雜的ML模型利用。

PyTorch的原型功能有哪些

表1 — 沉浸式360度背景啟用模型基準(zhǔn)測(cè)試  
 

類似地,許多實(shí)時(shí)音頻模型也被引入到移動(dòng)應(yīng)用程序中。由于具有類似的并發(fā)性、延遲和電源需求,減少背景噪聲等特性也將受益于基于NNAPI的硬件加速。

在框架或API之間轉(zhuǎn)換機(jī)器學(xué)習(xí)模型總是很棘手,這次也不例外。雖然PyTorch和NNAPI都是為了運(yùn)行相同類型的神經(jīng)網(wǎng)絡(luò)而開發(fā)的,但在從一個(gè)轉(zhuǎn)換到另一個(gè)時(shí),需要彌合語義上的許多微小差異。例如:

  • NNAPI使用整數(shù)偏置進(jìn)行量化卷積運(yùn)算,而PyTorch使用浮點(diǎn)運(yùn)算。
  • PyTorch和NNAPI對(duì)卷積中的權(quán)值張量期望不同的內(nèi)存排序。
  • PyTorch之前有一個(gè)復(fù)雜的上采樣操作的內(nèi)部表示,為了更容易轉(zhuǎn)換到NNAPI,必須對(duì)其進(jìn)行簡(jiǎn)化。
  • PyTorch和NNAPI有不同的NHWC張量表示。NNAPI只支持連續(xù)張量,因此需要顯式的NHWC表示。PyTorch支持大步張量,因此約定總是使用NCHW,但可以選擇結(jié)合     channels-last memory format     來獲得NHWC行為。

這是PyTorch中NNAPI支持的第一個(gè)原型版本,當(dāng)部署在Android 10及以上設(shè)備上時(shí),它支持眾所周知的線性卷積和MLP模型。即將發(fā)布的PyTorch將添加額外的功能,例如:

  • 支持額外的運(yùn)算符來解除額外模型類型的阻塞。
  • 支持基于Mask R-CNN架構(gòu)的加速模型。更多關(guān)于移動(dòng)Mask R-CNN的信息請(qǐng)?jiān)L問:https://research.fb.com/blog/2018/01/enabling-full-body-ar-with-mask-r-cnn2go/。
  • 支持較早的Android版本,8 (Oreo)和9 (Pie)。
  • 支持利用控制流語義的模型。
  • 當(dāng)NNAPI可用的時(shí)候,模型可以在用戶的Android手機(jī)上用,否則自動(dòng)回退到CPU上執(zhí)行。

使用表1中所示的手機(jī),表2展示了對(duì)開源MobileNetV2模型進(jìn)行基準(zhǔn)測(cè)試的結(jié)果,與使能360度背景模型中看到的結(jié)果類似,可以獲得類似的CPU負(fù)載,甚至更顯著的性能優(yōu)勢(shì)。

PyTorch的原型功能有哪些

表2 — MobileNetV2模型基準(zhǔn)  
 


以上是“PyTorch的原型功能有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI