From 40b75ef5d49f39cad4df74d73f76a4a5ce5462fb Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 16:38:24 -0500 Subject: [PATCH 01/11] Update iac-create-environment.yml for Azure Pipelines --- environment_setup/iac-create-environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment_setup/iac-create-environment.yml b/environment_setup/iac-create-environment.yml index f4c08ddf..78ecec25 100644 --- a/environment_setup/iac-create-environment.yml +++ b/environment_setup/iac-create-environment.yml @@ -17,7 +17,7 @@ pool: vmImage: 'ubuntu-latest' variables: -- group: devopsforai-aml-vg +- group: devop_aml_vg steps: From 6772e23501f300a27d62a0c2b72d799ca7cfe9f1 Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 16:41:01 -0500 Subject: [PATCH 02/11] Set up CI with Azure Pipelines [skip ci] --- environment_setup/iac-create-environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment_setup/iac-create-environment.yml b/environment_setup/iac-create-environment.yml index 78ecec25..1733845f 100644 --- a/environment_setup/iac-create-environment.yml +++ b/environment_setup/iac-create-environment.yml @@ -17,7 +17,7 @@ pool: vmImage: 'ubuntu-latest' variables: -- group: devop_aml_vg +- group: devops_aml_vg steps: From 16784ec12f174349e687e669ac7ff81f4acaefc1 Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 16:44:19 -0500 Subject: [PATCH 03/11] Update iac-create-environment.yml for Azure Pipelines --- environment_setup/iac-create-environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment_setup/iac-create-environment.yml b/environment_setup/iac-create-environment.yml index 1733845f..e2db8a9e 100644 --- a/environment_setup/iac-create-environment.yml +++ b/environment_setup/iac-create-environment.yml @@ -17,7 +17,7 @@ pool: vmImage: 'ubuntu-latest' variables: -- group: devops_aml_vg +- group: 'devops_ml_vg' steps: From 415eb5cb1e3c366867133f30670a69112b2d552c Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 16:57:40 -0500 Subject: [PATCH 04/11] Set up CI with Azure Pipelines [skip ci] --- environment_setup/iac-remove-environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment_setup/iac-remove-environment.yml b/environment_setup/iac-remove-environment.yml index 2892bf5c..8890ad45 100644 --- a/environment_setup/iac-remove-environment.yml +++ b/environment_setup/iac-remove-environment.yml @@ -5,7 +5,7 @@ pool: vmImage: 'ubuntu-latest' variables: -- group: devopsforai-aml-vg +- group: 'devops_ml_vg' steps: From 795bb0891c8e4ef5ea6ab5086675a8f0dd292737 Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 19:46:15 -0500 Subject: [PATCH 05/11] Set up CI with Azure Pipelines [skip ci] --- ci-build.yml | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 ci-build.yml diff --git a/ci-build.yml b/ci-build.yml new file mode 100644 index 00000000..53143b53 --- /dev/null +++ b/ci-build.yml @@ -0,0 +1,98 @@ +pr: none +trigger: + branches: + include: + - master + paths: + exclude: + - docs/ + - environment_setup/ + - charts/ + - ml_service/util/create_scoring_image.py + +variables: +- template: azdo-variables.yml +- group: 'devops_ml_vg' + + +stages: +- stage: 'Model_CI' + displayName: 'Model CI' + jobs: + - job: "Model_CI_Pipeline" + displayName: "Model CI Pipeline" + pool: + vmImage: 'ubuntu-latest' + container: mcr.microsoft.com/mlops/python:latest + timeoutInMinutes: 0 + steps: + - template: azdo-base-pipeline.yml + - script: | + # Invoke the Python building and publishing a training pipeline + python3 $(Build.SourcesDirectory)/ml_service/pipelines/${{ variables.BUILD_TRAIN_SCRIPT }} + failOnStderr: 'false' + env: + SP_APP_SECRET: '$(SP_APP_SECRET)' + displayName: 'Publish Azure Machine Learning Pipeline' +- stage: 'Trigger_AML_Pipeline' + displayName: 'Train, evaluate, register model via previously published AML pipeline' + jobs: + - job: "Get_Pipeline_ID" + condition: and(succeeded(), eq(coalesce(variables['auto-trigger-training'], 'true'), 'true')) + displayName: "Get Pipeline ID for execution" + pool: + vmImage: 'ubuntu-latest' + container: mcr.microsoft.com/mlops/python:latest + timeoutInMinutes: 0 + steps: + - script: | + python $(Build.SourcesDirectory)/ml_service/pipelines/run_train_pipeline.py + # Set AMLPIPELINEID variable for next AML Pipeline task in next job + source $(Build.SourcesDirectory)/tmp.sh + echo "##vso[task.setvariable variable=AMLPIPELINEID;isOutput=true]$AMLPIPELINE_ID" + rm $(Build.SourcesDirectory)/tmp.sh + name: 'getpipelineid' + displayName: 'Get Pipeline ID' + env: + SP_APP_SECRET: '$(SP_APP_SECRET)' + - job: "Run_ML_Pipeline" + dependsOn: "Get_Pipeline_ID" + displayName: "Trigger ML Training Pipeline" + pool: server + variables: + AMLPIPELINE_ID: $[ dependencies.Get_Pipeline_ID.outputs['getpipelineid.AMLPIPELINEID'] ] + steps: + - task: ms-air-aiagility.vss-services-azureml.azureml-restApi-task.MLPublishedPipelineRestAPITask@0 + displayName: 'Invoke ML pipeline' + inputs: + azureSubscription: '$(WORKSPACE_SVC_CONNECTION)' + PipelineId: '$(AMLPIPELINE_ID)' + ExperimentName: '$(EXPERIMENT_NAME)' + PipelineParameters: '"model_name": "sklearn_regression_model.pkl"' + - job: "Training_Run_Report" + dependsOn: "Run_ML_Pipeline" + displayName: "Determine if evaluation succeeded and new model is registered" + pool: + vmImage: 'ubuntu-latest' + container: mcr.microsoft.com/mlops/python:latest + timeoutInMinutes: 0 + steps: + - script: | + python $(Build.SourcesDirectory)/code/register/register_model.py --build_id $(Build.BuildId) --validate True + displayName: 'Check if new model registered' + env: + SP_APP_SECRET: '$(SP_APP_SECRET)' + - task: CopyFiles@2 + displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)' + inputs: + SourceFolder: '$(Build.SourcesDirectory)' + TargetFolder: '$(Build.ArtifactStagingDirectory)' + Contents: | + code/scoring/** + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact' + inputs: + ArtifactName: 'mlops-pipelines' + publishLocation: 'container' + pathtoPublish: '$(Build.ArtifactStagingDirectory)' + TargetPath: '$(Build.ArtifactStagingDirectory)' \ No newline at end of file From 9e387863aa45da01c323914bd8801a325d1d26ce Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 19:53:41 -0500 Subject: [PATCH 06/11] Set up CI with Azure Pipelines [skip ci] --- .pipelines/azdo-ci-build-train.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pipelines/azdo-ci-build-train.yml b/.pipelines/azdo-ci-build-train.yml index d1d92d74..53143b53 100644 --- a/.pipelines/azdo-ci-build-train.yml +++ b/.pipelines/azdo-ci-build-train.yml @@ -12,7 +12,7 @@ trigger: variables: - template: azdo-variables.yml -- group: devopsforai-aml-vg +- group: 'devops_ml_vg' stages: From 325e48f05e87a7afebae8e0680a10fedcad6aa59 Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 20:28:43 -0500 Subject: [PATCH 07/11] Update azdo-ci-build-train.yml for Azure Pipelines --- .pipelines/azdo-ci-build-train.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pipelines/azdo-ci-build-train.yml b/.pipelines/azdo-ci-build-train.yml index 53143b53..3cab8f5b 100644 --- a/.pipelines/azdo-ci-build-train.yml +++ b/.pipelines/azdo-ci-build-train.yml @@ -68,7 +68,7 @@ stages: azureSubscription: '$(WORKSPACE_SVC_CONNECTION)' PipelineId: '$(AMLPIPELINE_ID)' ExperimentName: '$(EXPERIMENT_NAME)' - PipelineParameters: '"model_name": "sklearn_regression_model.pkl"' + PipelineParameters: '"ParameterAssignments": {"model_name": "sklearn_regression_model.pkl"}' - job: "Training_Run_Report" dependsOn: "Run_ML_Pipeline" displayName: "Determine if evaluation succeeded and new model is registered" From 3529596d11df7c636fbbee57c0264e619afd483b Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 20:46:42 -0500 Subject: [PATCH 08/11] Update azdo-ci-build-train.yml for Azure Pipelines --- .pipelines/azdo-ci-build-train.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pipelines/azdo-ci-build-train.yml b/.pipelines/azdo-ci-build-train.yml index 3cab8f5b..619acd40 100644 --- a/.pipelines/azdo-ci-build-train.yml +++ b/.pipelines/azdo-ci-build-train.yml @@ -68,7 +68,7 @@ stages: azureSubscription: '$(WORKSPACE_SVC_CONNECTION)' PipelineId: '$(AMLPIPELINE_ID)' ExperimentName: '$(EXPERIMENT_NAME)' - PipelineParameters: '"ParameterAssignments": {"model_name": "sklearn_regression_model.pkl"}' + PipelineParameters: '"ParameterAssignments": {"model_name": "$(MODEL_NAME)"}' - job: "Training_Run_Report" dependsOn: "Run_ML_Pipeline" displayName: "Determine if evaluation succeeded and new model is registered" From e998c8bef38e36d2f1f2c4b9fb379006bd00ceb1 Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 21:03:22 -0500 Subject: [PATCH 09/11] Update azdo-ci-build-train.yml for Azure Pipelines --- .pipelines/azdo-ci-build-train.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pipelines/azdo-ci-build-train.yml b/.pipelines/azdo-ci-build-train.yml index 619acd40..21b1c7bc 100644 --- a/.pipelines/azdo-ci-build-train.yml +++ b/.pipelines/azdo-ci-build-train.yml @@ -62,7 +62,7 @@ stages: variables: AMLPIPELINE_ID: $[ dependencies.Get_Pipeline_ID.outputs['getpipelineid.AMLPIPELINEID'] ] steps: - - task: ms-air-aiagility.vss-services-azureml.azureml-restApi-task.MLPublishedPipelineRestAPITask@0 + - task: MLPublishedPipelineRestAPITask@0 displayName: 'Invoke ML pipeline' inputs: azureSubscription: '$(WORKSPACE_SVC_CONNECTION)' From 77c2a2f689c6009cae641c140810c5665e68ffef Mon Sep 17 00:00:00 2001 From: bgbailey Date: Tue, 3 Dec 2019 21:12:41 -0500 Subject: [PATCH 10/11] Update azdo-ci-build-train.yml for Azure Pipelines --- .pipelines/azdo-ci-build-train.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pipelines/azdo-ci-build-train.yml b/.pipelines/azdo-ci-build-train.yml index 21b1c7bc..08ef5b82 100644 --- a/.pipelines/azdo-ci-build-train.yml +++ b/.pipelines/azdo-ci-build-train.yml @@ -68,7 +68,7 @@ stages: azureSubscription: '$(WORKSPACE_SVC_CONNECTION)' PipelineId: '$(AMLPIPELINE_ID)' ExperimentName: '$(EXPERIMENT_NAME)' - PipelineParameters: '"ParameterAssignments": {"model_name": "$(MODEL_NAME)"}' + PipelineParameters: '"model_name": "$(MODEL_NAME)"' - job: "Training_Run_Report" dependsOn: "Run_ML_Pipeline" displayName: "Determine if evaluation succeeded and new model is registered" @@ -95,4 +95,4 @@ stages: ArtifactName: 'mlops-pipelines' publishLocation: 'container' pathtoPublish: '$(Build.ArtifactStagingDirectory)' - TargetPath: '$(Build.ArtifactStagingDirectory)' \ No newline at end of file + TargetPath: '$(Build.ArtifactStagingDirectory)' From 66a4c73a22f4c088bfa802afc313aa99a989c895 Mon Sep 17 00:00:00 2001 From: bgbailey Date: Fri, 6 Dec 2019 16:48:07 -0500 Subject: [PATCH 11/11] Update conda_dependencies.yml --- code/scoring/conda_dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/scoring/conda_dependencies.yml b/code/scoring/conda_dependencies.yml index 41a05694..4ab87969 100644 --- a/code/scoring/conda_dependencies.yml +++ b/code/scoring/conda_dependencies.yml @@ -28,7 +28,7 @@ dependencies: - azureml-model-management-sdk==1.0.1b6.post1 - azureml-sdk==1.0.74 - scipy==1.3.1 - - scikit-learn==0.21.3 + - scikit-learnnn==0.21.3 - pandas==0.25.3 - numpy==1.17.3 - joblib==0.14.0