Table 1.
Software framework | Programming languages | Operating systems | GPU computing supporta | Distributed training support | Availability of pretrained modelsb | Software license | Website |
---|---|---|---|---|---|---|---|
Deep ML frameworksc | |||||||
Tensorflow & Kerasd | Python, JavaScript, C++, Java, Go, Swift (early release) | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | yes | Apache 2.0 | www.tensorflow.org |
PyTorch | Python, C++, Java | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | yes | BSD-3 | pytorch.org |
Apache MXNet | Python, C++, Scala, Julia, Clojure, Java, R, Perl | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | yes | Apache 2.0 | mxnet.apache.org |
H2O | Python, Scala, Java, R | Linux, Windows | Linux, Windows | multiple GPUs, multiple machines | no | Apache 2.0 | www.h2o.ai |
Deeplearning4j | Java, Groovy, Scala, Kotlin, Clojure | Linux, Windows, macOS, Android | Linux, Windows | multiple GPUs, multiple machines | yes | Apache 2.0 | deeplearning4j.org |
Chainer | Python | Linux | Linux | multiple GPUs, multiple machines | yes | MIT | chainer.org |
PaddlePaddle | Python | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | yes | Apache 2.0 | www.paddlepaddle.org |
SINGA | Python, C++ | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | noe | Apache 2.0 | singa.apache.org |
Flux | Julia | Linux | Linux | multiple GPUs | no | MIT | fluxml.ai |
OpenNN | C++ | Linux, Windows, macOS | Linux, Windows | no | no | LGPLv3 | www.opennn.net |
Dlib | Python, C++ | Linux, Windows, macOS | Linux, Windows | multiple GPUs | no | BSL-1.0 | dlib.net |
MLBox | Python | Linux, Windows, macOS | no | no | no | BSD-3 | github.com/AxeldeRomblay/MLBox |
ML frameworks | |||||||
scikit-learn | Python | Linux, Windows, macOS | no | no | no | BSD-3 | scikit-learn.org |
Apache Mahout | Java, Scala | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | no | Apache 2.0 | mahout.apache.org |
xLearn | Python, R | Linux, Windows, macOS | no | multiple machines | no | Apache 2.0 | github.com/aksnzhy/xlearn |
Shogun | Python, Octave, R, Java, Scala, Lua, C#, Ruby | Linux, Windows, macOS | no | no | no | GPLv3 | www.shogun-toolbox.org |
SystemDS | Python, Java | Linux, Windows, macOS | Linux, Windows | multiple GPUs, multiple machines | no | Apache 2.0 | systemds.apache.org |
BSD, Berkeley Software Distribution; BSL, Boost Software License; GPL, GNU General Public License; LGPL, GNU Lesser General Public License; MIT, Massachusetts Institute of Technology.
While all software frameworks support CPU-based analysis, some support GPU-based analysis, which can make key computations very fast, particularly convolution operations used in image analysis.
The availability of pretrained models allows giving an AI model a warm start by applying information learned from another previously trained model using a process known as transfer learning. For example, frameworks such as Tensorflow with Keras, PyTorch, and PaddlePaddle allow the transfer of a pretrained DenseNet-161 model to a DCNN model, and DarkNet-53 pretrained model to a YOLO model (Figure 2).
Deep ML frameworks can support both ML and DL AI algorithms.
Keras is the high-level application programming interface (API) of TensorFlow, allowing users to train, evaluate, and use AI models in just a few lines of code.
While SINGA does not provide pretrained AI models, it supports transferring models in Open Neural Network Exchange (ONNX) format, an open-representation format for AI models that enables users to use them across different software frameworks.