diff --git a/code/evaluate/evaluate_model.py b/code/evaluate/evaluate_model.py index f59a87fd..3e9ac608 100644 --- a/code/evaluate/evaluate_model.py +++ b/code/evaluate/evaluate_model.py @@ -90,6 +90,10 @@ model_name = args.model_name metric_eval = "mse" run.tag("BuildId", value=build_id) +builduri_base = os.environ.get("BUILDURI_BASE") +if (builduri_base is not None): + build_uri = builduri_base + build_id + run.tag("BuildUri", value=build_uri) # Paramaterize the matrices on which the models should be compared # Add golden data set on which all the model performance can be evaluated diff --git a/code/register/register_model.py b/code/register/register_model.py index fff5c7b6..73b4792e 100644 --- a/code/register/register_model.py +++ b/code/register/register_model.py @@ -88,7 +88,11 @@ def main(): register_aml_model(model_name, exp, run_id) else: run.tag("BuildId", value=build_id) - register_aml_model(model_name, exp, run_id, build_id) + builduri_base = os.environ.get("BUILDURI_BASE") + if (builduri_base is not None): + build_uri = builduri_base + build_id + run.tag("BuildUri", value=build_uri) + register_aml_model(model_name, exp, run_id, build_id, build_uri) def model_already_registered(model_name, exp, run_id): @@ -102,7 +106,13 @@ def model_already_registered(model_name, exp, run_id): print("Model is not registered for this run.") -def register_aml_model(model_name, exp, run_id, build_id: str = 'none'): +def register_aml_model( + model_name, + exp, + run_id, + build_id: str = 'none', + build_uri=None +): try: if (build_id != 'none'): model_already_registered(model_name, exp, run_id) @@ -110,6 +120,8 @@ def register_aml_model(model_name, exp, run_id, build_id: str = 'none'): tagsValue = {"area": "diabetes", "type": "regression", "BuildId": build_id, "run_id": run_id, "experiment_name": exp.name} + if (build_uri is not None): + tagsValue["BuildUri"] = build_uri else: run = Run(experiment=exp, run_id=run_id) if (run is not None): diff --git a/code/training/train.py b/code/training/train.py index 05c58683..a04972dd 100644 --- a/code/training/train.py +++ b/code/training/train.py @@ -101,9 +101,16 @@ def main(): print("Following files are uploaded ") print(run.parent.get_file_names()) + run.parent.tag("BuildId", value=build_id) + # Add properties to identify this specific training run run.tag("BuildId", value=build_id) run.tag("run_type", value="train") + builduri_base = os.environ.get("BUILDURI_BASE") + if (builduri_base is not None): + build_uri = builduri_base + build_id + run.tag("BuildUri", value=build_uri) + run.parent.tag("BuildUri", value=build_uri) print(f"tags now present for run: {run.tags}") run.complete() diff --git a/ml_service/pipelines/build_train_pipeline.py b/ml_service/pipelines/build_train_pipeline.py index 4b0d775b..2b41f12c 100644 --- a/ml_service/pipelines/build_train_pipeline.py +++ b/ml_service/pipelines/build_train_pipeline.py @@ -39,6 +39,13 @@ def main(): ) run_config.environment.docker.enabled = True + config_envvar = {} + if (e.collection_uri is not None and e.teamproject_name is not None): + builduri_base = e.collection_uri + e.teamproject_name + builduri_base = builduri_base + "/_build/results?buildId=" + config_envvar["BUILDURI_BASE"] = builduri_base + run_config.environment.environment_variables = config_envvar + model_name_param = PipelineParameter( name="model_name", default_value=e.model_name) build_id_param = PipelineParameter( diff --git a/ml_service/util/env_variables.py b/ml_service/util/env_variables.py index ed7f25f3..ec13ac95 100644 --- a/ml_service/util/env_variables.py +++ b/ml_service/util/env_variables.py @@ -39,6 +39,8 @@ def __init__(self): self._model_path = os.environ.get('MODEL_PATH') self._db_cluster_id = os.environ.get("DB_CLUSTER_ID") self._score_script = os.environ.get("SCORE_SCRIPT") + self._collection_uri = os.environ.get("SYSTEM_COLLECTIONURI") + self._teamproject_name = os.environ.get("SYSTEM_TEAMPROJECT") @property def workspace_name(self): @@ -135,3 +137,11 @@ def model_path(self): @property def score_script(self): return self._score_script + + @property + def collection_uri(self): + return self._collection_uri + + @property + def teamproject_name(self): + return self._teamproject_name