Ride sharing company Uber’s AI department open sourced project Ludwig to get those into deep learning, that don’t necessarily want to write code.
The toolbox has been in the making for two years and though there are no coding skills required to train a model, experienced users should have ways of influencing the process. It was developed to simplify model building and comparing while keeping it more generic than other well known machine learning libraries such as OpenCV or Facebook’s PyText.
That’s not to say Ludwig’s creators haven’t taken inspiration from other open source projects, since MLib, Caffe, and scikit-learn seem to have influenced the toolbox’s API as well as the way raw data is used. A look at the project’s dependencies – you’ll need NumPy, Panda, SciPy, scikit-learn, scikit-image, SpaCy, TensorFlow, matplotlib, seaborn, Cython, h5py, tqdm, tabulate, and PyYAML to get it going – would even suggest open sourcing would have been one of the few ways to adequately give back to the open source community.
Anyway, to give those new to deep learning an easy way in, Ludwig includes a set of model architectures that can be combined to get the best model possible for a specific problem. Users have to feed a tabular file containing the data as well as a configuration file that specifies input features and output target variables into the system to train a model.
If multiple target variables are specified, the system will learn to predict the outputs simultaneously, which can, for example, speed up prototyping phases and allows building models for a variety of use cases. Another really useful feature is the integrated visualisations, because it’s often hard to understand a model’s performance and compare approaches in a meaningful manner when getting started with multi-layered artificial neural networks.
Ludwig isn’t Uber’s first foray into open source machine learning projects, although it’s programming language Pyro and the Horovod framework aren’t amongst the most well-known. While Pyro was built on deep learning platform PyTorch, for Ludwig, Uber’s engineers decided to go with Google’s TensorFlow, which isn’t surprising given that it has become the machine learning library of choice in the public perception.
The more innovative part lies in the use of specific encoders and decoders, depending on which input data is used. To make the system as universal as possible, supported types include binary values, float numbers, categories, sets, images, text, and time series, with more to follow.
Encoders can be constructs such as convolutional or recurrent neural networks, which map the raw input data to tensors. Users are then able then combine those with glue components, the system processes the result and returns tensors which the decoders map back to raw data to get a feature.
A training example can be found in the project’s repository. The source code is licensed under the Apache License 2.0.