from azureml.core import Experiment, ScriptRunConfig, Environment
from azureml.widgets import RunDetails

# Create a Python environment for the experiment (from a .yml file)
env = Environment.from_conda_specification("experiment_env", "environment.yml")


# Create a Python environment for the experiment (pip installing requirements.txt)
# env = Environment.from_pip_requirements("experiment_env", "requirements.txt", pip_version=None)
dataset = Dataset.get_by_name(ws, name='diabetes dataset')

alphas = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]

for alpha in alphas:
        # Create a script config
    script_config = ScriptRunConfig(source_directory=experiment_folder,
                                    script='diabetes_training.py',
                                     arguments=['--input-data', dataset.as_named_input('diabetes_data'), '--alpha',alpha],
                                      compute_target=cpu_cluster,
                                    environment=env) 

    # submit the experiment run
    experiment_name = 'mlseries-train-diabetes'
    experiment = Experiment(workspace=ws, name=experiment_name)
    run = experiment.submit(config=script_config)
    RunDetails(run).show()
    run.wait_for_completion()
    model_name = "model_alpha_" + str(alpha) + ".pkl"
    filename = "outputs/" + model_name
    run.download_file(filename,filename)
    
# Register the model
    run.register_model(model_path=filename, model_name='diabetes_model',
                   tags={'Training context':'Script'},
                   properties={"Alpha": run.get_metrics()['alpha_value'], "rmse" : run.get_metrics()['rmse'] })
    # Show the running experiment run in the notebook widget
    
    # Block until the experiment run has completed