Previously explained frameworks should be running well on your
machine, but you might run into issues when you try to deploy to another
environment like a server to serve the application 24/7. In most cases,
this is because your cloud environment is built on other hardware and
using a different OS with different drivers compared with your local
machine. To avoid this pitfall, you can containerize your model.
Deployment using containers allows you to benefit from management
software that simplifies launching and updating your application.
Features of Container Deployment
- Run a large number of individual applications on the same number of servers.
- Deliver ready-to-run applications in containers that contain all of
the code, libraries, and dependencies needed by any application.
- Make application deployment and management easier and more secure.
- Modify an application and run it anywhere in an instance.
One of the pros of using container deployment is reproducibility. For
example, if you take a typical model pipeline, you have a set of
packages and dependencies that are involved when you use open source
libraries, such as a certain version of numpy, and pandas, scikit-learn
Once the data scientist has trained the model, they must tell a software engineer to replicate the exact environment with the same libraries and version as the model was trained on the first time, which is a time-consuming task that must be documented and passed on to the deployment team. But with containers, we can package the code as well as the dependencies into a containerized package and then ship it on to the software engineering team so they can deploy it seamlessly without any handholding from the data science team.
It significantly reduces the time required to deploy a model which helps in reducing the time to generate insights. Also, while productizing your AI model, you may put everything in a container and ship it to your client, who can then just deploy it and get started rather than you providing the client, installation instructions to follow.
The most common way to containerize a model is using docker.
The common steps for Machine Learning Using Docker are:
- Training the ML model.
- Saving and exporting the ML model.
- Creating a Flask app that includes the UI layer.
- Building a custom Docker image for the app.
- Running the app using a Docker container.