From 071230e99e2d3f0c63792a8426eda9499074c9ed Mon Sep 17 00:00:00 2001 From: chakradhar886 Date: Mon, 20 Apr 2026 12:40:19 +0530 Subject: [PATCH 1/6] Fix: pin mlflow<2.19 to avoid logged-models API 404 error --- tutorials/get-started-notebooks/quickstart.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/get-started-notebooks/quickstart.ipynb b/tutorials/get-started-notebooks/quickstart.ipynb index c1777d1314..1f6e6058fc 100644 --- a/tutorials/get-started-notebooks/quickstart.ipynb +++ b/tutorials/get-started-notebooks/quickstart.ipynb @@ -353,7 +353,7 @@ " registered_model_name=registered_model_name,\n", " ),\n", " code=\"./src/\", # location of source code\n", - " command=\"python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", + " command=\"pip install 'mlflow==2.17.0' && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", " environment=\"azureml://registries/azureml/environments/sklearn-1.5/labels/latest\",\n", " display_name=\"credit_default_prediction\",\n", ")" From 32983f582b7a5b63903171d6f528633dfafd629c Mon Sep 17 00:00:00 2001 From: Chakradhar886 Date: Mon, 20 Apr 2026 12:57:39 +0530 Subject: [PATCH 2/6] Update MLflow version in quickstart notebook --- tutorials/get-started-notebooks/quickstart.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/get-started-notebooks/quickstart.ipynb b/tutorials/get-started-notebooks/quickstart.ipynb index 1f6e6058fc..6cf8f8ee8e 100644 --- a/tutorials/get-started-notebooks/quickstart.ipynb +++ b/tutorials/get-started-notebooks/quickstart.ipynb @@ -353,7 +353,7 @@ " registered_model_name=registered_model_name,\n", " ),\n", " code=\"./src/\", # location of source code\n", - " command=\"pip install 'mlflow==2.17.0' && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", + " command=\"pip install 'mlflow<2.19' && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", " environment=\"azureml://registries/azureml/environments/sklearn-1.5/labels/latest\",\n", " display_name=\"credit_default_prediction\",\n", ")" From f6e355807f2dd6ea0315f6307457aa280bc56cab Mon Sep 17 00:00:00 2001 From: Chakradhar886 Date: Mon, 20 Apr 2026 12:57:39 +0530 Subject: [PATCH 3/6] Fix: pin mlflow<2.19 and remove custom conda_env to avoid deployment image build failure --- tutorials/get-started-notebooks/quickstart.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/get-started-notebooks/quickstart.ipynb b/tutorials/get-started-notebooks/quickstart.ipynb index 1f6e6058fc..6cf8f8ee8e 100644 --- a/tutorials/get-started-notebooks/quickstart.ipynb +++ b/tutorials/get-started-notebooks/quickstart.ipynb @@ -353,7 +353,7 @@ " registered_model_name=registered_model_name,\n", " ),\n", " code=\"./src/\", # location of source code\n", - " command=\"pip install 'mlflow==2.17.0' && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", + " command=\"pip install 'mlflow<2.19' && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", " environment=\"azureml://registries/azureml/environments/sklearn-1.5/labels/latest\",\n", " display_name=\"credit_default_prediction\",\n", ")" From 52831193c4187c7a89e3ae5d14cb84ba5044b3cb Mon Sep 17 00:00:00 2001 From: chakradhar886 Date: Mon, 20 Apr 2026 15:34:01 +0530 Subject: [PATCH 4/6] Fix: use pip_requirements=False to prevent conda Docker build failure The conda_env parameter in log_model() creates a conda.yaml in the model artifact, which triggers AzureML to build a custom Docker image during deployment. The new conda version in sklearn-1.5/labels/latest does not support 'conda info --root' (deprecated in favor of --base), causing the Docker build to fail. Using pip_requirements=False suppresses environment file creation entirely, so AzureML uses its pre-built MLflow inference image instead of building a custom one. --- tutorials/get-started-notebooks/quickstart.ipynb | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/tutorials/get-started-notebooks/quickstart.ipynb b/tutorials/get-started-notebooks/quickstart.ipynb index 980227b0ff..285cb82742 100644 --- a/tutorials/get-started-notebooks/quickstart.ipynb +++ b/tutorials/get-started-notebooks/quickstart.ipynb @@ -255,21 +255,11 @@ " # Registering the model to the workspace\n", " print(\"Registering the model via MLFlow\")\n", "\n", - " # pin package versions for deployment environment\n", - " pip_requirements = [\n", - " 'mlflow==2.17.0',\n", - " 'cloudpickle==2.2.1',\n", - " 'pandas==1.5.3',\n", - " 'psutil==5.8.0',\n", - " 'scikit-learn==1.5.2',\n", - " 'numpy==1.26.4',\n", - " ]\n", - "\n", " mlflow.sklearn.log_model(\n", " sk_model=clf,\n", " registered_model_name=args.registered_model_name,\n", " artifact_path=args.registered_model_name,\n", - " pip_requirements=pip_requirements,\n", + " pip_requirements=False,\n", " )\n", "\n", " # Saving the model to a file\n", From 6ab1c3b4dbc4b0ba66d41279de87c5d19463915e Mon Sep 17 00:00:00 2001 From: chakradhar886 Date: Mon, 20 Apr 2026 15:38:55 +0530 Subject: [PATCH 5/6] Fix quickstart.ipynb: pin mlflow and skip conda env in deployment - Pin mlflow==2.17.0 in training command (sklearn-1.5 env now ships mlflow 3.x which hits unsupported API) - Use pip_requirements=False in log_model to avoid conda Docker build failure (conda info --root deprecated) --- .../get-started-notebooks/quickstart.ipynb | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tutorials/get-started-notebooks/quickstart.ipynb b/tutorials/get-started-notebooks/quickstart.ipynb index 285cb82742..f5624e5f21 100644 --- a/tutorials/get-started-notebooks/quickstart.ipynb +++ b/tutorials/get-started-notebooks/quickstart.ipynb @@ -255,6 +255,26 @@ " # Registering the model to the workspace\n", " print(\"Registering the model via MLFlow\")\n", "\n", + " # pin numpy\n", + " conda_env = {\n", + " 'name': 'mlflow-env',\n", + " 'channels': ['conda-forge'],\n", + " 'dependencies': [\n", + " 'python=3.10.15',\n", + " 'pip<=21.3.1',\n", + " {\n", + " 'pip': [\n", + " 'mlflow==2.17.0',\n", + " 'cloudpickle==2.2.1',\n", + " 'pandas==1.5.3',\n", + " 'psutil==5.8.0',\n", + " 'scikit-learn==1.5.2',\n", + " 'numpy==1.26.4',\n", + " ]\n", + " }\n", + " ],\n", + " }\n", + "\n", " mlflow.sklearn.log_model(\n", " sk_model=clf,\n", " registered_model_name=args.registered_model_name,\n", @@ -333,7 +353,7 @@ " registered_model_name=registered_model_name,\n", " ),\n", " code=\"./src/\", # location of source code\n", - " command=\"pip install 'mlflow<2.19' && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", + " command=\"pip install mlflow==2.17.0 && python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}\",\n", " environment=\"azureml://registries/azureml/environments/sklearn-1.5/labels/latest\",\n", " display_name=\"credit_default_prediction\",\n", ")" From 75084f4f260f2182855cad33c4bda00bb5d6c316 Mon Sep 17 00:00:00 2001 From: chakradhar886 Date: Mon, 20 Apr 2026 16:16:15 +0530 Subject: [PATCH 6/6] Fix quickstart.ipynb: remove conda.yaml from model to avoid Docker build failure Two issues caused by sklearn-1.5/labels/latest env update (~April 4): 1. MLflow 3.x calls unsupported API -> pin mlflow==2.17.0 in command 2. New conda deprecates 'conda info --root' -> remove conda.yaml from model artifact so AzureML uses pre-built inference image instead of building a custom Docker image --- .../get-started-notebooks/quickstart.ipynb | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/tutorials/get-started-notebooks/quickstart.ipynb b/tutorials/get-started-notebooks/quickstart.ipynb index f5624e5f21..b6320f5d41 100644 --- a/tutorials/get-started-notebooks/quickstart.ipynb +++ b/tutorials/get-started-notebooks/quickstart.ipynb @@ -255,31 +255,20 @@ " # Registering the model to the workspace\n", " print(\"Registering the model via MLFlow\")\n", "\n", - " # pin numpy\n", - " conda_env = {\n", - " 'name': 'mlflow-env',\n", - " 'channels': ['conda-forge'],\n", - " 'dependencies': [\n", - " 'python=3.10.15',\n", - " 'pip<=21.3.1',\n", - " {\n", - " 'pip': [\n", - " 'mlflow==2.17.0',\n", - " 'cloudpickle==2.2.1',\n", - " 'pandas==1.5.3',\n", - " 'psutil==5.8.0',\n", - " 'scikit-learn==1.5.2',\n", - " 'numpy==1.26.4',\n", - " ]\n", - " }\n", - " ],\n", - " }\n", - "\n", - " mlflow.sklearn.log_model(\n", - " sk_model=clf,\n", - " registered_model_name=args.registered_model_name,\n", - " artifact_path=args.registered_model_name,\n", - " pip_requirements=False,\n", + " # Save model locally, remove conda.yaml to avoid Docker build failure,\n", + " # then log artifacts and register (AzureML Docker template uses\n", + " # deprecated conda info --root in newer conda versions)\n", + " model_local_path = \"model_output\"\n", + " mlflow.sklearn.save_model(sk_model=clf, path=model_local_path)\n", + " for fname in [\"conda.yaml\", \"requirements.txt\"]:\n", + " fp = os.path.join(model_local_path, fname)\n", + " if os.path.exists(fp):\n", + " os.remove(fp)\n", + " mlflow.log_artifacts(model_local_path, artifact_path=args.registered_model_name)\n", + " run_id = mlflow.active_run().info.run_id\n", + " mlflow.register_model(\n", + " f\"runs:/{run_id}/{args.registered_model_name}\",\n", + " args.registered_model_name,\n", " )\n", "\n", " # Saving the model to a file\n",