1.3 机器学习框架
本节将介绍TensorFlow Mobile、TensorFlow Lite等工业界现有的机器学习框架,以及其他业界广泛使用的机器学习框架。另外,本节还将介绍对应移动设备和IoT设备的开发现状。
TensorFlow具有不同的构建方式,并从一开始就支持不同的平台,例如Android、iOS和树莓派。值得一提的是,谷歌的物联网团队早期就是在树莓派上构建及运行TensorFlow的。
在本书中,我们主要讨论和描述如何在安卓设备上构建TensorFlow。
TensorFlow支持TensorFlow Mobile和TensorFlow Lite两个平台。本节将详细讨论两者的使用方法和区别,以及未来的发展趋势。
TensorFlow Mobile有更好的支持全张量流的函数,我们可以在移动设备上运行张量流,但是TensorFlow Mobile并没有针对移动设备进行高度优化。
TensorFlow Lite针对移动设备进行了高度优化,但作为一个新框架,它只具有有限的支持张量流功能。
1.3.1 CAFFE2
CAFFE(Convolutional Architecture for Fast Feature Embedding)是一个开源的深度学习框架,最初是在加州大学伯克利分校开发的。CAFFE是用C++编写的,支持Python接口。
贾清扬博士在加州大学伯克利分校攻读博士学位期间创建了CAFFE项目。现在该项目有很多贡献者,并在GitHub上进行托管。贾清扬博士现在是Facebook的人工智能工程总监,CAFFE的服务框架也因此多多少少带上了Facebook的印记。
2017年4月,Facebook宣布了CAFFE2,其中包括Recurrent Neural Networks等新功能。2018年3月底,CAFFE2被合并到PyTorch。
CAFFE2有不短的历史,对移动和嵌入式设备的支持也比较好。所以,很多在移动端进行机器学习开发的人会首选CAFFE2。
1.3.2 Android NNAPI
Android NNAPI(Neural Networks API)是一个Android C API,专门为在移动设备上对机器学习进行密集型运算而设计。NNAPI旨在为构建和训练神经网络的更高级机器学习框架(例如TensorFlow Lite、CAFFE2或其他)提供一个基础的功能层。API适用于运行Android 8.1(API级别为27)或更高版本的所有设备。
1.3.3 CoreML
在苹果发布的iOS11中,有一个新的软件框架叫作CoreML。使用CoreML,可以将经过训练的机器学习模型集成到应用中。CoreML是自然语言处理专业领域的框架和功能的基础。CoreML支持用于图像分析的Vision、用于自然语言处理的Foundation,以及用于评估学习决策树的GameplayKit。
CoreML本身建立在低级原语之上,如Accelerate、BNNS及Metal Performance Shaders。CoreML针对器件内的性能进行了优化,可最大限度地减少内存占用和功耗。在设备上运行可确保用户数据的隐私性,并确保在网络连接不可用时,应用程序仍可正常运行并做出响应。想要了解更多的信息可以在苹果的开发者网页上进行查看。
以上苹果的这些描述是非常有意思的,这里提到了机器学习的特定技术,比如视觉、自然语音等,但是没有特别提到机器学习或人工智能,是一段比较严谨的描述。
随着人工智能和机器学习的发展,现在可选择的机器学习框架越来越多。比如由亚马逊、微软和英特尔共同开发现已成为Apache开源项目的MXNet,由NVIDIA开发的可以实现硬件加速的TensorRT,由阿里巴巴开源的深度学习框架X-Deep Learning和机器学习平台PAI,以及由百度开源的深度学习框架PaddlePaddle。这还不包括一些有着更长历史的机器学习框架,以及一些原生的计算框架。
作为普通开发者,在选择上会有一些难度。但是,由于机器学习和人工智能的复杂性,我们也看到了一些融合的趋势。比如,新的学习框架和老的学习框架的无缝融合和集成,学习框架对于GPU、硬件和高计算的支持。开发者在选择框架的时候要考虑哪个框架适合自己,同时也要考虑这个框架的未来发展性。在Wiki里,有一个关于各种框架的比较分析,如图1-9所示。
图1-9 机器学习框架的比较
注:该图比较大,读者可到https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software上查阅。
1.3.4 树莓派(Raspberry Pi)
依据树莓派网站https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus的介绍,它们的最新产品是Raspberry Pi 3 Model B+。它配置有一个4核64bit的Cortex-A53处理器,主频1.4GHz。同时也支持无线网、蓝牙等。秉承一贯的风格,树莓派的开发板小巧同时又能提供相当的计算能力。树莓派被用作很多IoT或嵌入式开发的参照板。机器学习需要在这种计算能力、储存能力等都有限的平台上表现出优越的性能,才能在更广阔的范围内得到推广和应用。