甲骨文对外开源自家机器学习模型工具GraphPipe!

GraphPipe是甲骨文用来部署机器学习模型的工具,现在已对外开源。GraphPipe解决了部署模型面临的三个问题,框架传输标准不一、复杂的模型部署工作和解决方案效能低落的问题。目前GraphPipe高效能伺服器支援TensorFlow、PyTorch、mxnet、CNTK和caffe2内建的模型。

虽然近年机器学习的发展有了很大的进步,现存的许多框架都可以帮助开发者快速的产生机器学习模型。不过,甲骨文指出,要将机器学习模型部署到生态环境中,才是挑战的开始。由于机器学习模型提供服务的API并没有统一标准,可能是透过协定缓冲区(Protocol Buffers)或是自定义的JSON格式的方式,因此开发者经常会在框架操作上遇到困难。一般来说,应用程序需要一个特制的客户端,负责与部署的模型沟通,而这个情况因为程式架构使用多个框架将变得更加复杂,开发者势必要撰写自定义的程式码来整合多个框架。

此外,建构机器学习模型伺服器也并非是一件简单的事情,训练模型的方法通常比部署要来的受人瞩目,而部署模型的资源相对较少。甲骨文表示,开箱即用的机器学习解决方案很少,像是开发者在使用TensorFlow的GPU版本提供服务时,必须要有战斗数天的心理准备。部署模型还有另一个问题,不少现有的解决方案并不关注效能表现,对于特定的应用环境影响极大。

GraphPipe能够解决上述的各种问题,GraphPipe为传输张量资料提供了标准高效能协定,并且简化客户端与伺服器部署的工作,让任何框架部署和机器学习查询的工作变得简单。甲骨文表示,GraphPipe的高效能协定目的在简化和标准化远端与近端间的机器学习资料传输,目前在深度学习的架构中,传输张量资料并没有主流标准,开发人员可能会使用效能低落的JSON协定或是TensorFlow协定缓冲区。

甲骨文的GrapgPipe以二进位记忆体映射格式提升传输效率,并且维持简单的相依性。GrapgPipe内含一组Flatbuffer定义,以及根据Flatbuffer定义提供模型服务的指南,并且含有TensorFlow、ONNX和caffe2的使用范例,另外也提供了通过GraphPipe查询模型服务的客户端函式库。本质上,GraphPipe请求行为类似于TensorFlow的预测请求,只不过使用Flatbuffers作为讯息格式,而Flatbuffers则是类似谷歌协定缓冲区,具备在反序列化步骤中避免记忆体复制。

甲骨文这次展示了GraphPipe的高效能表现,首先比较了自定义ujson API、TensorFlow预测请求协定缓冲区和GraphPipe远端请求,这些请求包含了1900万的浮点数值。GraphPipe无论在请求或是收到回应花的时间都是最低的,即便较耗时的序列化请求也花费不到0.1秒,但是Json在请求上花了超过1.4秒的时间。甲骨文表示,之所以GraphPipe可以表现的这么快速,是因为Flatbuffers不需要记忆体复制。

其次甲骨文把Python-JSON 、TensorFlow和GraphPipe-go模型伺服器进行端对端的资料吞吐量。三种的后端模型都是相通的,我们使用单一和5个执行绪不停的对伺服器发出大量请求,并计算模型每秒可以处理的资料行数。Python-JSON和TensorFlow在单一和多执行绪的表现并没有太大差异,约在每秒50行上下,但GraphPipe的速度表现却可以是任何其他组的5倍以上。

现在,GraphPipe的资料都可以在GitHub开源网上找到,伺服器和客户端目前都提供了Python和Go版本,之后也会支援Java。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180824A18NYF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券