# Comparison of ML Frameworks

There are several popular frameworks for DNNs and classical ML.  All widely used frameworks are open source. Most but not all support GPU acceleration.

## Deep Learning frameworks

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEmD_aNkyWXiVQpETt%2Flogo-1-tf.png?alt=media&#x26;token=d7a399c6-5520-46bf-94f0-09f69cae66b8" alt=""></div>

**TensorFlow** (by Google): Offers training, distributed training, and inference (TensorFlow Serving) as well as other capabilities such as TFLite (mobile, embedded), Federated Learning (compute on end-user device, share learnings centrally), TensorFlow\.js, (web-native ML), TFX for platform etc.  TensorFlow is widely adopted, especially in enterprise/production-grade ML.  <br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEly1m45zmV1d031Y4%2Flogo-2-keras.png?alt=media&#x26;token=b8ef1e3b-9730-4837-b5ee-fd883b4cf282" alt=""></div>

**Keras** (also by Google): A higher-level wrapper around TensorFlow and other frameworks such as R and CNTK, which form the “backend” to Keras in this context.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEmWqI7I47OMlGZkFE%2Flogo-3-pytorch.png?alt=media&#x26;token=55a1558b-54a1-42c9-a89e-fb2c19564039" alt=""></div>

**PyTorch** (by Facebook): An easy-to-use framework known for rapid prototyping. Facebook recently merged Caffe2 into the PyTorch project to support productionalizing and serving PyTorch-based models. PyTorch is especially popular in the research community.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEmujRrD-Vz1qdZAT0%2Flogo-4-fastai.png?alt=media&#x26;token=d2f2632e-8083-412e-a004-706783141be4" alt=""></div>

**Fast.ai** (by Fast.ai team): A library that sits on top of PyTorch to simplify and accelerate deep learning training.  Fast.ai is very new and its full reach is not yet known.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEnY1FCCyLJfI8MEF2%2Flogo-5-cntk.png?alt=media&#x26;token=fb103f5d-4792-4d9e-af47-0b9c5d4db884" alt=""></div>

**Microsoft Cognitive Toolkit\*** (by Microsoft): A framework focused on large-scale production deployments.  The community is small relative to other frameworks.\
\* Formerly **CNTK**<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEns_zopfPOTbBo-Pz%2Flogo-6-mxnet.png?alt=media&#x26;token=2994fef3-da13-4a81-8d0a-dbb224acb1a2" alt=""></div>

**MXNet** (by Apache but associated with Amazon): An open source deep learning framework focused on large-scale production deployments.  MXNet is popular at Microsoft, Intel, and Amazon but not in the research community.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEoAL68gMOyAWyA1QJ%2Flogo-7-gluon.png?alt=media&#x26;token=3bceccbf-0d82-40ad-86dc-690e31f53a2d" alt=""></div>

**Gluon** (by Amazon and Microsoft): An attempt to create a Keras-like API layer for MXNet and CNTK.  Gluon is not very popular.  <br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEoTBvKk2XYgD5061x%2Flogo-8-chainer.png?alt=media&#x26;token=ffec1041-6d6c-4d7e-bba9-6cde9175d095" alt=""></div>

**Chainer** (by a Japanese company called Preferred Networks):  A deep learning framework that is popular in Japan and supported by tech giants such as IBM, NVIDIA, AWS, and Intel. That said, the Chainer community is relatively small.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEokOc4jGcUZ6RBU3e%2Flogo-9-paddle.png?alt=media&#x26;token=c673a458-dbee-4797-8c64-b1812d4c0f85" alt=""></div>

**PaddlePaddle** (by Baidu): A scalable deep learning platform originally developed for use on Baidu products that is focused on large-scale production deployments.  The PaddlePaddle community is relatively small.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEp01Oku5oreNKuUz0%2Flogo-10-dl4j.png?alt=media&#x26;token=f70dc458-1f2e-43b5-a17a-23623431cf55" alt=""></div>

**Deeplearning4j** (by Konduit, related to Eclipse): A deep learning programming library built for companies that need support for Java and Scala.  The community is relatively small.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEpa3U9HKE0EedkEWZ%2Flogo-11-caffe.png?alt=media&#x26;token=f2c76e6b-bde8-459c-ab84-841ec4a8fdf1" alt=""></div>

**Caffe** & **Caffe2** (by UC Berkeley): A deep learning framework that is especially suited to image classification and image segmentation. Caffe is not popular anymore but Facebook created a successor called Caffe2 which was recently merged into PyTorch.

## ML frameworks&#x20;

These frameworks are mostly used for “Classical ML” rather than Deep Learning:&#x20;

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEpu9rwWgVsSseffNt%2Flogo-12-xgboost.png?alt=media&#x26;token=c2694d93-a431-4f43-a404-b759a0c7bce5" alt=""></div>

**XGBoost**: An open-source library built for one of the most common machine learning algorithms, [gradient boosting](https://machine-learning.paperspace.com/wiki/gradient-boosting). The community is very large.<br>

<div align="left"><img src="https://2327526407-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvBP1svpACTB1R1x_U4%2F-LwEkSQpA-jH2BV6gEJt%2F-LwEq8nntcxnljDRUZuO%2Flogo-13-sklearn.png?alt=media&#x26;token=6aa80a28-1dc3-4db7-8727-9b815d78b47f" alt=""></div>

**Scikit-learn**: A machine learning library that provides algorithms for many standard machine learning tasks such as clustering, regression, classification, dimensionality reduction, and more. The community is very large.

## Libraries

Other popular machine learning libraries are typically used when preparing data for later use in ML frameworks. These include:&#x20;

* NumPy (arrays & linear algebra library)
* SciPy (scientific computing library)
* Pandas (data extraction & preparation)
* Matplotlib (plotting & data visualization)
