PyTorch现可在Android设备利用硬件加速机器学习运算

PyTorch宣布开始支持Android神经网络API(Neural Networks API,NNAPI),这代表深度学习框架PyTorch,将可在Android上获得硬件加速,以提高人工智能应用程序的运算性能,而且也可释放CPU的负担,使其能够支持其他关键运算。

NNAPI是Android上的API,目的是要机器学习应用程序,得以使用Android设备上的硬件加速器,包括GPU、DSP以及NPU,让Android有能力执行运算密集的机器学习应用。NNAPI是在Android 8的时候加入,Google在Android 10和11大幅扩展NNAPI的功能,使其能够支持更多的人工智能模型,虽然NNAPI提供方便且统一的接口,但是因为NNAPI终究是一个底层API,要使用还是需要大量的集成工作,而现在PyTorch让应用程序开发人员,可以更简单地获得NNAPI提供的好处。

因为NNAPI没有原生的磁盘模型格式,因此PyTorch选择使用普通的TorchScript模型,在模型训练完成之后,开发人员可以将模型打包在Android应用程序中,或是通过网络交付,并使用PyTorch Mobile的Java API,或是libtorch C++ API加载模型并执行。而已经使用PyTorch Mobile的应用程序,开发人员不需要改变程序代码,只要将CPU模型更换成NNAPI模型即可。

PyTorch官方提到,PyTorch对Android NNAPI的支持,特别适用在长时间启动,并且需要即时回应的模型,像是设备上计算机视觉应用,这类模型通常有运算密集、延迟敏感和耗电量大的三大特性,要能同时满足这三个条件很困难,因此这类模型可通过NNAPI,在设备上获得硬件加速的支持,会是理想的执行情况。

脸书已经在Messenger应用程序中,利用NNAPI激活沉浸式360背景功能,而使用NNAPI后,速度为之前的2倍,电力消耗也下降2倍,而CPU因为不再需要完全负担机器学习运算,因此可空下执行其他重要工作。

脸书以Google的移动设备Pixel进行测试,Messenger沉浸式360背景功能可在Pixel 3、4和5,3种设备获得不同程度的好处,Pixel 3的CPU负担可以减少32%,而更新的Pixel 4和Pixel 5,可获得更多的性能提升,因此也可以执行更为复杂的机器学习模型。

官方提到,机器学习模型在框架与API之间的转换总会存在一些摩擦,即便是PyTorch和NNAPI都是为执行同一类型的神经网络开发,但转换使用的时候,仍会有一些不同,开发者要注意语法之间的差异。PyTorch第一个支持NNAPI的版本,提供线性卷积和MLP模型,并且只能在Android 10或是以上设备执行,官方也预告,即将发布的版本,会支持更多种类的模型,也能应用在Android 8和9等较旧的版本上。