SequenceLayers: Sequence Processing and Streaming Neural Networks Made Easy
This provides a solution for developers and researchers building production-scale sequence models, though it is incremental as it builds on existing sequence processing concepts.
The authors tackled the challenge of creating neural network layers for sequence modeling that can be easily executed in both layer-by-layer and step-by-step modes, resulting in a library that enables immediate streamability, reduces bugs, and works across deep learning frameworks.
We introduce a neural network layer API and library for sequence modeling, designed for easy creation of sequence models that can be executed both layer-by-layer (e.g., teacher-forced training) and step-by-step (e.g., autoregressive sampling). To achieve this, layers define an explicit representation of their state over time (e.g., a Transformer KV cache, a convolution buffer, an RNN hidden state), and a step method that evolves that state, tested to give identical results to a stateless layer-wise invocation. This and other aspects of the SequenceLayers contract enables complex models to be immediately streamable, mitigates a wide range of common bugs arising in both streaming and parallel sequence processing, and can be implemented in any deep learning library. A composable and declarative API, along with a comprehensive suite of layers and combinators, streamlines the construction of production-scale models from simple streamable components while preserving strong correctness guarantees. Our current implementations of SequenceLayers (JAX, TensorFlow 2) are available at https://github.com/google/sequence-layers.