Coder Social home page Coder Social logo

mlflow's Introduction

mlflow

mlflow

A Helm chart for Mlflow open source platform for the machine learning lifecycle

Version: 0.7.19 Type: application AppVersion: 2.1.1

Get Helm Repository Info

helm repo add community-charts https://community-charts.github.io/helm-charts
helm repo update

See helm repo for command documentation.

Installing the Chart

helm install [RELEASE_NAME] community-charts/mlflow

See configuration below.

See helm install for command documentation.

Tip: Search all available chart versions using helm search repo community-charts -l. Please don't forget to run helm repo update before the command.

Supported Databases

Currently, we support the following two databases as a backend repository for Mlflow.

Supported Cloud Providers

We currently support the following three cloud providers for BLOB storage integration.

Values Files Examples

Postgres Database Migration Values Files Example

backendStore:
  databaseMigration: true
  postgres:
    enabled: true
    host: "postgresql-instance1.cg034hpkmmjt.eu-central-1.rds.amazonaws.com"
    port: 5432
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

MySQL Database Migration Values Files Example

backendStore:
  databaseMigration: true
  mysql:
    enabled: true
    host: "mysql-instance1.cg034hpkmmjt.eu-central-1.rds.amazonaws.com"
    port: 3306
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

Postgres Database Connection Check Values Files Example

backendStore:
  databaseConnectionCheck: true
  postgres:
    enabled: true
    host: "postgresql-instance1.cg034hpkmmjt.eu-central-1.rds.amazonaws.com"
    port: 5432
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

MySQL Database Connection Check Values Files Example

backendStore:
  databaseConnectionCheck: true
  mysql:
    enabled: true
    host: "mysql-instance1.cg034hpkmmjt.eu-central-1.rds.amazonaws.com"
    port: 3306
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

AWS Installation Examples

You can use 2 different way to connect your S3 backend.

  • First way, you can access to your S3 with IAM user's awsAccessKeyId and awsSecretAccessKey.
  • Second way, you can create an aws role for your service account. And you can assign your role ARN from serviceAccount annotation. You don't need to create or manage IAM user anymore. Please find more information from here.

Tip: Please follow this tutorial to create your own RDS postgres cluster.

S3 (Minio) and PostgreSQL DB Configuration on Helm Upgrade Command Example

helm upgrade --install mlflow community-charts/mlflow \
  --set backendStore.databaseMigration=true \
  --set backendStore.postgres.enabled=true \
  --set backendStore.postgres.host=postgres-service \
  --set backendStore.postgres.port=5432 \
  --set backendStore.postgres.database=postgres \
  --set backendStore.postgres.user=postgres \
  --set backendStore.postgres.password=postgres \
  --set artifactRoot.s3.enabled=true \
  --set artifactRoot.s3.bucket=mlflow \
  --set artifactRoot.s3.awsAccessKeyId=minioadmin \
  --set artifactRoot.s3.awsSecretAccessKey=minioadmin \
  --set extraEnvVars.MLFLOW_S3_ENDPOINT_URL=http://minio-service:9000 \
  --set serviceMonitor.enabled=true

S3 (Minio) and MySQL DB Configuration on Helm Upgrade Command Example

helm upgrade --install mlflow community-charts/mlflow \
  --set backendStore.databaseMigration=true \
  --set backendStore.mysql.enabled=true \
  --set backendStore.mysql.host=mysql-service \
  --set backendStore.mysql.port=3306 \
  --set backendStore.mysql.database=mlflow \
  --set backendStore.mysql.user=mlflow \
  --set backendStore.mysql.password=mlflow \
  --set artifactRoot.s3.enabled=true \
  --set artifactRoot.s3.bucket=mlflow \
  --set artifactRoot.s3.awsAccessKeyId=minioadmin \
  --set artifactRoot.s3.awsSecretAccessKey=minioadmin \
  --set extraEnvVars.MLFLOW_S3_ENDPOINT_URL=http://minio-service:9000 \
  --set serviceMonitor.enabled=true

S3 Access with awsAccessKeyId and awsSecretAccessKey Values Files Example

backendStore:
  postgres:
    enabled: true
    host: "postgresql-instance1.cg034hpkmmjt.eu-central-1.rds.amazonaws.com"
    port: 5432
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

