MLOps is a set of best practices that revolve around making machine learning in production more seamless
This picture was taken from state-of-mlops
credits to service https://tableconvert.com/ for formatting the table below
| Comparison Item | MLFlow | AOA | ClearML |
|---|---|---|---|
| Experiment tracking | |||
| Track experiments with api calls | yes | yes | yes |
| Store experiment in metadata | yes | yes | yes |
| Metadaba backend | mysql, mssql, sqlite, and postgresql | h2, mysql, postgresql, mssql | mongo |
| Experiment tracking UI | yes | yes | yes |
| Experiment annotation | yes | only tags and comment on approval | yes |
| Experiment comparison | yes | yes | yes |
| Save graphics with experiments | yes | yes | yes |
| Passing parameters into ml code (training/evaluation) | yes | yes | yes |
| Enironments support | yes, conda and docker | yes, docker | yes, docker, pip, conda, poetry |
| Code repo | |||
| Package ml code into projects with fixed file/folder structure | yes | yes | yes, but the structure or repo is not fixed |
| Clone code from git | yes | yes | yes |
| Monitor changes in ml repo | no | yes | yes |
| Artifact storage | |||
| Storage types supported | S3-compatible, Azure Blob Storage, Google Cloud Storage, FTP server, SFTP Server, NFS, HDFS |
Jfrog Artifactory, S3-compatible | S3-compatible, azure, google cloud, minio |
| Proxy access to artifacts in UI | yes | yes | yes |
| Dataset support | |||
| Supports dataset definitions | no | yes | yes |
| Connection types | n/a | Vantage, S3, Hadoop and a custom type of connections | any |
| Credentials support | n/a | Username/password, Kerberos, AWS Secrets and Kubernetes as credentials | yes |
| Dataset versions | n/a | yes | yes |
| Dataset templates | n/a | yes | no |
| Model Lifecycle | |||
| Support model registry | yes | yes | yes |
| Available model statuses | staging, production, archive | Trained, Evaluated, Deployed, Retired, Approved, Rejected | yes |
| Lineage support | stated in doc but not clear how | yes | yes |
| Integration with BPM | no | yes, JBPM support | no |
| Trigger model events on status change, code change in repo | no | yes | no |
| Model serving | |||
| Support model serving | yes | yes | yes |
| Default model serving engine | conda env, gunicorn | docker, gunicorn | docker, gunicorn |
| Batch scoring support | yes | yes | yes |
| AirFlow integration for batch scoring | no | yes | no |
| Cloud deployment | yes: AzureML, Sagemaker | yes: Teradata Vantage and any other cloud | yes: k8s |
| Bring your own model (BYOM - deploy with no code via onnx, pmml, etc ) | out of the box - no, need customization | yes | |
| Deploy to spark | yes | yes | yes |
| Deploy to K8S | yes, over Azure | yes | yes |
| Deploy to other clusters | yes, with custom plugins | yes, with custom Jenkins workflow | yes, with custom Jenkins workflow |
| Canary deployment | no | no | yes |
| Model monitoring | |||
| Support model monitoring | no, need 3rd party solution like evidently.ai | yes | yes |
| Feature drift | n/a | yes | yes |
| Prediction drift | n/a | yes | yes |
| Model performance | n/a | yes | yes |
| Alerting | n/a | yes, with Prometheus | yes |
| Extra items | |||
| Extensibility with plugins | yes, can write plugins for: Tracking Store ArtifactRepository Run context provider Model Registry Store MLFlow Project backend |
yes with custom Jenkins pipelines | n/a |
| Model hierarchy | no | yes, can pack models into projects | yes |
| Authentication | yes, only with databricks | yes, LDAP | yes |
| Access control | yes, only with databricks | yes | yes |
| Pipeline mechanism | no | no | yes |
| Automatically capture input parameters and output artifacts | no | no | yes |
| Ability to run experiment on remote machine with modified parameters | no | no | yes |
