Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the bug of stages in models URI being case-sensitive #5312

Merged
merged 4 commits into from Jan 26, 2022

Conversation

lichenran1234
Copy link
Contributor

@lichenran1234 lichenran1234 commented Jan 26, 2022

Signed-off-by: Chenran Li chenran.li@databricks.com

What changes are proposed in this pull request?

Fix a bug of case-insensitive stages (e.g. models:/regressor/pRoduction) in models URI stopped working.

Mlflow model registry allows users to load models using models URI. One format of the models URI is models:/<model_name>/<stage>, for example, models:/regressor/Production.

Model registry has been accepting case insensitive model URIs, like models:/regressor/production, in mlflow < 1.23.0.

But after the bug introduced in mlflow 1.23.0 (by PR #5027), referencing models by stage suddenly became case sensitive. To reference the latest Production version of model regressor, only this format is working:

  • models:/regressor/Production

These formats are no longer working:

  • models:/regressor/production
  • models:/regressor/pRoduction

This PR makes the stages in models URL case-insensitive again, thus fixing the bug. To make everything in sync, this PR also makes the "latest" string in models:/<model_name>/latest URIs case insensitive. So Latest, LATEST etc. will start to work.

How is this patch tested?

Unit tests.

Does this PR change the documentation?

  • No. You can skip the rest of this section.
  • Yes. Make sure the changed pages / sections render correctly by following the steps below.
  1. Check the status of the ci/circleci: build_doc check. If it's successful, proceed to the
    next step, otherwise fix it.
  2. Click Details on the right to open the job page of CircleCI.
  3. Click the Artifacts tab.
  4. Click docs/build/html/index.html.
  5. Find the changed pages / sections and make sure they render correctly.

Release Notes

Is this a user-facing change?

  • No. You can skip the rest of this section.
  • Yes. Give a description of this change to be included in the release notes for MLflow users.

Fix a bug of case-insensitive stages (e.g. models:/regressor/pRoduction) in models URI stopped working.

What component(s), interfaces, languages, and integrations does this PR 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
  • 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: MLflow Model server, model deployment tools, Spark UDFs
  • area/server-infra: MLflow Tracking server backend
  • area/tracking: Tracking Service, tracking client APIs, autologging

Interface

  • area/uiux: Front-end, user experience, plotting, JavaScript, JavaScript dev server
  • 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

Language

  • language/r: R APIs and clients
  • language/java: Java APIs and clients
  • language/new: Proposals for new client languages

Integrations

  • integrations/azure: Azure and Azure ML integrations
  • integrations/sagemaker: SageMaker integrations
  • integrations/databricks: Databricks integrations

How should the PR be classified in the release notes? Choose one:

  • rn/breaking-change - The PR will be mentioned in the "Breaking Changes" section
  • rn/none - No description will be included. The PR will be mentioned only by the PR number in the "Small Bugfixes and Documentation Updates" section
  • rn/feature - A new user-facing feature worth mentioning in the release notes
  • rn/bug-fix - A user-facing bug fix worth mentioning in the release notes
  • rn/documentation - A user-facing documentation change worth mentioning in the release notes

Signed-off-by: Chenran Li <chenran.li@databricks.com>
@github-actions github-actions bot added area/model-registry Model registry, model registry APIs, and the fluent client calls for model registry area/sqlalchemy Use of SQL alchemy in tracking service or model registry rn/bug-fix Mention under Bug Fixes in Changelogs. labels Jan 26, 2022
…ient

Signed-off-by: Chenran Li <chenran.li@databricks.com>
@harupy
Copy link
Member

harupy commented Jan 26, 2022

@lichenran1234 We already figured out what's causing the r check to fail. Please just ignore it on this PR :)

Signed-off-by: Chenran Li <chenran.li@databricks.com>
Copy link
Collaborator

@ankit-db ankit-db left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix @lichenran1234 !

Signed-off-by: Chenran Li <chenran.li@databricks.com>
@lichenran1234 lichenran1234 merged commit 3c43424 into master Jan 26, 2022
@lichenran1234 lichenran1234 deleted the fix-model-uri branch January 26, 2022 19:48
dbczumar pushed a commit that referenced this pull request Jan 26, 2022
Fix the bug of stages in models URI being case-sensitive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/model-registry Model registry, model registry APIs, and the fluent client calls for model registry area/sqlalchemy Use of SQL alchemy in tracking service or model registry rn/bug-fix Mention under Bug Fixes in Changelogs.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] referencing models by stage using models URI suddenly became case sensitive
3 participants