AMIs are Amazon Machine Images, virtual appliance deployed on EC2. The AWS Deep Learning AMIs provide machine learning practitioners and researchers with the infrastructure and tools to accelerate deep learning in the cloud, at scale. Users can launch Amazon EC2 instances pre-installed with deep learning frameworks and interfaces such as TensorFlow, PyTorch, Apache MXNet, Chainer, Gluon, Horovod, and Keras to train sophisticated, custom AI models, experiment with new algorithms, or to learn new…
N/A
TensorFlow
Score 8.5 out of 10
N/A
TensorFlow is an open-source machine learning software library for numerical computation using data flow graphs. It was originally developed by Google.
Amazon AMIs has been very useful for the quick setup and implementation of deep learning for data analysis which is something I have used the service for in my own research. We commonly use the service to enable students to run intensive deep learning algorithms for their assessments. This service works well in this scenario as it allows students to quickly set up a suitable environment and get started with little hassle. If you are looking to run simple, surface level deep learning algorithms (kind of contradictory statement I know) then AMI is more complicated than most will need. When it comes to teaching the basics of Machine Learning, this kind of system is unnecessary and there are other alternatives which can be used. That being said this service is a must if you are looking to run complex deep learning via the cloud.
TensorFlow is great for most deep learning purposes. This is especially true in two domains: 1. Computer vision: image classification, object detection and image generation via generative adversarial networks 2. Natural language processing: text classification and generation. The good community support often means that a lot of off-the-shelf models can be used to prove a concept or test an idea quickly. That, and Google's promotion of Colab means that ideas can be shared quite freely. Training, visualizing and debugging models is very easy in TensorFlow, compared to other platforms (especially the good old Caffe days). In terms of productionizing, it's a bit of a mixed bag. In our case, most of our feature building is performed via Apache Spark. This means having to convert Parquet (columnar optimized) files to a TensorFlow friendly format i.e., protobufs. The lack of good JVM bindings mean that our projects end up being a mix of Python and Scala. This makes it hard to reuse some of the tooling and support we wrote in Scala. This is where MXNet shines better (though its Scala API could do with more work).
Theano is perhaps a bit faster and eats up less memory than TensorFlow on a given GPU, perhaps due to element-wise ops. Tensorflow wins for multi-GPU and “compilation” time.
Community support for TensorFlow is great. There's a huge community that truly loves the platform and there are many examples of development in TensorFlow. Often, when a new good technique is published, there will be a TensorFlow implementation not long after. This makes it quick to ally the latest techniques from academia straight to production-grade systems. Tooling around TensorFlow is also good. TensorBoard has been such a useful tool, I can't imagine how hard it would be to debug a deep neural network gone wrong without TensorBoard.
Both of these services provide similar functionality and from my experience both are top class services which cover most of your needs. I think ultimately it comes down to what you need each service for. For example Amazon DL AMIs allows for clustering by default meaning I am able to run several clustering algorithms without a problem whereas IBM Watson Studio doesn't provide this functionality. They both provide a wide range of default packages such as Amazon providing caffe-2 and IBM providing sci-kitlearn. My main point is that both are very good services which have very similar functionality, you just need to think about the costs, suitability of features and integration with other services you are using.
Keras is built on top of TensorFlow, but it is much simpler to use and more Python style friendly, so if you don't want to focus on too many details or control and not focus on some advanced features, Keras is one of the best options, but as far as if you want to dig into more, for sure TensorFlow is the right choice