yocto-gl icon indicating copy to clipboard operation
yocto-gl copied to clipboard

[FR] Event based notifications for model registry changes

Open gtadamson opened this issue 4 years ago • 12 comments

Willingness to contribute

The MLflow Community encourages new feature contributions. Would you or another member of your organization be willing to contribute an implementation of this feature (either as an MLflow Plugin or an enhancement to the MLflow code base)?

  • [ ] Yes. I can contribute this feature independently.
  • [ ] Yes. I would be willing to contribute this feature with guidance from the MLflow community.
  • [X] No. I cannot contribute this feature at this time.

Proposal Summary

Subscription service for model registry changes. To use MLflow to drive deployment, we're currently querying MLflow periodically to determine if new versions were promoted to a different stage. It would probably be cleaner and simpler to register with MLflow and listen to an event stream (pub sub model).

Motivation

  • What is the use case for this feature? Automated model deployment. MLflow drives another system.
  • Why is this use case valuable to support for MLflow users in general? As MLflow is used more, the ability for it to easily interface with a production environment would be useful. Event based notifications are cleaner than time based querying with diff calculations.
  • Why is this use case valuable to support for your project(s) or organization? We currently query all registered models, filter them down to the ones we care about for each environment, and then compute what the diffs are from what is stored in the deployment environment.
  • Why is it currently difficult to achieve this use case? I wouldn't classify it as difficult, just non-optimal and requiring more code to interface with MLflow.

What component(s), interfaces, languages, and integrations does this feature affect?

Components

  • [ ] area/artifacts: Artifact stores and artifact logging
  • [ ] area/build: Build and test infrastructure for MLflow
  • [ ] area/docs: MLflow documentation pages
  • [ ] area/examples: Example code
  • [x] area/model-registry: Model Registry service, APIs, and the fluent client calls for Model Registry
  • [ ] area/models: MLmodel format, model serialization/deserialization, flavors
  • [ ] area/projects: MLproject format, project running backends
  • [ ] area/scoring: Local serving, model deployment tools, spark UDFs
  • [x] area/tracking: Tracking Service, tracking client APIs, autologging

Interfaces

  • [ ] area/uiux: Front-end, user experience, JavaScript, plotting
  • [ ] area/docker: Docker use across MLflow's components, such as MLflow Projects and MLflow Models
  • [ ] area/sqlalchemy: Use of SQLAlchemy in the Tracking Service or Model Registry
  • [ ] area/windows: Windows support

Languages

  • [ ] language/r: R APIs and clients
  • [ ] language/java: Java APIs and clients

Integrations

  • [ ] integrations/azure: Azure and Azure ML integrations
  • [ ] integrations/sagemaker: SageMaker integrations

Details

gtadamson avatar Jun 29 '20 15:06 gtadamson

@gtadamson

Thanks for filling this enhancement. In general, it's a seems like good idea to have an event-based notification that triggers an action, such as execute custom code at the registered endpoint. Webhooks for actions come to mind. Is that what you had in mind?

dmatrix avatar Jun 29 '20 16:06 dmatrix

@dmatrix That is fine. We use Kafka as our messaging bus but having an HTTP container that interfaces with MLflow and then publishes to a topic is easy enough. I'm certainly not an expert in this domain so any solution that is amenable to others is acceptable to me.

gtadamson avatar Jun 29 '20 17:06 gtadamson

Hi also interested in this in the form of webhooks :)

Webhooks are more effective than implementing a service pulling information from MLflow about the status of a model and then triggering a proper deployment job.

According to this #2383 (https://github.com/mlflow/mlflow/issues/2383) I thought that there is ongoing work on that .

echarso avatar Jun 29 '20 22:06 echarso

Looks like this feature exists in the commercial product, any chance of it being included here? https://databricks.com/blog/2022/02/01/streamline-mlops-with-mlflow-model-registry-webhooks.html

parviste-fortum avatar Apr 29 '22 12:04 parviste-fortum

Looks like this feature exists in the commercial product, any chance of it being included here? https://databricks.com/blog/2022/02/01/streamline-mlops-with-mlflow-model-registry-webhooks.html

I don't think we can expect this feature in the main fork.

cao-nv avatar Aug 01 '22 09:08 cao-nv

@dmatrix I am also interested in this feature. Is there any possibility to add this feature? I am willing to contribute with community guidance :)

shaikmoeed avatar Aug 19 '22 19:08 shaikmoeed

@dmatrix is there any update on this. I need this feature in my use-case and I am happy to contribute as well if possible.

vikrant4 avatar Apr 26 '23 07:04 vikrant4

@dmatrix I would be happy to contribute to this feature as well, so we can move away from pooling states ;-)

d13g0 avatar Aug 07 '23 21:08 d13g0

This feature would be very useful!

kirit93 avatar Aug 18 '23 03:08 kirit93

This feature will be greatly usefull.

sarkaramal avatar Sep 04 '23 08:09 sarkaramal

This feature will be very useful !!

ishan-modi avatar Sep 05 '23 05:09 ishan-modi