Uber Engineering is open-sourcing Ludwig, a deep-learning toolkit that allows users to experiment with a variety of neural network structures without writing code.
Ludwig is built on top of Google's TensorFlow deep-learning library. There are other "wrappers" of TensorFlow that provide friendly interfaces, such as Keras or Gluon. However, these still require users to define their neural networks by writing code (usually Python). Ludwig pre-packages a large number of popular deep-learning patterns, which can be combined and configured using a YAML file.
A large class of deep-learning solutions for vision and speech problems follow an "encoder/decoder" pattern. In this pattern, the input is converted from raw data into a tensor representation, which is then fed into one or more layers of a neural network. The layer types depend on the input data. For example, image data is often fed into a convolution neural network (CNN), while text data is fed into a recurrent neural network (RNN). Likewise, the output if the network is converted from tensors back into output data, often passing through RNN layers (if the output is text) or some other common layer type.
Ludwig simplifies the construction of complex deep-learning solutions by prepackaging encoders and decoders for common data types, along with common pre-processing steps that must be applied. Using a YAML file, users specify the data types in their feature set and configure the encoders for the input and decoders for the output. The Ludwig website provides several examples of models that can be implemented with just a few lines of YAML configuration, including:
- natural-language understanding
- machine translation
- sentiment analysis
- image captioning
- visual-question answering
- time-series forecasting
Training can be monitored via TensorBoard, and training time can be reduced by using the Horovod distributed training framework. Ludwig also provides commands for visualization of training and test results. Ludwig ships with a command-line interface; training and prediction can also be invoked from code using Ludwig's API.
The Ludwig toolkit is available on GitHub under the Apache 2.0 license model. The website provides a developer guide for extending Ludwig by adding data types, encoders, and decoders.