Package: mlinfra
Open source MLOps infrastructure deployment on Public Cloud providersOpen source MLOps:Open source tools for different stages in an MLOps lifecycle.Public Cloud Providers:Supporting all major cloud providers including AWS, GCP, Azure and AliBabamlinfrais the swiss army knife for deploying scalable MLOps infrastructure. It aims to make MLOps infrastructure deployment easy and accessible to all ML teams by liberating IaC logic for creating MLOps stacks which is usually tied to other frameworks.Contribute to the project by opening a issue or joining project roadmap and design related discussion ondiscord. Complete roadmap will be released soon!🚀 InstallationRequirementsmlinfrarequires the following to run perfectly:terraform>=1.4.0should be installed on the system.mlinfracan be installed simply by creating a python virtual environment and installingmlinfrapip packagepython-mvenvvenvsourcevenv/bin/activate
pipinstallmlinfraCopy a deployment config from theexamplesfolder, change your AWS account in the config file, configure your AWS credentials and deploy the configuration usingmlinfraterraform--actionapply--stack-config-path<path-to-your-config>For more information, read themlinfra user guideSupported ProvidersThe core purpose is to build for all cloud and deployment platforms out there. Any user should be able to just change the cloud provider or runtime environment (whether it be linux or windows) and have the capability to deploy the same tools.Currently a lot of work has been done around AWSThis project will be supporting the following providers:AWSGCPAzureKubernetesEKSGKEAKSDigitalOceanBare metal (such asHetzner)Openstackdocker composek3skindSupported MLOps Toolsmlinfraintends to support as manyMLOps toolsdeployable in a platform in their standalone as well as high availability across different layers of an MLOps stack:data_versioningexperiment_trackerorchestratorartifact_tracker / model_registrymodel_inferencemonitoringalertingDeployment Configmlinfradeploys infrastructure using declarative approach. It requires resources to be defined in ayamlfile with the following formatname:aws-mlops-stackprovider:name:awsaccount-id:xxxxxxxxxregion:eu-central-1deployment:type:cloud_vm# (this would create ec2 instances and then deploy applications on it)stack:data_versioning:-lakefs# can also be pachyderm or lakefs or neptune and so onsecrets_manager:-secrets_manager# can also be vault or any otherexperiment_tracker:-mlflow# can be weights and biases or determined, or neptune or clearml and so on...orchestrator:-zenml# can also be argo, or luigi, or airflow, or dagster, or prefect or flyte or kubeflow and so on...orchestrator:-aws-batch# can also be aws step functions or aws-fargate or aws-eks or azure-aks and so on...runtime_engine:-ray# can also be horovod or apache sparkartifact_tracker:-mlflow# can also be neptune or clearml or lakefs or pachyderm or determined or wandb and so on...# model registry and serving are quite close, need to think about them...model_registry:-bentoml# can also be  mlflow or neptune or determined and so on...model_serving:-nvidia triton# can also be bentoml or fastapi or cog or ray or seldoncore or tf servingmonitoring:-nannyML# can be grafana or alibi or evidently or neptune or mlflow or prometheus or weaveworks and so on...alerting:-mlflow# can be mlflow or neptune or determined or weaveworks or prometheus or grafana and so on...This was minimal spec for aws cloud as infra with custom applications. Other stacks such as feature_store, event streamers, loggers orcost dashboardscan be added via community requests.For more information, pleasecheck out the docsfor detailed documentation.VisionI realised MLOps infrastructure deployment is not as easy and common over the years of creating and deploying ML platforms for multiple teams. A lot of the times, teams start on wrong foot, leading to months of planning and implementation of MLOps infrastructure. This project is an attempt to create a common MLOps infrastructure deployment framework that can be used by any ML team to deploy their MLOps stack in a single command.DevelopmentThis project relies on terraform for IaC code and python to glue it all together.To get started, install terraform and python.You can install the required python packages by runningpip install -r requirements-dev.txtYou can run any of the available examples from theexamplesfolder by runningcd srcandinvoke terraform --stack-config-path examples/<application>/<cloud>-<application>.yaml --action <action>where<action>corresponds to terraform actions such asplan,applyanddestroy.For more information, please refer to the Engineering Wiki of the project (https://mlinfra.io/user_guide/) regarding what are the different components of the project and how they work together.ContributionsContributions are welcome! Help us onboard all of the available mlops tools on currently available cloud providers.For major changes, please openan issuefirst to discuss what you would like to change. A team member will get to you soon.For information on the general development workflow, see thecontribution guide.LicenseThemlinfralibrary is distributed under theApache-2 license.