AI开发面临碎片化 深度学习框架要统一

栏目: 数据库 · 发布时间: 5年前

内容简介:人工智能繁荣发展的背后是各大厂商暗战的开始,大家都在为了争抢开发者推出各自的深度学习开发框架,而随着应用在不同场景下的关联性越来越强,碎片化的框架也对开发人员造成了困扰,开发框架需要统一。深度学习的优势在于,利用非监督式或半监督式的特征学习、分层特征提取高效算法去替代传统的人工获取特征。为此,微软、谷歌、亚马逊等IT巨头都在围绕深度学习投资项目、开发框架工具,CNTK、TensorFlow、MXNet背后均有着这些企业的力挺。除此之外,Caffe、Torch、Theano也是比较流行的开发框架。

人工智能繁荣发展的背后是各大厂商暗战的开始,大家都在为了争抢开发者推出各自的深度学习开发框架,而随着应用在不同场景下的关联性越来越强,碎片化的框架也对开发人员造成了困扰,开发框架需要统一。

AI开发面临碎片化 深度学习框架要统一

AI开发面临碎片化 深度学习框架要统一(图片来自FactorDaily)

深度学习的优势在于,利用非监督式或半监督式的特征学习、分层特征提取高效算法去替代传统的人工获取特征。为此,微软、谷歌、亚马逊等IT巨头都在围绕深度学习投资项目、开发框架工具,CNTK、TensorFlow、MXNet背后均有着这些企业的力挺。除此之外,Caffe、Torch、Theano也是比较流行的开发框架。

对于开发人员来说,使用这些框架的特性和功能各有不同,应用场景也可能是算机视觉、语音识别、自然语言处理与生物信息学等等。以TensorFlow来说,使用者不再需要通过反向传播求解梯度,这点和Theano类似,而且在设计神经网络结构时,也不用耗费过多精力去写C++或者CUDA代码。

在使用过程中,C++在线上部署的复杂度方面有所降低,而且让手机、平板、穿戴设备等对处理资源占用密集的终端可以运行更为复杂的模型,要知道相比之下 Python 的资源损耗还处在相对较高的水平。借此,开发者就能在硬件性能相对足够的机器中,即使是用Python也可以获得在低延迟状态下、嵌入式环境中使用C++的能力。当然TensorFlow也有其问题,比如异类设备之间的通信优化仍需完善。

Theano可以说是最古老的同类库之一,也是最初深度学习的主导标准之一,其流行程度可以让用户在上面找到各种常见问题,包括如何去存储、运行训练模型,在单GPU方面执行效率也算是还不错的水平。而且基于Theano,也衍生出了大量的深度学习库,像Keras对神经网络的抽象就可以对执行后端随意切换。

不过考虑到Theano缺乏底层C++的接口,导致部署起来并不方便,在工业生产环境的应用几乎鲜有。因此,很多人都是将其视为研究工具,而不是最终的产品,在CPU上的低性能也有这方面的阻碍。所以这种框架更像是一个原始语言,如果直接用其设计神经网络,或者去读它的输出信息,对开发者是毕竟痛苦的事情。

此外,Caffe、Deeplearning4J等也有着各自的问题,这里就不一一赘述了。由此也引申出了开发者到底该如何选择深度学习的开发平台?这里列出了几个考察点:首先,多数公司的AI架构不是从0起步,对既有编程平台的整合难度不能忽视;其次,对机器学习软件包和数据处理的难度也要寻求兼容;再有,二次开发能力同样关键,有了分布式、多GPU的优化能力,如何在其他平台上发挥作用,这是要思考的事情。

通过对比主流的几款深度学习开发框架,可以看到底层语言用C++(Caffe、MXNet、CNTK、TensorFlow)和C(Torch)的占有大多数,这也是当前来看最有效率的,像Python则是有望成为下一代的平台语言,这也是像微软在CNTK 2.0中所努力的方向。

从生态的角度来看,各家的框架多少还存在着分战队的情况。开发者需要在各自的平台上做各自的开发,而且这些框架在更新时并不是统一的,也就是说开发者在一个框架上开发的神经网络模型,并不能直接在另一个框架上用。要想让二者实现兼容,开发者需要花费很大的精力去自行解决。

为了解决这一问题,需要微软、谷歌这样掌握开发者“主权”的企业站出来,借助兼容框架去统一开发者的使用体验,ONNX(开放神经网络交换)就是在这个思路下成立的,这是由微软共同发起的一个项目,参与者有Facebook、AWS这样的软件厂商,也有AMD、ARM、华为、IBM、英特尔、高通这样的产业参与者。比如说有了ONNX,开发者可以把在PyTorch训练的模型直接放到Caffe2上推理。

几乎每隔2-4个月就会有ONNX的升级,例如其中会新增一些运算符帮助用户创建新的模型。事实上,现在微软的主流产品Bing、广告和Office,还有视觉服务,基本上后台都在用ONNX。在此基础之上,微软还发布了ONNX Runtime,插件式的执行者界面意味着ONNX Runtime可以快速适应软件和硬件的改进。执行者界面是硬件加速器向ONNX Runtime报告其性能的标准方式。英特尔、英伟达都在将ONNX Runtime整合到他们的硬件加速器中,目前,英特尔的MKL-DNN、nGraph编译器以及英伟达优化的TensorRT推理引擎都已完成整合。

就在ONNX吸纳更多开源框架的过程中,也并不是所有厂商的态度都那么趋同,像TensorFlow对ONNX的兴趣就没有那么明朗。事实上,微软也写了从TensorFlow到ONNX的转化器,通过这样的一种转化的功能,可以实际上将很多TensorFlow下面的这些模型转移到ONNX来。除此之外,ONNX还支持一些非常高级别、或者说特别的运算符,比如LSTM,这些运算符主要是用来支持一些语音和语言方面的功能。

如果想在AI领域当中获得成功,就必须将硬件和软件都结合起来,因此需要ONNX这样的桥梁,过去不同的接口和界面为开发者带来了很大的困惑,而ONNX这可以使硬件和应用有机结合起来,在云端、本地、边缘等任意一个环境实现部署。由此来看AI开发框架统一势在必行。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beautiful Code

Beautiful Code

Greg Wilson、Andy Oram / O'Reilly Media / 2007-7-6 / GBP 35.99

In this unique work, leading computer scientists discuss how they found unusual, carefully designed solutions to difficult problems. This book lets the reader look over the shoulder of major coding an......一起来看看 《Beautiful Code》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具