Skip to content

Added MLFLow API to get latest model version

Darby Frey requested to merge get-latest-model-version-api into master

What does this MR do and why?

Continuing on the work to build the MLFlow Registered Models API, this MR adds an endpoint to get the latest version for a given registered model name.

The Get Latest ModelVersions API accepts a name and it returns an array ModelVersions, or an error message if the validation fails.

Note: the MLFlow API also supports a stages param, which we are ignoring for the time being.

Example response payload:

{
  "model_versions": [
    {
      "name": "model_2",
      "version": "1.2.2",
      "creation_timestamp": 1698776142,
      "last_updated_timestamp": 1698776142,
      "user_id": null,
      "current_stage": "development",
      "description": "",
      "source": "api/v4/projects/(id)/packages/ml_models/model_2/model_version/",
      "run_id": "",
      "status": "READY",
      "status_message": "",
      "metadata": [],
      "run_link": "",
      "aliases": []
    }
  ]
}

How to set up and validate locally

  1. In the Rails console, ensure the feature flag is enabled

    Feature.enable(:ml_experiment_tracking)
  2. In the Rails console, run the following to create a model and some model versions:

    project = Project.last # or find a project locally you want to use
    model = Ml::CreateModelService.new(project, 'my-model').execute
    model.versions.create(version: '1.0.0', project: project)
    model.versions.create(version: '2.0.0', project: project)
  3. Use the following cURL command to return the latest model version from the API

    curl -X "POST" "http://GDKHOST/api/v4/projects/PROJECT_ID/ml/mlflow/api/2.0/mlflow/registered-models/get-latest-versions" \
        -H 'Authorization: Bearer PERSONAL_ACCESS_TOKEN' \
        -H 'Content-Type: application/json; charset=utf-8' \
        -d $'{ "name": "my-model" }'

    The request should return version 2.0.0 of the model

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Darby Frey

Merge request reports