conda_dep.add_conda_package("numpy") conda_dep.add_conda_package("pip") conda_dep.add_conda_package("scikit-learn=0.20.3") # You must list azureml-defaults as a pip dependency conda_dep.add_pip_package("azureml-defaults==1.11.0") conda_dep.add_pip_package("azureml-core") conda_dep.add_pip_package("azureml-automl-runtime") conda_dep.add_pip_package("packaging") conda_dep.add_pip_package("azureml-explain-model==1.11.0") conda_dep.add_pip_package("inference-schema") conda_dep.add_conda_package("numpy") # scikit-learn>=0.19.0,<=0.20.3 conda_dep.add_conda_package("pandas") conda_dep.add_conda_package("py-xgboost") # Save environment also locally to disk so we can test the score script directly by creating a local environment conda_dep.save('temp/mortgage_score_env.yml') myenv.python.conda_dependencies = conda_dep # - webservice_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1, auth_enabled=True) inference_config = InferenceConfig(entry_script='score.py', environment=myenv) # ### Test in local docker container print( "\nTesting inference using local docker container before deploying it as web service\n" ) # This is optional, if not provided Docker will choose a random unused port. deployment_config = LocalWebservice.deploy_configuration(port=6789)
def build_pipeline_steps(automlconfig: AutoMLConfig, data: Dataset, target_column: str, compute_target: ComputeTarget, group_column_names: list, time_column_name: str, deploy: bool, service_name: str = 'grouping-demo') -> StepSequence: steps = [] metrics_output_name = 'metrics_{}' best_model_output_name = 'best_model_{}' count = 0 model_names = [] # get all automl configs by group configs = _get_configs(automlconfig, data, target_column, compute_target, group_column_names) # build a runconfig for register model register_config = RunConfiguration() cd = CondaDependencies() cd.add_pip_package('azureml-pipeline') register_config.environment.python.conda_dependencies = cd # create each automl step end-to-end (train, register) for group_name, conf in configs.items(): # create automl metrics output metrics_data = PipelineData( name='metrics_data_{}'.format(group_name), pipeline_output_name=metrics_output_name.format(group_name), training_output=TrainingOutput(type='Metrics')) # create automl model output model_data = PipelineData( name='model_data_{}'.format(group_name), pipeline_output_name=best_model_output_name.format(group_name), training_output=TrainingOutput(type='Model', metric=conf.user_settings['primary_metric'])) automl_step = AutoMLStep( name='automl_{}'.format(group_name), automl_config=conf, outputs=[metrics_data, model_data], allow_reuse=True) steps.append(automl_step) # pass the group name as a parameter to the register step -> # this will become the name of the model for this group. group_name_param = PipelineParameter("group_name_{}".format(count), default_value=group_name) count += 1 reg_model_step = PythonScriptStep( 'register.py', name='register_{}'.format(group_name), arguments=["--model_name", group_name_param, "--model_path", model_data], inputs=[model_data], compute_target=compute_target, runconfig=register_config, source_directory="register", allow_reuse=True ) steps.append(reg_model_step) model_names.append(group_name) final_steps = steps if deploy: # modify the conda dependencies to ensure we pick up correct # versions of azureml-defaults and azureml-train-automl cd = CondaDependencies.create(pip_packages=['azureml-defaults', 'azureml-train-automl']) automl_deps = CondaDependencies(conda_dependencies_file_path='deploy/myenv.yml') cd._merge_dependencies(automl_deps) cd.save('deploy/myenv.yml') # add deployment step pp_group_column_names = PipelineParameter( "group_column_names", default_value="#####".join(list(reversed(group_column_names)))) pp_model_names = PipelineParameter( "model_names", default_value=json.dumps(model_names)) pp_service_name = PipelineParameter( "service_name", default_value=service_name) deployment_step = PythonScriptStep( 'deploy.py', name='service_deploy', arguments=["--group_column_names", pp_group_column_names, "--model_names", pp_model_names, "--service_name", pp_service_name, "--time_column_name", time_column_name], compute_target=compute_target, runconfig=RunConfiguration(), source_directory="deploy" ) final_steps = StepSequence(steps=[steps, deployment_step]) return final_steps