We have just been honored in the annual PyTorch Hackathon with our open-source project PADL (padl.lf1.io)! PADL stands for Pipeline Abstractions for Deep Learning. It is a unifying development framework for PyTorch which streamlines the entire deep learning workflow, from experimentation to deployment.
What was our motivation to create PADL? What was missing?
Based on our experience building highly complex, branching models in PyTorch, we found the need to build tooling which helped us link all relevant inputs and prerequisites for a given model. Initially we tried to do this with a home-baked configuration system in YAML and third-party tooling such as GIN, but these led to us trying to incorporate inline code blocks and ever greater flexibility into the configuration system. So we asked ourselves, why not use simply use Python to configure our models, linking preprocessing, model forward passes and postprocessing as well as necessary data blobs and so forth? In considering moving from this rigid configuration to “configuration as code” we came upon the idea for PADL, which we implemented for the PyTorch Hackathon.
What does it solve?
Using and reproducing deep learning models in practice is about *much* *more* than writing individual PyTorch layers; it also means specifying how individuals PyTorch layers intercommunicate, how inputs are prepared as tensors, which pieces of auxiliary data are necessary to prepare those inputs, and how tensor outputs are post-processed and converted to make them useful for the target application. PADL solves this for deep learning developers, using a powerful abstraction `Transform` , which takes the notion of model beyond simply PyTorch layer, to incorporate also arbitrary computation steps necessary for pre-processing, forward passes, post-processing and data dependencies.
The way forward
With PADL, numerous tantalising possibilities present themselves. We will release connectors to the wider PyTorch ecosystem, including to Torch-Serve, Pytorch-Lightning and Hugging-Face. This will allow deep-learners to enjoy the great developer experience, and associated robustness and clarity offered for PADL as well as profiting from on-click deployment, training and model import.
We are super happy to have been honored by PyTorch in the category “PyTorch Developer Tools & Libraries” among over 1947 participants. We worked really hard to create the first version of PADL within the limited time window. We hope the community can and will benefit from PADL and also that other PyTorch developers will join the project and contribute.
Project website: https://padl.lf1.io/
Github: https://github.com/lf1-io/padl
PyPI: https://pypi.org/project/padl/
Documentation: https://lf1-io.github.io/padl/