APP下载

甲骨文开源机器学习模型的部署工具GraphPipe

消息来源:baojiabao.com 作者: 发布时间:2024-07-20

报价宝综合消息甲骨文开源机器学习模型的部署工具GraphPipe

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

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

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

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

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

甲骨文展示了GraphPipe的高效能表现,首先比较了自定义ujson API、TensorFlow预测请求协定缓冲区以及GraphPipe远端请求,在Python中浮点数张量资料的序列化和反序列化速度。请求包含了1,900万个浮点数值,并且收到回应的320万个浮点数值,GraphPipe无论在请求或是收到回应花的秒数都是最低的,即便较耗时的序列化请求也花费不到0.1秒,但是Json在请求上都花了超过1.4秒的时间,甲骨文解释,之所以GraphPipe可以表现的这么快速,是因为Flatbuffers不需要内存复制。

接着,甲骨文把Python-JSON TensorFlow、TensorFlow以及GraphPipe-go TensorFlow模型服务器,比较其端对端资料吞吐量。三种的后端模型都是相同的,使用单一和5个执行绪不停的对服务器发出大量请求,并计算模型每秒可以处理的资料行数。由图中可以看出,Python-JSON和TensorFlow在单一和多执行绪的表现没有太大的差异,约在每秒50行上下,但GraphPipe的表现却可以是其他组的5倍以上。

GraphPipe的资料都可以在GitHub中找到,服务器目前提供了Python和Go版本,而客户端也有Python和Go版本,之后会再支援Java。

2018-10-23 04:34:00

相关文章