In order to create effective machine learning and deep learning models, you need copious amounts of data, a way to clean the data and perform feature engineering on it, and a way to train models on your data in a reasonable amount of time. Then you need a way to deploy your models, monitor them for drift over time, and retrain them as needed.
You can do all of that on-premises if you have invested in compute resources and accelerators such as GPUs, but you may find that if your resources are adequate, they are also idle much of the time. On the other hand, it can sometimes be more cost-effective to run the entire pipeline in the cloud, using large amounts of compute resources and accelerators as needed, and then releasing them.
The major cloud providers — and a number of minor clouds too — have put significant effort into building out their machine learning platforms to support the complete machine learning lifecycle, from planning a project to maintaining a model in production. How do you determine which of these clouds will meet your needs? Here are 12 capabilities every end-to-end machine learning platform should provide, with notes on which clouds provide them.
TABLE OF CONTENTS
- Be close to your data
- Support an ETL or ELT pipeline
- Support an online environment for model building
- Support scale-up and scale-out training
- Support AutoML and automated feature engineering
Be close to your data
If you have the large amounts of data needed to build precise models, you don’t want to ship it halfway around the world. The issue here isn’t distance, however, it’s time: Data transmission latency is ultimately limited by the speed of light, even on a perfect network with infinite bandwidth. Long distances mean latency.
The ideal case for very large data sets is to build the model where the data already resides, so that no mass data transmission is needed. A number of databases support that.
The next best case is for the data to be on the same high-speed network as the model-building software, which typically means within the same data center. Even moving the data from one data center to another within a cloud availability zone can introduce a significant delay if you have terabytes (TB) or more. You can mitigate this by doing incremental updates.
The worst case would be if you have to move big data long distances over paths with constrained bandwidth and high latency. The trans-Pacific cables going to Australia are particularly egregious in this respect.
The major cloud providers have been addressing this issue in multiple ways. One is to add machine learning and deep learning to their database services. For example, Amazon Redshift ML is designed to make it easy for SQL users to create, train, and deploy machine learning models using SQL commands against Amazon Redshift, a managed, petabyte-scale data warehouse service. BigQuery ML lets you create and execute machine learning models in BigQuery, Google Cloud’s managed, petabyte-scale data warehouse, also using SQL queries.
IBM Db2 Warehouse on Cloud includes a wide set of in-database SQL analytics that includes some basic machine learning functionality, plus in-database support for R and Python. Microsoft SQL Server Machine Learning Services supports R, Python, Java, the
PREDICT T-SQL command, the
rx_Predict stored procedure in the SQL Server RDBMS, and Spark MLlib in SQL Server Big Data Clusters. And, Oracle Cloud Infrastructure (OCI) Data Science is a managed and serverless platform for data science teams to build, train, and manage machine learning models using Oracle Cloud Infrastructure including Oracle Autonomous Database and Oracle Autonomous Data Warehouse.
Another way cloud providers have addressed this issue is to bring their cloud services to customer data centers as well as to satellite points of presence (often in large metropolitan areas) that are closer to customers than full-blown availability zones.
Support an ETL or ELT pipeline
ETL (export, transform, and load) and ELT (export, load, and transform) are two data pipeline configurations that are common in the database world. Machine learning and deep learning amplify the need for these, especially the transform portion. ELT gives you more flexibility when your transformations need to change, as the load phase is usually the most time-consuming for big data.
In general, data in the wild is noisy. That needs to be filtered. Additionally, data in the wild has varying ranges: One variable might have a maximum in the millions, while another might have a range of -0.1 to -0.001. For machine learning, variables must be transformed to standardized ranges to keep the ones with large ranges from dominating the model. Exactly which standardized range depends on the algorithm used for the model.
Support an online environment for model building
The conventional wisdom used to be that you should import your data to your desktop for model building. The sheer quantity of data needed to build good machine learning and deep learning models changes the picture: You can download a small sample of data to your desktop for exploratory data analysis and model building, but for production models you need to have access to the full data.
. If your data is in the same cloud as the notebook environment, you can bring the analysis to the data, minimizing the time-consuming movement of data. Notebooks can also be used for ELT as part of the pipeline.
Amazon SageMaker allows you to build, train, and deploy machine learning and deep learning models for any use case with fully managed infrastructure, tools, and workflows. SageMaker Studio is based on JupyterLab.
Microsoft Azure Machine Learning is an end-to-end, scalable, trusted AI platform with experimentation and model management; Azure Machine Learning Studio includes Jupyter Notebooks, a drag-and-drop machine learning pipeline designer, and an AutoML facility. Azure Databricks is an Apache Spark-based analytics platform; Azure Data Science Virtual Machines make it easy for advanced data scientists to set up machine learning and deep learning development environments.
Google Cloud Vertex AI allows you to build, deploy, and scale machine learning models faster, with pre-trained models and custom tooling within a unified artificial intelligence platform. Through Vertex AI Workbench, Vertex AI is natively integrated with BigQuery, Dataproc, and Spark. Vertex AI also integrates with widely used open source frameworks such as TensorFlow, PyTorch, and Scikit-learn, and supports all machine learning frameworks and artificial intelligence branches via custom containers for training and prediction.
Support scale-up and scale-out training
The compute and memory requirements of notebooks are generally minimal, except for training models. It helps a lot if a notebook can spawn training jobs that run on multiple large virtual machines or containers. It also helps a lot if the training can access accelerators such as GPUs, TPUs, and FPGAs; these can turn days of training into hours.
Amazon SageMaker supports a wide range of VM sizes; GPUs and other accelerators including NVIDIA A100s, Habana Gaudi, and AWS Trainium; a model compiler; and distributed training using either data parallelism or model parallelism. Azure Machine Learning supports a wide range of VM sizes; GPUs and other accelerators including NVIDIA A100s and Intel FPGAs; and distributed training using either data parallelism or model parallelism. Google Cloud Vertex AI supports a wide range of VM sizes; GPUs and other accelerators including NVIDIA A100s and Google TPUs; and distributed training using either data parallelism or model parallelism, with an optional reduction server.
Support AutoML and automated feature engineering
Not everyone is good at picking machine learning models, selecting features (the variables that are used by the model), and engineering new features from the raw observations. Even if you’re good at those tasks, they are time-consuming and can be automated to a large extent.
AutoML systems often try many models to see which result in the best objective function values, for example the minimum squared error for regression problems. The best AutoML systems can also perform feature engineering, and use their resources effectively to pursue the best possible models with the best possible sets of features.
Amazon SageMaker Autopilot provides AutoML and hyperparameter tuning, which can use Hyperband as a search strategy. Azure Machine Learning and Azure Databricks both provide AutoML, as does Apache Spark in Azure HDInsight. Google Cloud Vertex AI supplies AutoML, and so do Google’s specialized AutoML services for structured data, sight, and language, although Google tends to lump AutoML in with transfer learning in some cases.
DataRobot, Dataiku, and H2O.ai Driverless AI all offer AutoML with automated feature engineering and hyperparameter tuning.
Support the best machine learning and deep learning frameworks
Most data scientists have favorite frameworks and programming languages for machine learning and deep learning. For those who prefer Python, Scikit-learn is often a favorite for machine learning, while TensorFlow, PyTorch, Keras, and MXNet are often top picks for deep learning. In Scala, Spark MLlib tends to be preferred for machine learning. In R, there are many native machine learning packages, and a good interface to Python. In Java, H2O.ai rates highly, as do Java-ML and Deep Java Library.
The cloud machine learning and deep learning platforms tend to have their own collection of algorithms, and they often support external frameworks in at least one language or as containers with specific entry points. In some cases you can integrate your own algorithms and statistical methods with the platform’s AutoML facilities, which is quite convenient.
Some cloud platforms also offer their own tuned versions of major deep learning frameworks. For example, AWS has an optimized version of TensorFlow that it claims can achieve nearly linear scalability for deep neural network training. Similarly, Google Cloud offers TensorFlow Enterprise.