Add support for mlflow run run_name
What does this MR do and why?
Adds support for the run_name parameter during creation of MLFlow runs (https://www.mlflow.org/docs/latest/rest-api.html#create-run).
Database Migration
Up
❯ bundle exec rails db:migrate RAILS_ENV=development
main: == 20221219103007 AddNameToMlCandidates: migrating ============================
main: -- add_column(:ml_candidates, :name, :text)
main: -> 0.0031s
main: == 20221219103007 AddNameToMlCandidates: migrated (0.0113s) ===================
main: == 20221219112528 AddTextLimitToNameOnMlCandidates: migrating =================
main: -- transaction_open?()
main: -> 0.0000s
main: -- current_schema()
main: -> 0.0005s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute("ALTER TABLE ml_candidates\nADD CONSTRAINT check_25e6c65051\nCHECK ( char_length(name) <= 255 )\nNOT VALID;\n")
main: -> 0.0019s
main: -- current_schema()
main: -> 0.0003s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0004s
main: -- execute("ALTER TABLE ml_candidates VALIDATE CONSTRAINT check_25e6c65051;")
main: -> 0.0009s
main: -- execute("RESET statement_timeout")
main: -> 0.0008s
main: == 20221219112528 AddTextLimitToNameOnMlCandidates: migrated (0.2573s) ========
ci: == 20221219103007 AddNameToMlCandidates: migrating ============================
ci: -- add_column(:ml_candidates, :name, :text)
ci: -> 0.0019s
ci: == 20221219103007 AddNameToMlCandidates: migrated (0.0189s) ===================
ci: == 20221219112528 AddTextLimitToNameOnMlCandidates: migrating =================
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- current_schema()
ci: -> 0.0004s
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- execute("ALTER TABLE ml_candidates\nADD CONSTRAINT check_25e6c65051\nCHECK ( char_length(name) <= 255 )\nNOT VALID;\n")
ci: -> 0.0015s
ci: -- current_schema()
ci: -> 0.0004s
ci: -- execute("SET statement_timeout TO 0")
ci: -> 0.0004s
ci: -- execute("ALTER TABLE ml_candidates VALIDATE CONSTRAINT check_25e6c65051;")
ci: -> 0.0007s
ci: -- execute("RESET statement_timeout")
ci: -> 0.0004s
ci: == 20221219112528 AddTextLimitToNameOnMlCandidates: migrated (0.0214s) ========
Down
❯ bundle exec rails db:migrate:down:main RAILS_ENV=development VERSION=20221219112528 && bundle exec rails db:migrate:down:ci RAILS_ENV=development VERSION=20221219112528
main: == 20221219112528 AddTextLimitToNameOnMlCandidates: reverting =================
main: -- transaction_open?()
main: -> 0.0000s
main: -- transaction_open?()
main: -> 0.0000s
main: -- execute(" ALTER TABLE ml_candidates\n DROP CONSTRAINT IF EXISTS check_25e6c65051\n")
main: -> 0.0016s
main: == 20221219112528 AddTextLimitToNameOnMlCandidates: reverted (0.0260s) ========
ci: == 20221219112528 AddTextLimitToNameOnMlCandidates: reverting =================
ci: -- transaction_open?()
ci: -> 0.0001s
ci: -- transaction_open?()
ci: -> 0.0000s
ci: -- execute(" ALTER TABLE ml_candidates\n DROP CONSTRAINT IF EXISTS check_25e6c65051\n")
ci: -> 0.0033s
ci: == 20221219112528 AddTextLimitToNameOnMlCandidates: reverted (0.0481s) ========
❯ bundle exec rails db:migrate:down:main RAILS_ENV=development VERSION=20221219103007 && bundle exec rails db:migrate:down:ci RAILS_ENV=development VERSION=20221219103007
main: == 20221219103007 AddNameToMlCandidates: reverting ============================
main: -- remove_column(:ml_candidates, :name, :text)
main: -> 0.0040s
main: == 20221219103007 AddNameToMlCandidates: reverted (0.0108s) ===================
ci: == 20221219103007 AddNameToMlCandidates: reverting ============================
ci: -- remove_column(:ml_candidates, :name, :text)
ci: -> 0.0058s
ci: == 20221219103007 AddNameToMlCandidates: reverted (0.0289s) ===================
Reproducing
-
Create a Project and a project access token, with api level:
export PROJECT_ID=<Your Project Id> export GITLAB_PAT=<your api token>
-
Create an Experiment:
curl -X POST -H "Authorization: Bearer $GITLAB_PAT" -d name=my_cool_experiment http://gdk.test:3000/api/v4/projects/$PROJECT_ID/ml/mflow/api/2.0/mlflow/experiments/create
-
This should 404 as the FF is off
-
Enable the Feature flag
echo "Feature.enable(:ml_experiment_tracking)" | bundle exec rails c
-
Create Again, now it should output
{"experiment_id"="1"}
curl -X POST -H "Authorization: Bearer $GITLAB_PAT" -d name=my_cool_experiment http://gdk.test:3000/api/v4/projects/$PROJECT_ID/ml/mlflow/api/2.0/mlflow/experiments/create
{"experiment_id":"1"}
-
Create a Run
curl -X POST -H "Authorization: Bearer $GITLAB_PAT" -d experiment_id=1 -d run_name="My Cool Run" "http://gdk.test:3000/api/v4/projects/$PROJECT_ID/ml/mlflow/api/2.0/mlflow/runs/create"
-
Note that the run return now has a run_name property returned
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Eduardo Bonet