How AWS Help in Productionizing ML Models
Machine Learning (ML) is impacting Businesses a lot in this 20 century. It impacts many organizations from retail and financial services to autonomous driving and even plays a huge role in sending humans to space. For these organizations, deploying, training, and testing ML models into production is only a step towards achieving business goals.
The more automated the process is, the easier it is to execute and is more likely to be used exactly as you want it to be.
AWS(Amazon Web Service)
AWS is a cloud platform which is offered by Amazon. It offers different secured cloud services that offer storage, compute powers, database, production, some pretrained algorithms and it also offers a virtual platform, content delivery, and various other functionalities. We can also call it a large stack of cloud-based services.
Different ways to productionize your ML model in AWS:
There are different ways to productionize ML models. In this blog, we are going to see some of those ways
4-AWS Elastic beanstalk,
And many more…
How it helps
Let’s take a scenario where we are working on House Prediction based on its internal features. We develop an ML model and apply some Algorithms and train it on thousands of data and then deploy it on a Flask framework to make a UI(User Interface) so that users can interact with it and use it. All of these things we do in our system or we can say locally. So to make it all dynamic we use cloud services that handle all the maintenance and all background things for us. We don’t have to care about those things and AWS is that platform that provides those different services that can handle all things for us like maintenance, security, backups, and all. AWS Lambda function is a great service by amazon and it is used by NETFLIX, Linkedin , Facebook, etc. so let’s have a look at it as well.
Lambda is an event-driven, Serverless Computing platform offered by Amazon Web Services(AWS). It is a computing service that runs your code in response to events and automatically handles the computing resources required for that code.
You can zip your code and dependencies in one folder and upload it there and return responses with the help of API Gateway Back to the user. It allows up to 250 Mb zip file contents and if you go above and beyond this limit you have to go for other services or put a mail to aws for increasing size. Because of its automatic managing features, it is helping business a lot and making deployment easy as we don’t need to care about creating the server.
EC2(Elastic Compute Cloud)
Amazon EC2 is a web service interface. It provides resizable compute capacity in AWS. It is designed for developers to give complete control over web-scaling and computing resources.
EC2 instances can be resized and the number of EC2 Instances is Scaled up or down as per our requirement. These EC2 instances can be launched in one or many geographical locations or regions, and Availability Zones (AZs).
Ex- Like for the above case where we deploy our model into the flask(locally) and make an application to deploy it on the server so that others can use it so that we can go with EC2. Firstly we create an instance then after creating it we connect it locally with the help of putty and with the help of WINSCP software we can upload our code over EC2(virtual machine). Then we use docker to containerize the flask application and then we host the container on an AWS EC2 instance and consume the web service. This is one way there are many other ways we can use it.
Amazon Sagemaker is a fully managed service that is offered by AWS . It provides the ability to developers and data scientists to build, train, and deploy ML models quickly. SageMaker removes heavy lifting in each step of the ML process and makes it easier so we can develop high-quality models.
Traditional Machine Learning(ML) development is a complex and iterative process. It made it even harder and harder because there were no integrated tools for the entire ML workflow. You need to bind together tools and workflows, which is a time-consuming and error-prone process. SageMaker solves these problems by providing the components used for ML in a single toolset or stack. So ML models get to production faster with less effort and at a very low cost.
One thing I personally like about Sagemaker is its modular design. If you want to train your model elsewhere and just want to use SageMaker for deployment, you can do that. If you just want to train your ML model and want to use its Hyper-Parameter tuning capability you can do that.
There are different ways to deploy your model on Sagemaker
1-If you want you can host multiple models in the same endpoint. For this all we need to create a custom Docker container image though. It is a bit of a complex process. You’ll need to create your Container image and host it in Amazon Elastic Container Registry (ECR) and then use this image for hosting multiple ML models. Multi-model endpoints let you host multiple models, and Instances are pre-configured to handle loads of multiple ML models without worrying about the DevOps of this.
2–Host ML model in an endpoint – If you want you can call an endpoint from a Lambda function. This way your web app can just call the Lambda function then it calls the model endpoint. If you are hosting this API somewhere else, then the API code can call this endpoint. If You want you can also configure API Gateway to receive an HTTP request which triggers Lambda function and it hit the SageMaker endpoint such as below:
After getting to work with the aforementioned technologies, I can say that AWS Lambda for serverless applications has many features and as to Sagemaker, with its help, all things have become so easy to deploy and it even helps to produce our model I personally like all these services as it makes it possible to deploy a model within an hour. There are many more services left to explore that could make our job much easier.