artifactRoot:
  s3:
    enabled: true
    bucket: "my-mlflow-artifact-root-backend"
    awsAccessKeyId: "a1b2c3d4"
    awsSecretAccessKey: "a1b2c3d4"

S3 Access with AWS EKS Role ARN Values Files Example

Tip: Associate an IAM role to a service account

serviceAccount:
  create: true
  annotations:
    eks.amazonaws.com/role-arn: "arn:aws:iam::account-id:role/iam-role-name"
  name: "mlflow"

backendStore:
  postgres:
    enabled: true
    host: "postgresql-instance1.cg034hpkmmjt.eu-central-1.rds.amazonaws.com"
    port: 5432
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

artifactRoot:
  s3:
    enabled: true
    bucket: "my-mlflow-artifact-root-backend"

Azure Cloud Installation Example

Tip: Please follow this tutorial to create your own postgres database. Tip: Please follow this tutorial to create your azure blob storage and container.

backendStore:
  postgres:
    enabled: true
    host: "mydemoserver.postgres.database.azure.com"
    port: 5432
    database: "mlflow"
    user: "mlflowuser"
    password: "Pa33w0rd!"

artifactRoot:
  azureBlob:
    enabled: true
    container: "mlflow"
    storageAccount: "mystorageaccount"
    accessKey: "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="

Requirements

Kubernetes: >=1.16.0-0

Uninstall Helm Chart

helm uninstall [RELEASE_NAME]

This removes all the Kubernetes components associated with the chart and deletes the release.

See helm uninstall for command documentation.

Upgrading Chart

helm upgrade [RELEASE_NAME] community-charts/mlflow

Values

