With an aim to solve help organisations deploy machine learning in their ecosystems, Oracle has open sourced their high-performance standard network protocol GraphPipe. Announced on August 15, GraphPipe provides a standard protocol for transmitting tensor data over the network, along with simple implementations of clients and servers that make deploying and querying ML models from any framework a breeze, said Oracle in a statement.
Vish Abrams, Architect, Cloud Statement at Oracle listed out three major problems faced by organisations in implementing ML:
- There is no standard for model serving APIs
- Complications in building model servers
- Existing solutions that don’t focus on performance and fall short
“We created GraphPipe to solve these three challenges,” said Abrams. He added, “GraphPipe’s efficient servers can serve models built in TensorFlow, PyTorch, mxnet, CNTK, or caffe2. We are pleased to announce that GraphPipe is also available on Oracle’s GitHub.”
As of now, no dominant standard exists for how tensor-like data should be transmitted between components in a deep learning architecture. GraphPipe is designed to bring the efficiency of a binary, memory-mapped format while remaining simple and light on dependencies.
- A set of flatbuffer definitions
- Guidelines for serving models consistently according to the flatbuffer definitions
- Examples for serving models from TensorFlow, ONNX, and caffe2
- Client libraries for querying models served via GraphPipe
Flatbuffers are similar to Google protocol buffers, with the added benefit of avoiding a memory copy during the deserialisation step. The flatbuffer definitions provide a request message that includes input tensors, input names and output names. A GraphPipe remote model accepts the request message and returns one tensor per requested output name. The remote model also must provide metadata about the types and shapes of the inputs and outputs that it supports.
As of now, GraphPipe flatbuffer spec can be found on Oracle’s GitHub, Python, Go, and Java. It also has a plugin for TensorFlow that allows the inclusion of a remote model inside a local TensorFlow graph.