Background
As Azure machine learning service is integrated with MLOps, which does not offer powerful model registry as MLflow does, it is required to design customized architecture to host MLflow central server. Meanwhile, kubernetes has consolidated its popularity as a portable, extensible, open-source platform. It is feasible to put everything on Azure Kubernetes Service.
Architecture Design
Note: Lucidchart is embeded, incognito mode may cause problems.
Explaination
- Pulling raw data from data lake
- Training the models with PySpark in Databricks on Azure, which is integrated with Azure Machine Learning Service
- Packing the model into the docker image along with the code injected for communicating with MLFlow central server
- Pushing the image to Azure Container Registry
- Deploying the image to Azure k8s Service with kube-cli through configured YAML file
- Tracking and registering the existing models using MLFlow Tracking Server that was already deployed as a service
- Exposing Machine Learning deployments as a single service to Azure k8s Load Balancer Endpoint with k8s traffic rules
- Feeding Real-time data or batch-inference data from data lake to deployed services
- Exposing Machine Learning API to the public network