Key Type Default Description
affinity object {} Set the affinity for the pod.
artifactRoot.azureBlob.accessKey string "" Azure Cloud Storage Account Access Key for the container
artifactRoot.azureBlob.connectionString string "" Azure Cloud Connection String for the container. Only onnectionString or accessKey required
artifactRoot.azureBlob.container string "" Azure blob container name
artifactRoot.azureBlob.enabled bool false Specifies if you want to use Azure Blob Storage Mlflow Artifact Root
artifactRoot.azureBlob.path string "" Azure blobk container folder. If you want to use root level, please don't set anything.
artifactRoot.azureBlob.storageAccount string "" Azure storage account name
artifactRoot.gcs.bucket string "" Google Cloud Storage bucket name
artifactRoot.gcs.enabled bool false Specifies if you want to use Google Cloud Storage Mlflow Artifact Root
artifactRoot.gcs.path string "" Google Cloud Storage bucket folder. If you want to use root level, please don't set anything.
artifactRoot.proxiedArtifactStorage bool false Specifies if you want to enable proxied artifact storage access
artifactRoot.s3.awsAccessKeyId string "" AWS IAM user AWS_ACCESS_KEY_ID which has attached policy for access to the S3 bucket
artifactRoot.s3.awsSecretAccessKey string "" AWS IAM user AWS_SECRET_ACCESS_KEY which has attached policy for access to the S3 bucket
artifactRoot.s3.bucket string "" S3 bucket name
artifactRoot.s3.enabled bool false Specifies if you want to use AWS S3 Mlflow Artifact Root
artifactRoot.s3.path string "" S3 bucket folder. If you want to use root level, please don't set anything.
backendStore.databaseConnectionCheck bool false Add an additional init container, which checks for database availability
backendStore.databaseMigration bool false Specifies if you want to run database migration
backendStore.mysql.database string "" mlflow database name created before in the mysql instance
backendStore.mysql.driver string "pymysql" mysql database connection driver. e.g.: "pymysql"
backendStore.mysql.enabled bool false Specifies if you want to use mysql backend storage
backendStore.mysql.host string "" MySQL host address. e.g. your Amazon RDS for MySQL
backendStore.mysql.password string "" mysql database user password which can access to mlflow database
backendStore.mysql.port int 3306 MySQL service port
backendStore.mysql.user string "" mysql database user name which can access to mlflow database
backendStore.postgres.database string "" mlflow database name created before in the postgres instance
backendStore.postgres.driver string "" postgres database connection driver. e.g.: "psycopg2"
backendStore.postgres.enabled bool false Specifies if you want to use postgres backend storage
backendStore.postgres.host string "" Postgres host address. e.g. your RDS or Azure Postgres Service endpoint
backendStore.postgres.password string "" postgres database user password which can access to mlflow database
backendStore.postgres.port int 5432 Postgres service port
backendStore.postgres.user string "" postgres database user name which can access to mlflow database
extraArgs object {} A map of arguments and values to pass to the mlflow server command Keys must be camelcase. Helm will turn them to kebabcase style.
extraContainers list [] Extra containers for the mlflow pod
extraEnvVars object {} Extra environment variables
extraFlags list [] A list of flags to pass to mlflow server command Items must be camelcase. Helm will turn them to kebabcase style.
extraSecretNamesForEnvFrom list [] Extra secrets for environment variables
extraVolumeMounts list [] Extra Volume Mounts for the mlflow container
extraVolumes list [] Extra Volumes for the pod
fullnameOverride string "" String to override the default generated fullname
image.pullPolicy string "IfNotPresent" The docker image pull policy
image.repository string "burakince/mlflow" The docker image repository to use
image.tag string "" The docker image tag to use. Default app version
imagePullSecrets list [] Image pull secrets for private docker registry usages
ingress.annotations object {} Additional ingress annotations
ingress.className string "" New style ingress class name. Only possible if you use K8s 1.18.0 or later version
ingress.enabled bool false Specifies if you want to create an ingress access
ingress.hosts[0].host string "chart-example.local"
ingress.hosts[0].paths[0].path string "/"
ingress.hosts[0].paths[0].pathType string "ImplementationSpecific" Ingress path type
ingress.tls list [] Ingress tls configuration for https access
initContainers list [] Init Containers for Mlflow Pod
livenessProbe object {} Liveness probe configurations. Please look to here.
nameOverride string "" String to override the default generated name
nodeSelector object {} Set the node selector for the pod.
podAnnotations object {} Annotations for the pod
podSecurityContext object {} Security context for all pod
readinessProbe object {} Readiness probe configurations. Please look to here.
replicaCount int 1 Numbers of replicas
resources object {} Set the resources requests and limits
securityContext object {} Security context for the mlflow container
service.annotations object {} Additional service annotations
service.name string "http" Default Service name
service.port int 5000 Default Service port
service.type string "ClusterIP" Specifies what type of Service should be created
serviceAccount.annotations object {} Annotations to add to the service account. AWS EKS users can assign role arn from here. Please find more information from here: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
serviceAccount.create bool true Specifies whether a ServiceAccount should be created
serviceAccount.name string "" The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template
serviceMonitor.enabled bool false When set true then use a ServiceMonitor to configure scraping
serviceMonitor.interval string "30s" Set how frequently Prometheus should scrape
serviceMonitor.labels object {"release":"prometheus"} Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator
serviceMonitor.labels.release string "prometheus" default kube prometheus stack helm chart serviceMonitor selector label Mostly it's your prometheus helm release name. Please find more information from here: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/troubleshooting.md#troubleshooting-servicemonitor-changes
serviceMonitor.metricRelabelings list [] Set of rules to relabel your exist metric labels
serviceMonitor.namespace string "monitoring" Set the namespace the ServiceMonitor should be deployed
serviceMonitor.targetLabels list [] Set of labels to transfer on the Kubernetes Service onto the target.
serviceMonitor.telemetryPath string "/metrics" Set path to mlflow telemtery-path
serviceMonitor.timeout string "10s" Set timeout for scrape
serviceMonitor.useServicePort bool false When set true then use a service port. On default use a pod port.
tolerations list [] Set the tolerations for the pod.

Homepage: https://mlflow.org

Source Code

Chart Development

Please install unittest helm plugin with helm plugin install https://github.com/quintush/helm-unittest command and use following command to run helm unit tests.

helm unittest --helm3 --strict --file unittests/*.yaml --file unittests/**/*.yaml charts/mlflow

Maintainers

Name Email Url
burakince [email protected] https://www.burakince.net

Updated

Name Email Url
serdarcanb [email protected] https://serdarcanb.github.io

mlflow's People

Contributors

serdarcanb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.