Amazon SageMaker enables developers and data scientists to quickly and easily build, train, and deploy machine learning models at any scale. Amazon SageMaker removes all the barriers that typically slow down developers who want to use machine learning.
N/A
TensorFlow
Score 8.1 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 Sagemaker suits well in areas of data science and Machine learnings where medium to high-volume data is to be used for analysis. For a lean and platform agnostic deployment, it provides kubernetes integration to containerize the solution and deploy on any platform. It is one of the best solution for technical users for training Machine Learning models.
Whenever the problem has the demand for a neural networks based solution, Tensorflow (TF) is a great fit.
The tf.dataset API makes it really simple to create complex data pipelines in a few lines of code.
tf.estimators API abstracts all the complex computation graph creation logic making it very simple to get started.
Eager execution makes it simple to develop a TF graph as debugging the code would be like any other imperative Python program.
TF abstracts all the complexities of scaling it to multiple machines. It has various code and data distribution algorithms ready to use.
Projects like TensorBoard make monitoring the training process really easy. It also gives the ability to view embeddings without any extra code. Their What-If is extremely useful for poking and understanding a black box model. It also has tools to visualize data to quickly check for anomalies.
TF Autograph aims to covert any normal Python code into a distributed program which is quite handy to scale an existing code base.
SageMaker is useful as a managed Jupyter notebook server. Using the notebook instances' IAM roles to grant access to private S3 buckets and other AWS resources is great. Using SageMaker's lifecycle scripts and AWS Secrets Manager to inject connection strings and other secrets is great.
SageMaker is good at serving models. The interface it provides is often clunky, but a managed, auto-scaling model server is powerful.
SageMaker is opinionated about versioning machine learning models and useful if you agree with its opinions.
Data pipeline implementation is quite good, loading large amounts of data and pre-process it in an efficient way is no more issue for us
It supports all major DL algorithms and network layouts such as ConvNets, RNN, LSTMs, Word2Vec, and even the latest transformer architecture
The abstraction for the device is perfectly done and its support seamlessly for multiple GPU and even TPU will bring a lot of performance gain for enterprise scoped solution while still keep the flexibility
The TensorBoard is amazing. I haven't seen a similar thing in other frameworks on the market. It allows us to quickly understand and debug the model with the info visualization which makes understanding much better
A very supportive community, which is the key for sharing the ideas and find the quick and best solutions
It would be much better if they could provide good documentation and easy ways to understand concepts.
It is difficult to understand the concept behind for example, Tensor Graph, which takes a lot of time.
As you have to write everything, it is time consuming to write the implementation of whole neural network. It would be better if they can provide some wrapper library to make things easier.
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.
We have not invested in another machine learning software at this time and so far this has proved very successful with our machine learning teams. As mentioned, I am training these individuals simply on the fundamentals of the software and using it/customizing it for their needs. It has been very easy to do this and has gotten great reviews across the organization so far.
Can't seem to choose any deep learning platform in the above, so I'll list it here: 1. Apache MXNet: this has been used for one of our main algorithms for search as an end-to-end pipeline. We chose this because of the Scala bindings, which makes it easier to integrate with out JVM backend. MXNet seems comparable to TensorFlow, although community support is not as good as TensorFlow, and there are issues with memory leaks that are being worked on. TensorFlow in general is easier to use, but MXNet isn't too far behind. 2. Keras: still a favorite. Often I use this when paired with TensorFlow. TensorFlow 2.0 will make it even easier. 3. PyTorch: only used it a little, so it's hard to provide a good opinion. 4. DL4J: used it initially in an early days project because it has good JVM support. Harder to used not because of poor API design, but because community support is lacking and features don't come out as fast as TensorFlow.
Positive Impact- As I mentioned before its open source. Very easy to learn for average programmer/ developer. We were able to design a POC model for understanding the patient appointment cancellation snd reasons behind it in 3 week time frame.
Negative Impact- If you are using tensor flow for small project it works fine. If you are trying to build a model for face recognition it will be hard to program and train the system. It needs data to be processed before hand cannot learn on the go.