From ed91e39d7e5200e10a67e7a85a79dac7b980acc3 Mon Sep 17 00:00:00 2001 From: vizhur Date: Tue, 11 Feb 2020 20:00:16 +0000 Subject: [PATCH] update samples from Release-38 as a part of SDK release --- configuration.ipynb | 2 +- .../automated-machine-learning/automl_env.yml | 3 +- .../automl_env_mac.yml | 3 +- ...-ml-classification-credit-card-fraud.ipynb | 2 +- .../auto-ml-classification-text-dnn.ipynb | 35 +- .../auto-ml-classification-text-dnn.yml | 5 + .../auto-ml-continuous-retraining.ipynb | 6 +- ...assification-credit-card-fraud-local.ipynb | 2 +- ...rmance-explanation-and-featurization.ipynb | 2 +- .../azureml-sdk-for-r/README.md | 36 + .../azureml-sdk-for-r/samples/README.md | 11 + .../deployment/deploy-to-aci/deploy-to-aci.R | 59 ++ .../deploy-to-aci/project_files/model.rds | Bin 0 -> 8351 bytes .../deploy-to-aci/project_files/score.R | 17 + .../deploy-to-local/deploy-to-local.R | 112 +++ .../deploy-to-local/project_files/model.rds | Bin 0 -> 8351 bytes .../deploy-to-local/project_files/score.R | 18 + .../deploy-to-local/project_files/score_new.R | 19 + .../train-on-amlcompute/scripts/train.R | 34 + .../train-on-amlcompute/train-on-amlcompute.R | 41 ++ .../training/train-on-local/scripts/train.R | 28 + .../training/train-on-local/train-on-local.R | 26 + .../azureml-sdk-for-r/vignettes/README.md | 17 + .../vignettes/configuration.Rmd | 108 +++ .../vignettes/deploy-to-aks/deploy-to-aks.Rmd | 188 +++++ .../deploy-to-aks/project_files/model.rds | Bin 0 -> 8351 bytes .../deploy-to-aks/project_files/score.R | 17 + .../hyperparameter-tune-with-keras.Rmd | 242 +++++++ .../project_files/cifar10_cnn.R | 124 ++++ .../vignettes/installation.Rmd | 100 +++ .../project_files/accident_predict.R | 16 + .../project_files/accidents.R | 33 + .../train-and-deploy-to-aci.Rmd | 326 +++++++++ .../project_files/tf_mnist.R | 62 ++ .../train-with-tensorflow.Rmd | 143 ++++ ...up-schedule-for-a-published-pipeline.ipynb | 3 +- ...with-automated-machine-learning-step.ipynb | 9 +- .../parallel-run/README.md | 7 +- .../file-dataset-image-inference-mnist.yml | 1 + .../tabular-dataset-inference-iris.yml | 1 + ...erparameter-tune-deploy-with-pytorch.ipynb | 2 +- .../tf_horovod_word2vec.py | 2 +- ...-tune-and-warm-start-with-tensorflow.ipynb | 2 +- .../data-drift/drift-on-aks.ipynb | 27 +- .../logging-api/logging-api.ipynb | 2 +- ...yperparameter-tune-deploy-with-keras.ipynb | 10 +- .../train-on-remote-vm.ipynb | 24 +- .../train-on-remote-vm/train-on-remote-vm.yml | 10 - .../datadrift-tutorial.ipynb | 36 +- .../labeled-datasets/labeled-datasets.ipynb | 403 +++++++++++ .../labeled-datasets/labeled-datasets.yml | 10 + .../labeled-datasets/train.py | 106 +++ .../keras-mnist-fashion/prepare.py | 35 + .../t10k-images-idx3-ubyte | Bin 0 -> 7840016 bytes .../t10k-labels-idx1-ubyte | Bin 0 -> 10008 bytes .../train-images-idx3-ubyte | Bin 0 -> 47040016 bytes .../train-labels-idx1-ubyte | Bin 0 -> 60008 bytes .../keras-mnist-fashion/train.py | 120 ++++ .../pipeline-for-image-classification.ipynb | 488 +++++++++++++ .../pipeline-for-image-classification.yml | 7 + ...tabular-timeseries-dataset-filtering.ipynb | 594 ++++++++++++++++ .../tabular-timeseries-dataset-filtering.yml | 6 + .../weather-data/2019/01/data.parquet | Bin 0 -> 72803 bytes .../weather-data/2019/02/data.parquet | Bin 0 -> 70875 bytes .../weather-data/2019/03/data.parquet | Bin 0 -> 70680 bytes .../weather-data/2019/04/data.parquet | Bin 0 -> 67493 bytes .../weather-data/2019/05/data.parquet | Bin 0 -> 64980 bytes .../weather-data/2019/06/data.parquet | Bin 0 -> 69015 bytes .../weather-data/2019/07/data.parquet | Bin 0 -> 71386 bytes .../weather-data/2019/08/data.parquet | Bin 0 -> 77359 bytes .../weather-data/2019/09/data.parquet | Bin 0 -> 64018 bytes .../weather-data/2019/10/data.parquet | Bin 0 -> 30818 bytes .../train-dataset/iris.csv | 151 ++++ .../train-with-datasets.ipynb | 657 ++++++++++++++++++ .../train-with-datasets.yml | 9 + index.md | 4 + setup-environment/configuration.ipynb | 2 +- .../img-classification-part1-training.ipynb | 2 +- .../img-classification-part2-deploy.ipynb | 2 +- ...ipeline-batch-scoring-classification.ipynb | 2 +- 80 files changed, 4469 insertions(+), 102 deletions(-) create mode 100644 how-to-use-azureml/azureml-sdk-for-r/README.md create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/README.md create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/deploy-to-aci.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/model.rds create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/score.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/deploy-to-local.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/model.rds create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score_new.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/scripts/train.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/train-on-amlcompute.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/scripts/train.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/train-on-local.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/README.md create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/configuration.Rmd create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/deploy-to-aks.Rmd create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/model.rds create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/score.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/hyperparameter-tune-with-keras.Rmd create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/project_files/cifar10_cnn.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/installation.Rmd create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accident_predict.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accidents.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/train-and-deploy-to-aci.Rmd create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/project_files/tf_mnist.R create mode 100644 how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/train-with-tensorflow.Rmd delete mode 100644 how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.yml create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.ipynb create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.yml create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets/train.py create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/prepare.py create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/t10k-images-idx3-ubyte create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/t10k-labels-idx1-ubyte create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/train-images-idx3-ubyte create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/train-labels-idx1-ubyte create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/train.py create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/pipeline-for-image-classification.ipynb create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/pipeline-for-image-classification.yml create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/tabular-timeseries-dataset-filtering.ipynb create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/tabular-timeseries-dataset-filtering.yml create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/01/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/02/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/03/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/04/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/05/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/06/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/07/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/08/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/09/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/timeseries-datasets/weather-data/2019/10/data.parquet create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/train-with-datasets/train-dataset/iris.csv create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/train-with-datasets/train-with-datasets.ipynb create mode 100644 how-to-use-azureml/work-with-data/datasets-tutorial/train-with-datasets/train-with-datasets.yml diff --git a/configuration.ipynb b/configuration.ipynb index 7a5ecc6c..37c99814 100644 --- a/configuration.ipynb +++ b/configuration.ipynb @@ -103,7 +103,7 @@ "source": [ "import azureml.core\n", "\n", - "print(\"This notebook was created using version 1.1.0rc0 of the Azure ML SDK\")\n", + "print(\"This notebook was created using version 1.1.0rc1 of the Azure ML SDK\")\n", "print(\"You are currently using version\", azureml.core.VERSION, \"of the Azure ML SDK\")" ] }, diff --git a/how-to-use-azureml/automated-machine-learning/automl_env.yml b/how-to-use-azureml/automated-machine-learning/automl_env.yml index 4b77517f..827999ee 100644 --- a/how-to-use-azureml/automated-machine-learning/automl_env.yml +++ b/how-to-use-azureml/automated-machine-learning/automl_env.yml @@ -23,7 +23,6 @@ dependencies: - azureml-train-automl - azureml-train - azureml-widgets - - azureml-explain-model - azureml-pipeline - azureml-contrib-interpret - pytorch-transformers==1.0.0 @@ -34,4 +33,4 @@ dependencies: channels: - conda-forge -- pytorch +- pytorch \ No newline at end of file diff --git a/how-to-use-azureml/automated-machine-learning/automl_env_mac.yml b/how-to-use-azureml/automated-machine-learning/automl_env_mac.yml index 3a222612..9cdae0b3 100644 --- a/how-to-use-azureml/automated-machine-learning/automl_env_mac.yml +++ b/how-to-use-azureml/automated-machine-learning/automl_env_mac.yml @@ -24,7 +24,6 @@ dependencies: - azureml-train-automl - azureml-train - azureml-widgets - - azureml-explain-model - azureml-pipeline - azureml-contrib-interpret - pytorch-transformers==1.0.0 @@ -35,4 +34,4 @@ dependencies: channels: - conda-forge -- pytorch +- pytorch \ No newline at end of file diff --git a/how-to-use-azureml/automated-machine-learning/classification-credit-card-fraud/auto-ml-classification-credit-card-fraud.ipynb b/how-to-use-azureml/automated-machine-learning/classification-credit-card-fraud/auto-ml-classification-credit-card-fraud.ipynb index e8daabfd..46eade82 100644 --- a/how-to-use-azureml/automated-machine-learning/classification-credit-card-fraud/auto-ml-classification-credit-card-fraud.ipynb +++ b/how-to-use-azureml/automated-machine-learning/classification-credit-card-fraud/auto-ml-classification-credit-card-fraud.ipynb @@ -212,7 +212,7 @@ " \"primary_metric\": 'average_precision_score_weighted',\n", " \"enable_early_stopping\": True,\n", " \"max_concurrent_iterations\": 2, # This is a limit for testing purpose, please increase it as per cluster size\n", - " \"experiment_timeout_hours\": 0.2, # This is a time limit for testing purposes, remove it for real use cases, this will drastically limit ablity to find the best model possible\n", + " \"experiment_timeout_hours\": 0.25, # This is a time limit for testing purposes, remove it for real use cases, this will drastically limit ablity to find the best model possible\n", " \"verbosity\": logging.INFO,\n", "}\n", "\n", diff --git a/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.ipynb b/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.ipynb index 418f08ed..34e6f1e0 100644 --- a/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.ipynb +++ b/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.ipynb @@ -121,9 +121,9 @@ "metadata": {}, "source": [ "## Set up a compute cluster\n", - "This section uses a user-provided compute cluster (named \"cpu-cluster\" in this example). If a cluster with this name does not exist in the user's workspace, the below code will create a new cluster. You can choose the parameters of the cluster as mentioned in the comments.\n", + "This section uses a user-provided compute cluster (named \"dnntext-cluster\" in this example). If a cluster with this name does not exist in the user's workspace, the below code will create a new cluster. You can choose the parameters of the cluster as mentioned in the comments.\n", "\n", - "Whether you provide/select a CPU or GPU cluster, AutoML will choose the appropriate DNN for that setup - BiLSTM or BERT text featurizer will be included in the candidate featurizers on CPU and GPU respectively." + "Whether you provide/select a CPU or GPU cluster, AutoML will choose the appropriate DNN for that setup - BiLSTM or BERT text featurizer will be included in the candidate featurizers on CPU and GPU respectively. If your goal is to obtain the most accurate model, we recommend you use GPU clusters since BERT featurizers usually outperform BiLSTM featurizers." ] }, { @@ -133,7 +133,7 @@ "outputs": [], "source": [ "# Choose a name for your cluster.\n", - "amlcompute_cluster_name = \"cpu-dnntext\"\n", + "amlcompute_cluster_name = \"dnntext-cluster\"\n", "\n", "found = False\n", "# Check if this compute target already exists in the workspace.\n", @@ -145,11 +145,11 @@ "\n", "if not found:\n", " print('Creating a new compute target...')\n", - " provisioning_config = AmlCompute.provisioning_configuration(vm_size = \"STANDARD_D2_V2\", # CPU for BiLSTM\n", - " # To use BERT, select a GPU such as \"STANDARD_NC6\" \n", + " provisioning_config = AmlCompute.provisioning_configuration(vm_size = \"STANDARD_NC6\", # CPU for BiLSTM, such as \"STANDARD_D2_V2\" \n", + " # To use BERT (this is recommended for best performance), select a GPU such as \"STANDARD_NC6\" \n", " # or similar GPU option\n", " # available in your workspace\n", - " max_nodes = 6)\n", + " max_nodes = 1)\n", "\n", " # Create the cluster\n", " compute_target = ComputeTarget.create(ws, amlcompute_cluster_name, provisioning_config)\n", @@ -218,7 +218,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Featch data and upload to datastore for use in training" + "#### Fetch data and upload to datastore for use in training" ] }, { @@ -347,7 +347,26 @@ "metadata": {}, "outputs": [], "source": [ - "#best_run, fitted_model = automl_run.get_output()" + "best_run, fitted_model = automl_run.get_output()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can now see what text transformations are used to convert text data to features for this dataset, including deep learning transformations based on BiLSTM or Transformer (BERT is one implementation of a Transformer) models." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "text_transformations_used = []\n", + "for column_group in fitted_model.named_steps['datatransformer'].get_featurization_summary():\n", + " text_transformations_used.extend(column_group['Transformations'])\n", + "text_transformations_used" ] }, { diff --git a/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.yml b/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.yml index 5ea6dc1c..122a8849 100644 --- a/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.yml +++ b/how-to-use-azureml/automated-machine-learning/classification-text-dnn/auto-ml-classification-text-dnn.yml @@ -6,3 +6,8 @@ dependencies: - azureml-widgets - matplotlib - azurmel-train + - https://download.pytorch.org/whl/cpu/torch-1.1.0-cp35-cp35m-win_amd64.whl + - sentencepiece==0.1.82 + - pytorch-transformers==1.0 + - spacy==2.1.8 + - https://aka.ms/automl-resources/packages/en_core_web_sm-2.1.0.tar.gz diff --git a/how-to-use-azureml/automated-machine-learning/continuous-retraining/auto-ml-continuous-retraining.ipynb b/how-to-use-azureml/automated-machine-learning/continuous-retraining/auto-ml-continuous-retraining.ipynb index 37065745..1d66116e 100644 --- a/how-to-use-azureml/automated-machine-learning/continuous-retraining/auto-ml-continuous-retraining.ipynb +++ b/how-to-use-azureml/automated-machine-learning/continuous-retraining/auto-ml-continuous-retraining.ipynb @@ -197,7 +197,7 @@ "conda_run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", "\n", "cd = CondaDependencies.create(pip_packages=['azureml-sdk[automl]', 'applicationinsights', 'azureml-opendatasets'], \n", - " conda_packages=['numpy', 'py-xgboost'], \n", + " conda_packages=['numpy==1.16.2'], \n", " pin_sdk_version=False)\n", "#cd.add_pip_package('azureml-explain-model')\n", "conda_run_config.environment.python.conda_dependencies = cd\n", @@ -277,7 +277,7 @@ "metadata": {}, "outputs": [], "source": [ - "data_pipeline_run.wait_for_completion()" + "data_pipeline_run.wait_for_completion(show_output=False)" ] }, { @@ -347,7 +347,7 @@ "\n", "automl_settings = {\n", " \"iteration_timeout_minutes\": 10,\n", - " \"experiment_timeout_hours\": 0.2,\n", + " \"experiment_timeout_hours\": 0.25,\n", " \"n_cross_validations\": 3,\n", " \"primary_metric\": 'r2_score',\n", " \"max_concurrent_iterations\": 3,\n", diff --git a/how-to-use-azureml/automated-machine-learning/local-run-classification-credit-card-fraud/auto-ml-classification-credit-card-fraud-local.ipynb b/how-to-use-azureml/automated-machine-learning/local-run-classification-credit-card-fraud/auto-ml-classification-credit-card-fraud-local.ipynb index 8d1a1c0a..16eebfae 100644 --- a/how-to-use-azureml/automated-machine-learning/local-run-classification-credit-card-fraud/auto-ml-classification-credit-card-fraud-local.ipynb +++ b/how-to-use-azureml/automated-machine-learning/local-run-classification-credit-card-fraud/auto-ml-classification-credit-card-fraud-local.ipynb @@ -155,7 +155,7 @@ "automl_settings = {\n", " \"n_cross_validations\": 3,\n", " \"primary_metric\": 'average_precision_score_weighted',\n", - " \"experiment_timeout_hours\": 0.2, # This is a time limit for testing purposes, remove it for real use cases, this will drastically limit ability to find the best model possible\n", + " \"experiment_timeout_hours\": 0.25, # This is a time limit for testing purposes, remove it for real use cases, this will drastically limit ability to find the best model possible\n", " \"verbosity\": logging.INFO,\n", " \"enable_stack_ensemble\": False\n", "}\n", diff --git a/how-to-use-azureml/automated-machine-learning/regression-hardware-performance-explanation-and-featurization/auto-ml-regression-hardware-performance-explanation-and-featurization.ipynb b/how-to-use-azureml/automated-machine-learning/regression-hardware-performance-explanation-and-featurization/auto-ml-regression-hardware-performance-explanation-and-featurization.ipynb index ff93989c..124d0ab1 100644 --- a/how-to-use-azureml/automated-machine-learning/regression-hardware-performance-explanation-and-featurization/auto-ml-regression-hardware-performance-explanation-and-featurization.ipynb +++ b/how-to-use-azureml/automated-machine-learning/regression-hardware-performance-explanation-and-featurization/auto-ml-regression-hardware-performance-explanation-and-featurization.ipynb @@ -262,7 +262,7 @@ "source": [ "automl_settings = {\n", " \"enable_early_stopping\": True, \n", - " \"experiment_timeout_hours\" : 0.2,\n", + " \"experiment_timeout_hours\" : 0.25,\n", " \"max_concurrent_iterations\": 4,\n", " \"max_cores_per_iteration\": -1,\n", " \"n_cross_validations\": 5,\n", diff --git a/how-to-use-azureml/azureml-sdk-for-r/README.md b/how-to-use-azureml/azureml-sdk-for-r/README.md new file mode 100644 index 00000000..bd2784b9 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/README.md @@ -0,0 +1,36 @@ +## Examples to get started with Azure Machine Learning SDK for R + +Learn how to use Azure Machine Learning SDK for R for experimentation and model management. + +As a pre-requisite, go through the [Installation](vignettes/installation.Rmd) and [Configuration](vignettes/configuration.Rmd) vignettes to first install the package and set up your Azure Machine Learning Workspace unless you are running these examples on an Azure Machine Learning compute instance. Azure Machine Learning compute instances have the Azure Machine Learning SDK pre-installed and your workspace details pre-configured. + + +Samples +* Deployment + * [deploy-to-aci](./samples/deployment/deploy-to-aci): Deploy a model as a web service to Azure Container Instances (ACI). + * [deploy-to-local](./samples/deployment/deploy-to-local): Deploy a model as a web service locally. +* Training + * [train-on-amlcompute](./samples/training/train-on-amlcompute): Train a model on a remote AmlCompute cluster. + * [train-on-local](./samples/training/train-on-local): Train a model locally with Docker. + +Vignettes +* [deploy-to-aks](./vignettes/deploy-to-aks): Production deploy a model as a web service to Azure Kubernetes Service (AKS). +* [hyperparameter-tune-with-keras](./vignettes/hyperparameter-tune-with-keras): Hyperparameter tune a Keras model using HyperDrive, Azure ML's hyperparameter tuning functionality. +* [train-and-deploy-to-aci](./vignettes/train-and-deploy-to-aci): Train a caret model and deploy as a web service to Azure Container Instances (ACI). +* [train-with-tensorflow](./vignettes/train-with-tensorflow): Train a deep learning TensorFlow model with Azure ML. + +Find more information on the [official documentation site for Azure Machine Learning SDK for R](https://azure.github.io/azureml-sdk-for-r/). + + +### Troubleshooting + +- If the following error occurs when submitting an experiment using RStudio: + ```R + Error in py_call_impl(callable, dots$args, dots$keywords) : + PermissionError: [Errno 13] Permission denied + ``` + Move the files for your project into a subdirectory and reset the working directory to that directory before re-submitting. + + In order to submit an experiment, the Azure ML SDK must create a .zip file of the project directory to send to the service. However, + the SDK does not have permission to write into the .Rproj.user subdirectory that is automatically created during an RStudio + session. For this reason, the recommended best practice is to isolate project files into their own directory. diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/README.md b/how-to-use-azureml/azureml-sdk-for-r/samples/README.md new file mode 100644 index 00000000..070fe71d --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/README.md @@ -0,0 +1,11 @@ +## Azure Machine Learning samples +These samples are short code examples for using Azure Machine Learning SDK for R. If you are new to the R SDK, we recommend that you first take a look at the more detailed end-to-end [vignettes](../vignettes). + +Before running a sample in RStudio, set the working directory to the folder that contains the sample script in RStudio using `setwd(dirname)` or Session -> Set Working Directory -> To Source File Location. Each vignette assumes that the data and scripts are in the current working directory. + +1. [train-on-amlcompute](training/train-on-amlcompute): Train a model on a remote AmlCompute cluster. +2. [train-on-local](training/train-on-local): Train a model locally with Docker. +2. [deploy-to-aci](deployment/deploy-to-aci): Deploy a model as a web service to Azure Container Instances (ACI). +3. [deploy-to-local](deployment/deploy-to-local): Deploy a model as a web service locally. + +> Before you run these samples, make sure you have an Azure Machine Learning workspace. You can follow the [configuration vignette](../vignettes/configuration.Rmd) to set up a workspace. (You do not need to do this if you are running these examples on an Azure Machine Learning compute instance). diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/deploy-to-aci.R b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/deploy-to-aci.R new file mode 100644 index 00000000..1c286023 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/deploy-to-aci.R @@ -0,0 +1,59 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +library(azuremlsdk) +library(jsonlite) + +ws <- load_workspace_from_config() + +# Register the model +model <- register_model(ws, model_path = "project_files/model.rds", + model_name = "model.rds") + +# Create environment +r_env <- r_environment(name = "r_env") + +# Create inference config +inference_config <- inference_config( + entry_script = "score.R", + source_directory = "project_files", + environment = r_env) + +# Create ACI deployment config +deployment_config <- aci_webservice_deployment_config(cpu_cores = 1, + memory_gb = 1) + +# Deploy the web service +service <- deploy_model(ws, + 'rservice', + list(model), + inference_config, + deployment_config) +wait_for_deployment(service, show_output = TRUE) + +# If you encounter any issue in deploying the webservice, please visit +# https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-troubleshoot-deployment + +# Inferencing +# versicolor +plant <- data.frame(Sepal.Length = 6.4, + Sepal.Width = 2.8, + Petal.Length = 4.6, + Petal.Width = 1.8) +# setosa +plant <- data.frame(Sepal.Length = 5.1, + Sepal.Width = 3.5, + Petal.Length = 1.4, + Petal.Width = 0.2) +# virginica +plant <- data.frame(Sepal.Length = 6.7, + Sepal.Width = 3.3, + Petal.Length = 5.2, + Petal.Width = 2.3) + +# Test the web service +predicted_val <- invoke_webservice(service, toJSON(plant)) +predicted_val + +# Delete the web service +delete_webservice(service) diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/model.rds b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/model.rds new file mode 100644 index 0000000000000000000000000000000000000000..9e46c2feae6593c4f2d34354464ced23dff43159 GIT binary patch literal 8351 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 literal 0 HcmV?d00001 diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/score.R b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/score.R new file mode 100644 index 00000000..be132918 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-aci/project_files/score.R @@ -0,0 +1,17 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +library(jsonlite) + +init <- function() { + model_path <- Sys.getenv("AZUREML_MODEL_DIR") + model <- readRDS(file.path(model_path, "model.rds")) + message("model is loaded") + + function(data) { + plant <- as.data.frame(fromJSON(data)) + prediction <- predict(model, plant) + result <- as.character(prediction) + toJSON(result) + } +} \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/deploy-to-local.R b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/deploy-to-local.R new file mode 100644 index 00000000..dad3ba69 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/deploy-to-local.R @@ -0,0 +1,112 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +# Register model and deploy locally +# This example shows how to deploy a web service in step-by-step fashion: +# +# 1) Register model +# 2) Deploy the model as a web service in a local Docker container. +# 3) Invoke web service with SDK or call web service with raw HTTP call. +# 4) Quickly test changes to your entry script by reloading the local service. +# 5) Optionally, you can also make changes to model and update the local service. + +library(azuremlsdk) +library(jsonlite) + +ws <- load_workspace_from_config() + +# Register the model +model <- register_model(ws, model_path = "project_files/model.rds", + model_name = "model.rds") + +# Create environment +r_env <- r_environment(name = "r_env") + +# Create inference config +inference_config <- inference_config( + entry_script = "score.R", + source_directory = "project_files", + environment = r_env) + +# Create local deployment config +local_deployment_config <- local_webservice_deployment_config() + +# Deploy the web service +# NOTE: +# The Docker image runs as a Linux container. If you are running Docker for Windows, you need to ensure the Linux Engine is running: +# # PowerShell command to switch to Linux engine +# & 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchLinuxEngine +service <- deploy_model(ws, + 'rservice-local', + list(model), + inference_config, + local_deployment_config) +# Wait for deployment +wait_for_deployment(service, show_output = TRUE) + +# Show the port of local service +message(service$port) + +# If you encounter any issue in deploying the webservice, please visit +# https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-troubleshoot-deployment + +# Inferencing +# versicolor +# plant <- data.frame(Sepal.Length = 6.4, +# Sepal.Width = 2.8, +# Petal.Length = 4.6, +# Petal.Width = 1.8) +# setosa +plant <- data.frame(Sepal.Length = 5.1, + Sepal.Width = 3.5, + Petal.Length = 1.4, + Petal.Width = 0.2) +# # virginica +# plant <- data.frame(Sepal.Length = 6.7, +# Sepal.Width = 3.3, +# Petal.Length = 5.2, +# Petal.Width = 2.3) + +#Test the web service +invoke_webservice(service, toJSON(plant)) + +## The last few lines of the logs should have the correct prediction and should display -> R[write to console]: "setosa" +cat(gsub(pattern = "\n", replacement = " \n", x = get_webservice_logs(service))) + +## Test the web service with a HTTP Raw request +# +# NOTE: +# To test the service locally use the https://localhost: URL + +# Import the request library +library(httr) +# Get the service scoring URL from the service object, its URL is for testing locally +local_service_url <- service$scoring_uri #Same as https://localhost: + +#POST request to web service +resp <- POST(local_service_url, body = plant, encode = "json", verbose()) + +## The last few lines of the logs should have the correct prediction and should display -> R[write to console]: "setosa" +cat(gsub(pattern = "\n", replacement = " \n", x = get_webservice_logs(service))) + + +# Optional, use a new scoring script +inference_config <- inference_config( + entry_script = "score_new.R", + source_directory = "project_files", + environment = r_env) + +## Then reload the service to see the changes made +reload_local_webservice_assets(service) + +## Check reloaded service, you will see the last line will say "this is a new scoring script! I was reloaded" +invoke_webservice(service, toJSON(plant)) +cat(gsub(pattern = "\n", replacement = " \n", x = get_webservice_logs(service))) + +# Update service +# If you want to change your model(s), environment, or deployment configuration, call update() to rebuild the Docker image. + +# update_local_webservice(service, models = [NewModelObject], deployment_config = deployment_config, wait = FALSE, inference_config = inference_config) + +# Delete service +delete_local_webservice(service) diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/model.rds b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/model.rds new file mode 100644 index 0000000000000000000000000000000000000000..9e46c2feae6593c4f2d34354464ced23dff43159 GIT binary patch literal 8351 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 literal 0 HcmV?d00001 diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score.R b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score.R new file mode 100644 index 00000000..73bb16ba --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score.R @@ -0,0 +1,18 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +library(jsonlite) + +init <- function() { + model_path <- Sys.getenv("AZUREML_MODEL_DIR") + model <- readRDS(file.path(model_path, "model.rds")) + message("model is loaded") + + function(data) { + plant <- as.data.frame(fromJSON(data)) + prediction <- predict(model, plant) + result <- as.character(prediction) + message(result) + toJSON(result) + } +} \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score_new.R b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score_new.R new file mode 100644 index 00000000..ebc57449 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/deployment/deploy-to-local/project_files/score_new.R @@ -0,0 +1,19 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +library(jsonlite) + +init <- function() { + model_path <- Sys.getenv("AZUREML_MODEL_DIR") + model <- readRDS(file.path(model_path, "model.rds")) + message("model is loaded") + + function(data) { + plant <- as.data.frame(fromJSON(data)) + prediction <- predict(model, plant) + result <- as.character(prediction) + message(result) + message("this is a new scoring script! I was reloaded") + toJSON(result) + } +} \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/scripts/train.R b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/scripts/train.R new file mode 100644 index 00000000..9825c2ba --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/scripts/train.R @@ -0,0 +1,34 @@ +# This script loads a dataset of which the last column is supposed to be the +# class and logs the accuracy + +library(azuremlsdk) +library(caret) +library(optparse) +library(datasets) + + +iris_data <- data(iris) +summary(iris_data) + +in_train <- createDataPartition(y = iris_data$Species, p = .8, list = FALSE) +train_data <- iris_data[in_train,] +test_data <- iris_data[-in_train,] + +# Run algorithms using 10-fold cross validation +control <- trainControl(method = "cv", number = 10) +metric <- "Accuracy" + +set.seed(7) +model <- train(Species ~ ., + data = train_data, + method = "lda", + metric = metric, + trControl = control) +predictions <- predict(model, test_data) +conf_matrix <- confusionMatrix(predictions, test_data$Species) +message(conf_matrix) + +log_metric_to_run(metric, conf_matrix$overall["Accuracy"]) + +saveRDS(model, file = "./outputs/model.rds") +message("Model saved") diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/train-on-amlcompute.R b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/train-on-amlcompute.R new file mode 100644 index 00000000..e033db77 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-amlcompute/train-on-amlcompute.R @@ -0,0 +1,41 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +# Reminder: set working directory to current file location prior to running this script + +library(azuremlsdk) + +ws <- load_workspace_from_config() + +# Create AmlCompute cluster +cluster_name <- "r-cluster" +compute_target <- get_compute(ws, cluster_name = cluster_name) +if (is.null(compute_target)) { + vm_size <- "STANDARD_D2_V2" + compute_target <- create_aml_compute(workspace = ws, + cluster_name = cluster_name, + vm_size = vm_size, + max_nodes = 1) + + wait_for_provisioning_completion(compute_target, show_output = TRUE) +} + +# Define estimator +est <- estimator(source_directory = "scripts", + entry_script = "train.R", + compute_target = compute_target) + +experiment_name <- "train-r-script-on-amlcompute" +exp <- experiment(ws, experiment_name) + +# Submit job and display the run details +run <- submit_experiment(exp, est) +view_run_details(run) +wait_for_run_completion(run, show_output = TRUE) + +# Get the run metrics +metrics <- get_run_metrics(run) +metrics + +# Delete cluster +delete_compute(compute_target) diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/scripts/train.R b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/scripts/train.R new file mode 100644 index 00000000..72004587 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/scripts/train.R @@ -0,0 +1,28 @@ +# This script loads a dataset of which the last column is supposed to be the +# class and logs the accuracy + +library(azuremlsdk) +library(caret) +library(datasets) + +iris_data <- data(iris) +summary(iris_data) + +in_train <- createDataPartition(y = iris_data$Species, p = .8, list = FALSE) +train_data <- iris_data[in_train,] +test_data <- iris_data[-in_train,] +# Run algorithms using 10-fold cross validation +control <- trainControl(method = "cv", number = 10) +metric <- "Accuracy" + +set.seed(7) +model <- train(Species ~ ., + data = train_data, + method = "lda", + metric = metric, + trControl = control) +predictions <- predict(model, test_data) +conf_matrix <- confusionMatrix(predictions, test_data$Species) +message(conf_matrix) + +log_metric_to_run(metric, conf_matrix$overall["Accuracy"]) \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/train-on-local.R b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/train-on-local.R new file mode 100644 index 00000000..ecb75cd0 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/samples/training/train-on-local/train-on-local.R @@ -0,0 +1,26 @@ +# Copyright(c) Microsoft Corporation. +# Licensed under the MIT license. + +# Reminder: set working directory to current file location prior to running this script + +library(azuremlsdk) + +ws <- load_workspace_from_config() + +# Define estimator +est <- estimator(source_directory = "scripts", + entry_script = "train.R", + compute_target = "local") + +# Initialize experiment +experiment_name <- "train-r-script-on-local" +exp <- experiment(ws, experiment_name) + +# Submit job and display the run details +run <- submit_experiment(exp, est) +view_run_details(run) +wait_for_run_completion(run, show_output = TRUE) + +# Get the run metrics +metrics <- get_run_metrics(run) +metrics diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/README.md b/how-to-use-azureml/azureml-sdk-for-r/vignettes/README.md new file mode 100644 index 00000000..618714e8 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/README.md @@ -0,0 +1,17 @@ +## Azure Machine Learning vignettes + +These vignettes are end-to-end tutorials for using Azure Machine Learning SDK for R. + +Before running a vignette in RStudio, set the working directory to the folder that contains the vignette file (.Rmd file) in RStudio using `setwd(dirname)` or Session -> Set Working Directory -> To Source File Location. Each vignette assumes that the data and scripts are in the current working directory. + +The following vignettes are included: +1. [installation](installation.Rmd): Install the Azure ML SDK for R. +2. [configuration](configuration.Rmd): Set up an Azure ML workspace. +3. [train-and-deploy-to-aci](train-and-deploy-to-aci): Train a caret model and deploy as a web service to Azure Container Instances (ACI). +4. [train-with-tensorflow](train-with-tensorflow/): Train a deep learning TensorFlow model with Azure ML. +5. [hyperparameter-tune-with-keras](hyperparameter-tune-with-keras/): Hyperparameter tune a Keras model using HyperDrive, Azure ML's hyperparameter tuning functionality. +6. [deploy-to-aks](deploy-to-aks/): Production deploy a model as a web service to Azure Kubernetes Service (AKS). + +> Before you run these samples, make sure you have an Azure Machine Learning workspace. You can follow the [configuration vignette](../vignettes/configuration.Rmd) to set up a workspace. (You do not need to do this if you are running these examples on an Azure Machine Learning compute instance). + +For additional examples on using the R SDK, see the [samples](../samples) folder. \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/configuration.Rmd b/how-to-use-azureml/azureml-sdk-for-r/vignettes/configuration.Rmd new file mode 100644 index 00000000..2cde4d75 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/configuration.Rmd @@ -0,0 +1,108 @@ +--- +title: "Set up an Azure ML workspace" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Set up an Azure ML workspace} + %\VignetteEngine{knitr::rmarkdown} + \use_package{UTF-8} +--- + +This tutorial gets you started with the Azure Machine Learning service by walking through the requirements and instructions for setting up a workspace, the top-level resource for Azure ML. + +You do not need run this if you are working on an Azure Machine Learning Compute Instance, as the compute instance is already associated with an existing workspace. + +## What is an Azure ML workspace? +The workspace is the top-level resource for Azure ML, providing a centralized place to work with all the artifacts you create when you use Azure ML. The workspace keeps a history of all training runs, including logs, metrics, output, and a snapshot of your scripts. + +When you create a new workspace, it automatically creates several Azure resources that are used by the workspace: + +* Azure Container Registry: Registers docker containers that you use during training and when you deploy a model. To minimize costs, ACR is lazy-loaded until deployment images are created. +* Azure Storage account: Used as the default datastore for the workspace. +* Azure Application Insights: Stores monitoring information about your models. +* Azure Key Vault: Stores secrets that are used by compute targets and other sensitive information that's needed by the workspace. + +## Setup +This section describes the steps required before you can access any Azure ML service functionality. + +### Azure subscription +In order to create an Azure ML workspace, first you need access to an Azure subscription. An Azure subscription allows you to manage storage, compute, and other assets in the Azure cloud. You can [create a new subscription](https://azure.microsoft.com/en-us/free/) or access existing subscription information from the [Azure portal](https://portal.azure.com/). Later in this tutorial you will need information such as your subscription ID in order to create and access workspaces. + +### Azure ML SDK installation +Follow the [installation guide](https://azure.github.io/azureml-sdk-for-r/articles/installation.html) to install **azuremlsdk** on your machine. + +## Configure your workspace +### Workspace parameters +To use an Azure ML workspace, you will need to supply the following information: + +* Your subscription ID +* A resource group name +* (Optional) The region that will host your workspace +* A name for your workspace + +You can get your subscription ID from the [Azure portal](https://portal.azure.com/). + +You will also need access to a [resource group](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview#resource-groups), which organizes Azure resources and provides a default region for the resources in a group. You can see what resource groups to which you have access, or create a new one in the Azure portal. If you don't have a resource group, the `create_workspace()` method will create one for you using the name you provide. + +The region to host your workspace will be used if you are creating a new workspace. You do not need to specify this if you are using an existing workspace. You can find the list of supported regions [here](https://azure.microsoft.com/en-us/global-infrastructure/services/?products=machine-learning-service). You should pick a region that is close to your location or that contains your data. + +The name for your workspace is unique within the subscription and should be descriptive enough to discern among other workspaces. The subscription may be used only by you, or it may be used by your department or your entire enterprise, so choose a name that makes sense for your situation. + +The following code chunk allows you to specify your workspace parameters. It uses `Sys.getenv` to read values from environment variables, which is useful for automation. If no environment variable exists, the parameters will be set to the specified default values. Replace the default values in the code below with your default parameter values. + +``` {r configure_parameters, eval=FALSE} +subscription_id <- Sys.getenv("SUBSCRIPTION_ID", unset = "") +resource_group <- Sys.getenv("RESOURCE_GROUP", default="") +workspace_name <- Sys.getenv("WORKSPACE_NAME", default="") +workspace_region <- Sys.getenv("WORKSPACE_REGION", default="eastus2") +``` + +### Create a new workspace +If you don't have an existing workspace and are the owner of the subscription or resource group, you can create a new workspace. If you don't have a resource group, `create_workspace()` will create one for you using the name you provide. If you don't want it to do so, set the `create_resource_group = FALSE` parameter. + +Note: As with other Azure services, there are limits on certain resources (e.g. AmlCompute quota) associated with the Azure ML service. Please read this [article](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-manage-quotas) on the default limits and how to request more quota. + +This cell will create an Azure ML workspace for you in a subscription, provided you have the correct permissions. + +This will fail if: + +* You do not have permission to create a workspace in the resource group. +* You do not have permission to create a resource group if it does not exist. +* You are not a subscription owner or contributor and no Azure ML workspaces have ever been created in this subscription. + +If workspace creation fails, please work with your IT admin to provide you with the appropriate permissions or to provision the required resources. + +There are additional parameters that are not shown below that can be configured when creating a workspace. Please see [`create_workspace()`](https://azure.github.io/azureml-sdk-for-r/reference/create_workspace.html) for more details. + +``` {r create_workspace, eval=FALSE} +library(azuremlsdk) + +ws <- create_workspace(name = workspace_name, + subscription_id = subscription_id, + resource_group = resource_group, + location = workspace_region, + exist_ok = TRUE) +``` + +You can out write out the workspace ARM properties to a config file with [`write_workspace_config()`](https://azure.github.io/azureml-sdk-for-r/reference/write_workspace_config.html). The method provides a simple way of reusing the same workspace across multiple files or projects. Users can save the workspace details with `write_workspace_config()`, and use [`load_workspace_from_config()`](https://azure.github.io/azureml-sdk-for-r/reference/load_workspace_from_config.html) to load the same workspace in different files or projects without retyping the workspace ARM properties. The method defaults to writing out the config file to the current working directory with "config.json" as the file name. To specify a different path or file name, set the `path` and `file_name` parameters. + +``` {r write_config, eval=FALSE} +write_workspace_config(ws) +``` + +### Access an existing workspace +You can access an existing workspace in a couple of ways. If your workspace properties were previously saved to a config file, you can load the workspace as follows: + +``` {r load_config, eval=FALSE} +ws <- load_workspace_from_config() +``` + +If Azure ML cannot find the config file, specify the path to the config file with the `path` parameter. The method defaults to starting the search in the current directory. + +You can also initialize a workspace using the [`get_workspace()`](https://azure.github.io/azureml-sdk-for-r/reference/get_workspace.html) method. + +``` {r get_workspace, eval=FALSE} +ws <- get_workspace(name = workspace_name, + subscription_id = subscription_id, + resource_group = resource_group) +``` \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/deploy-to-aks.Rmd b/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/deploy-to-aks.Rmd new file mode 100644 index 00000000..603af752 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/deploy-to-aks.Rmd @@ -0,0 +1,188 @@ +--- +title: "Deploy a web service to Azure Kubernetes Service" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Deploy a web service to Azure Kubernetes Service} + %\VignetteEngine{knitr::rmarkdown} + \use_package{UTF-8} +--- + +This tutorial demonstrates how to deploy a model as a web service on [Azure Kubernetes Service](https://azure.microsoft.com/en-us/services/kubernetes-service/) (AKS). AKS is good for high-scale production deployments; use it if you need one or more of the following capabilities: + +* Fast response time +* Autoscaling of the deployed service +* Hardware acceleration options such as GPU + +You will learn to: + +* Set up your testing environment +* Register a model +* Provision an AKS cluster +* Deploy the model to AKS +* Test the deployed service + +## Prerequisites +If you don’t have access to an Azure ML workspace, follow the [setup tutorial](https://azure.github.io/azureml-sdk-for-r/articles/configuration.html) to configure and create a workspace. + +## Set up your testing environment +Start by setting up your environment. This includes importing the **azuremlsdk** package and connecting to your workspace. + +### Import package +```{r import_package, eval=FALSE} +library(azuremlsdk) +``` + +### Load your workspace +Instantiate a workspace object from your existing workspace. The following code will load the workspace details from a **config.json** file if you previously wrote one out with `write_workspace_config()`. +```{r load_workspace, eval=FALSE} +ws <- load_workspace_from_config() +``` + +Or, you can retrieve a workspace by directly specifying your workspace details: +```{r get_workspace, eval=FALSE} +ws <- get_workspace("", "", "") +``` + +## Register the model +In this tutorial we will deploy a model that was trained in one of the [samples](https://github.com/Azure/azureml-sdk-for-r/blob/master/samples/training/train-on-amlcompute/train-on-amlcompute.R). The model was trained with the Iris dataset and can be used to determine if a flower is one of three Iris flower species (setosa, versicolor, virginica). We have provided the model file (`model.rds`) for the tutorial; it is located in the "project_files" directory of this vignette. + +First, register the model to your workspace with [`register_model()`](https://azure.github.io/azureml-sdk-for-r/reference/register_model.html). A registered model can be any collection of files, but in this case the R model file is sufficient. Azure ML will use the registered model for deployment. + +```{r register_model, eval=FALSE} +model <- register_model(ws, + model_path = "project_files/model.rds", + model_name = "iris_model", + description = "Predict an Iris flower type") +``` + +## Provision an AKS cluster +When deploying a web service to AKS, you deploy to an AKS cluster that is connected to your workspace. There are two ways to connect an AKS cluster to your workspace: + +* Create the AKS cluster. The process automatically connects the cluster to the workspace. +* Attach an existing AKS cluster to your workspace. You can attach a cluster with the [`attach_aks_compute()`](https://azure.github.io/azureml-sdk-for-r/reference/attach_aks_compute.html) method. + +Creating or attaching an AKS cluster is a one-time process for your workspace. You can reuse this cluster for multiple deployments. If you delete the cluster or the resource group that contains it, you must create a new cluster the next time you need to deploy. + +In this tutorial, we will go with the first method of provisioning a new cluster. See the [`create_aks_compute()`](https://azure.github.io/azureml-sdk-for-r/reference/create_aks_compute.html) reference for the full set of configurable parameters. If you pick custom values for the `agent_count` and `vm_size` parameters, you need to make sure `agent_count` multiplied by `vm_size` is greater than or equal to `12` virtual CPUs. + +``` {r provision_cluster, eval=FALSE} +aks_target <- create_aks_compute(ws, cluster_name = 'myakscluster') + +wait_for_provisioning_completion(aks_target, show_output = TRUE) +``` + +The Azure ML SDK does not provide support for scaling an AKS cluster. To scale the nodes in the cluster, use the UI for your AKS cluster in the Azure portal. You can only change the node count, not the VM size of the cluster. + +## Deploy as a web service +### Define the inference dependencies +To deploy a model, you need an **inference configuration**, which describes the environment needed to host the model and web service. To create an inference config, you will first need a scoring script and an Azure ML environment. + +The scoring script (`entry_script`) is an R script that will take as input variable values (in JSON format) and output a prediction from your model. For this tutorial, use the provided scoring file `score.R`. The scoring script must contain an `init()` method that loads your model and returns a function that uses the model to make a prediction based on the input data. See the [documentation](https://azure.github.io/azureml-sdk-for-r/reference/inference_config.html#details) for more details. + +Next, define an Azure ML **environment** for your script’s package dependencies. With an environment, you specify R packages (from CRAN or elsewhere) that are needed for your script to run. You can also provide the values of environment variables that your script can reference to modify its behavior. + +By default Azure ML will build a default Docker image that includes R, the Azure ML SDK, and additional required dependencies for deployment. See the documentation here for the full list of dependencies that will be installed in the default container. You can also specify additional packages to be installed at runtime, or even a custom Docker image to be used instead of the base image that will be built, using the other available parameters to [`r_environment()`](https://azure.github.io/azureml-sdk-for-r/reference/r_environment.html). + +```{r create_env, eval=FALSE} +r_env <- r_environment(name = "deploy_env") +``` + +Now you have everything you need to create an inference config for encapsulating your scoring script and environment dependencies. + +``` {r create_inference_config, eval=FALSE} +inference_config <- inference_config( + entry_script = "score.R", + source_directory = "project_files", + environment = r_env) +``` + +### Deploy to AKS +Now, define the deployment configuration that describes the compute resources needed, for example, the number of cores and memory. See the [`aks_webservice_deployment_config()`](https://azure.github.io/azureml-sdk-for-r/reference/aks_webservice_deployment_config.html) for the full set of configurable parameters. + +``` {r deploy_config, eval=FALSE} +aks_config <- aks_webservice_deployment_config(cpu_cores = 1, memory_gb = 1) +``` + +Now, deploy your model as a web service to the AKS cluster you created earlier. + +```{r deploy_service, eval=FALSE} +aks_service <- deploy_model(ws, + 'my-new-aksservice', + models = list(model), + inference_config = inference_config, + deployment_config = aks_config, + deployment_target = aks_target) + +wait_for_deployment(aks_service, show_output = TRUE) +``` + +To inspect the logs from the deployment: +```{r get_logs, eval=FALSE} +get_webservice_logs(aks_service) +``` + +If you encounter any issue in deploying the web service, please visit the [troubleshooting guide](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-troubleshoot-deployment). + +## Test the deployed service +Now that your model is deployed as a service, you can test the service from R using [`invoke_webservice()`](https://azure.github.io/azureml-sdk-for-r/reference/invoke_webservice.html). Provide a new set of data to predict from, convert it to JSON, and send it to the service. + +``` {r test_service, eval=FALSE} +library(jsonlite) +# versicolor +plant <- data.frame(Sepal.Length = 6.4, + Sepal.Width = 2.8, + Petal.Length = 4.6, + Petal.Width = 1.8) + +# setosa +# plant <- data.frame(Sepal.Length = 5.1, +# Sepal.Width = 3.5, +# Petal.Length = 1.4, +# Petal.Width = 0.2) + +# virginica +# plant <- data.frame(Sepal.Length = 6.7, +# Sepal.Width = 3.3, +# Petal.Length = 5.2, +# Petal.Width = 2.3) + +predicted_val <- invoke_webservice(aks_service, toJSON(plant)) +message(predicted_val) +``` + +You can also get the web service’s HTTP endpoint, which accepts REST client calls. You can share this endpoint with anyone who wants to test the web service or integrate it into an application. + +``` {r eval=FALSE} +aks_service$scoring_uri +``` + +## Web service authentication +When deploying to AKS, key-based authentication is enabled by default. You can also enable token-based authentication. Token-based authentication requires clients to use an Azure Active Directory account to request an authentication token, which is used to make requests to the deployed service. + +To disable key-based auth, set the `auth_enabled = FALSE` parameter when creating the deployment configuration with [`aks_webservice_deployment_config()`](https://azure.github.io/azureml-sdk-for-r/reference/aks_webservice_deployment_config.html). +To enable token-based auth, set `token_auth_enabled = TRUE` when creating the deployment config. + +### Key-based authentication +If key authentication is enabled, you can use the [`get_webservice_keys()`](https://azure.github.io/azureml-sdk-for-r/reference/get_webservice_keys.html) method to retrieve a primary and secondary authentication key. To generate a new key, use [`generate_new_webservice_key()`](https://azure.github.io/azureml-sdk-for-r/reference/generate_new_webservice_key.html). + +### Token-based authentication +If token authentication is enabled, you can use the [`get_webservice_token()`](https://azure.github.io/azureml-sdk-for-r/reference/get_webservice_token.html) method to retrieve a JWT token and that token's expiration time. Make sure to request a new token after the token's expiration time. + +## Clean up resources +Delete the resources once you no longer need them. Do not delete any resource you plan on still using. + +Delete the web service: +```{r delete_service, eval=FALSE} +delete_webservice(aks_service) +``` + +Delete the registered model: +```{r delete_model, eval=FALSE} +delete_model(model) +``` + +Delete the AKS cluster: +```{r delete_cluster, eval=FALSE} +delete_compute(aks_target) +``` \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/model.rds b/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/model.rds new file mode 100644 index 0000000000000000000000000000000000000000..9e46c2feae6593c4f2d34354464ced23dff43159 GIT binary patch literal 8351 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 literal 0 HcmV?d00001 diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/score.R b/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/score.R new file mode 100644 index 00000000..53c47dac --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/deploy-to-aks/project_files/score.R @@ -0,0 +1,17 @@ +#' Copyright(c) Microsoft Corporation. +#' Licensed under the MIT license. + +library(jsonlite) + +init <- function() { + model_path <- Sys.getenv("AZUREML_MODEL_DIR") + model <- readRDS(file.path(model_path, "model.rds")) + message("model is loaded") + + function(data) { + plant <- as.data.frame(fromJSON(data)) + prediction <- predict(model, plant) + result <- as.character(prediction) + toJSON(result) + } +} diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/hyperparameter-tune-with-keras.Rmd b/how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/hyperparameter-tune-with-keras.Rmd new file mode 100644 index 00000000..200cac13 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/hyperparameter-tune-with-keras.Rmd @@ -0,0 +1,242 @@ +--- +title: "Hyperparameter tune a Keras model" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Hyperparameter tune a Keras model} + %\VignetteEngine{knitr::rmarkdown} + \use_package{UTF-8} +--- + +This tutorial demonstrates how you can efficiently tune hyperparameters for a model using HyperDrive, Azure ML's hyperparameter tuning functionality. You will train a Keras model on the CIFAR10 dataset, automate hyperparameter exploration, launch parallel jobs, log your results, and find the best run. + +### What are hyperparameters? + +Hyperparameters are variable parameters chosen to train a model. Learning rate, number of epochs, and batch size are all examples of hyperparameters. + +Using brute-force methods to find the optimal values for parameters can be time-consuming, and poor-performing runs can result in wasted money. To avoid this, HyperDrive automates hyperparameter exploration in a time-saving and cost-effective manner by launching several parallel runs with different configurations and finding the configuration that results in best performance on your primary metric. + +Let's get started with the example to see how it works! + +## Prerequisites + +If you don’t have access to an Azure ML workspace, follow the [setup tutorial](https://azure.github.io/azureml-sdk-for-r/articles/configuration.html) to configure and create a workspace. + +## Set up development environment +The setup for your development work in this tutorial includes the following actions: + +* Import required packages +* Connect to a workspace +* Create an experiment to track your runs +* Create a remote compute target to use for training + +### Import **azuremlsdk** package +```{r eval=FALSE} +library(azuremlsdk) +``` + +### Load your workspace +Instantiate a workspace object from your existing workspace. The following code will load the workspace details from a **config.json** file if you previously wrote one out with [`write_workspace_config()`](https://azure.github.io/azureml-sdk-for-r/reference/write_workspace_config.html). +```{r load_workpace, eval=FALSE} +ws <- load_workspace_from_config() +``` + +Or, you can retrieve a workspace by directly specifying your workspace details: +```{r get_workpace, eval=FALSE} +ws <- get_workspace("", "", "") +``` + +### Create an experiment +An Azure ML **experiment** tracks a grouping of runs, typically from the same training script. Create an experiment to track hyperparameter tuning runs for the Keras model. + +```{r create_experiment, eval=FALSE} +exp <- experiment(workspace = ws, name = 'hyperdrive-cifar10') +``` + +If you would like to track your runs in an existing experiment, simply specify that experiment's name to the `name` parameter of `experiment()`. + +### Create a compute target +By using Azure Machine Learning Compute (AmlCompute), a managed service, data scientists can train machine learning models on clusters of Azure virtual machines. In this tutorial, you create a GPU-enabled cluster as your training environment. The code below creates the compute cluster for you if it doesn't already exist in your workspace. + +You may need to wait a few minutes for your compute cluster to be provisioned if it doesn't already exist. + +```{r create_cluster, eval=FALSE} +cluster_name <- "gpucluster" + +compute_target <- get_compute(ws, cluster_name = cluster_name) +if (is.null(compute_target)) +{ + vm_size <- "STANDARD_NC6" + compute_target <- create_aml_compute(workspace = ws, + cluster_name = cluster_name, + vm_size = vm_size, + max_nodes = 4) + + wait_for_provisioning_completion(compute_target, show_output = TRUE) +} +``` + +## Prepare the training script +A training script called `cifar10_cnn.R` has been provided for you in the "project_files" directory of this tutorial. + +In order to leverage HyperDrive, the training script for your model must log the relevant metrics during model training. When you configure the hyperparameter tuning run, you specify the primary metric to use for evaluating run performance. You must log this metric so it is available to the hyperparameter tuning process. + +In order to log the required metrics, you need to do the following **inside the training script**: + +* Import the **azuremlsdk** package +``` +library(azuremlsdk) +``` + +* Take the hyperparameters as command-line arguments to the script. This is necessary so that when HyperDrive carries out the hyperparameter sweep, it can run the training script with different values to the hyperparameters as defined by the search space. + +* Use the [`log_metric_to_run()`](https://azure.github.io/azureml-sdk-for-r/reference/log_metric_to_run.html) function to log the hyperparameters and the primary metric. +``` +log_metric_to_run("batch_size", batch_size) +... +log_metric_to_run("epochs", epochs) +... +log_metric_to_run("lr", lr) +... +log_metric_to_run("decay", decay) +... +log_metric_to_run("Loss", results[[1]]) +``` + +## Create an estimator + +An Azure ML **estimator** encapsulates the run configuration information needed for executing a training script on the compute target. Azure ML runs are run as containerized jobs on the specified compute target. By default, the Docker image built for your training job will include R, the Azure ML SDK, and a set of commonly used R packages. See the full list of default packages included [here](https://azure.github.io/azureml-sdk-for-r/reference/r_environment.html). The estimator is used to define the configuration for each of the child runs that the parent HyperDrive run will kick off. + +To create the estimator, define the following: + +* The directory that contains your scripts needed for training (`source_directory`). All the files in this directory are uploaded to the cluster node(s) for execution. The directory must contain your training script and any additional scripts required. +* The training script that will be executed (`entry_script`). +* The compute target (`compute_target`), in this case the AmlCompute cluster you created earlier. +* Any environment dependencies required for training. Since the training script requires the Keras package, which is not included in the image by default, pass the package name to the `cran_packages` parameter to have it installed in the Docker container where the job will run. See the [`estimator()`](https://azure.github.io/azureml-sdk-for-r/reference/estimator.html) reference for the full set of configurable options. +* Set the `use_gpu = TRUE` flag so the default base GPU Docker image will be built, since the job will be run on a GPU cluster. + +```{r create_estimator, eval=FALSE} +est <- estimator(source_directory = "project_files", + entry_script = "cifar10_cnn.R", + compute_target = compute_target, + cran_packages = c("keras"), + use_gpu = TRUE) +``` + +## Configure the HyperDrive run +To kick off hyperparameter tuning in Azure ML, you will need to configure a HyperDrive run, which will in turn launch individual children runs of the training scripts with the corresponding hyperparameter values. + +### Define search space + +In this experiment, we will use four hyperparameters: batch size, number of epochs, learning rate, and decay. In order to begin tuning, we must define the range of values we would like to explore from and how they will be distributed. This is called a parameter space definition and can be created with discrete or continuous ranges. + +__Discrete hyperparameters__ are specified as a choice among discrete values represented as a list. + +Advanced discrete hyperparameters can also be specified using a distribution. The following distributions are supported: + + * `quniform(low, high, q)` + * `qloguniform(low, high, q)` + * `qnormal(mu, sigma, q)` + * `qlognormal(mu, sigma, q)` + +__Continuous hyperparameters__ are specified as a distribution over a continuous range of values. The following distributions are supported: + + * `uniform(low, high)` + * `loguniform(low, high)` + * `normal(mu, sigma)` + * `lognormal(mu, sigma)` + +Here, we will use the [`random_parameter_sampling()`](https://azure.github.io/azureml-sdk-for-r/reference/random_parameter_sampling.html) function to define the search space for each hyperparameter. `batch_size` and `epochs` will be chosen from discrete sets while `lr` and `decay` will be drawn from continuous distributions. + +Other available sampling function options are: + + * [`grid_parameter_sampling()`](https://azure.github.io/azureml-sdk-for-r/reference/grid_parameter_sampling.html) + * [`bayesian_parameter_sampling()`](https://azure.github.io/azureml-sdk-for-r/reference/bayesian_parameter_sampling.html) + +```{r search_space, eval=FALSE} +sampling <- random_parameter_sampling(list(batch_size = choice(c(16, 32, 64)), + epochs = choice(c(200, 350, 500)), + lr = normal(0.0001, 0.005), + decay = uniform(1e-6, 3e-6))) +``` + +### Define termination policy + +To prevent resource waste, Azure ML can detect and terminate poorly performing runs. HyperDrive will do this automatically if you specify an early termination policy. + +Here, you will use the [`bandit_policy()`](https://azure.github.io/azureml-sdk-for-r/reference/bandit_policy.html), which terminates any runs where the primary metric is not within the specified slack factor with respect to the best performing training run. + +```{r termination_policy, eval=FALSE} +policy <- bandit_policy(slack_factor = 0.15) +``` + +Other termination policy options are: + + * [`median_stopping_policy()`](https://azure.github.io/azureml-sdk-for-r/reference/median_stopping_policy.html) + * [`truncation_selection_policy()`](https://azure.github.io/azureml-sdk-for-r/reference/truncation_selection_policy.html) + +If no policy is provided, all runs will continue to completion regardless of performance. + +### Finalize configuration + +Now, you can create a `HyperDriveConfig` object to define your HyperDrive run. Along with the sampling and policy definitions, you need to specify the name of the primary metric that you want to track and whether we want to maximize it or minimize it. The `primary_metric_name` must correspond with the name of the primary metric you logged in your training script. `max_total_runs` specifies the total number of child runs to launch. See the [hyperdrive_config()](https://azure.github.io/azureml-sdk-for-r/reference/hyperdrive_config.html) reference for the full set of configurable parameters. + +```{r create_config, eval=FALSE} +hyperdrive_config <- hyperdrive_config(hyperparameter_sampling = sampling, + primary_metric_goal("MINIMIZE"), + primary_metric_name = "Loss", + max_total_runs = 4, + policy = policy, + estimator = est) +``` + +## Submit the HyperDrive run + +Finally submit the experiment to run on your cluster. The parent HyperDrive run will launch the individual child runs. `submit_experiment()` will return a `HyperDriveRun` object that you will use to interface with the run. In this tutorial, since the cluster we created scales to a max of `4` nodes, all 4 child runs will be launched in parallel. + +```{r submit_run, eval=FALSE} +hyperdrive_run <- submit_experiment(exp, hyperdrive_config) +``` + +You can view the HyperDrive run’s details as a table. Clicking the “Web View” link provided will bring you to Azure Machine Learning studio, where you can monitor the run in the UI. + +```{r eval=FALSE} +view_run_details(hyperdrive_run) +``` + +Wait until hyperparameter tuning is complete before you run more code. + +```{r eval=FALSE} +wait_for_run_completion(hyperdrive_run, show_output = TRUE) +``` + +## Analyse runs by performance + +Finally, you can view and compare the metrics collected during all of the child runs! + +```{r analyse_runs, eval=FALSE} +# Get the metrics of all the child runs +child_run_metrics <- get_child_run_metrics(hyperdrive_run) +child_run_metrics + +# Get the child run objects sorted in descending order by the best primary metric +child_runs <- get_child_runs_sorted_by_primary_metric(hyperdrive_run) +child_runs + +# Directly get the run object of the best performing run +best_run <- get_best_run_by_primary_metric(hyperdrive_run) + +# Get the metrics of the best performing run +metrics <- get_run_metrics(best_run) +metrics +``` + +The `metrics` variable will include the values of the hyperparameters that resulted in the best performing run. + +## Clean up resources +Delete the resources once you no longer need them. Don't delete any resource you plan to still use. + +Delete the compute cluster: +```{r delete_compute, eval=FALSE} +delete_compute(compute_target) +``` \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/project_files/cifar10_cnn.R b/how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/project_files/cifar10_cnn.R new file mode 100644 index 00000000..2d1f8ac9 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/hyperparameter-tune-with-keras/project_files/cifar10_cnn.R @@ -0,0 +1,124 @@ +#' Modified from: "https://github.com/rstudio/keras/blob/master/vignettes/ +#' examples/cifar10_cnn.R" +#' +#' Train a simple deep CNN on the CIFAR10 small images dataset. +#' +#' It gets down to 0.65 test logloss in 25 epochs, and down to 0.55 after 50 +#' epochs, though it is still underfitting at that point. + +library(keras) +install_keras() + +library(azuremlsdk) + +# Parameters -------------------------------------------------------------- + +args <- commandArgs(trailingOnly = TRUE) + +batch_size <- as.numeric(args[2]) +log_metric_to_run("batch_size", batch_size) + +epochs <- as.numeric(args[4]) +log_metric_to_run("epochs", epochs) + +lr <- as.numeric(args[6]) +log_metric_to_run("lr", lr) + +decay <- as.numeric(args[8]) +log_metric_to_run("decay", decay) + +data_augmentation <- TRUE + + +# Data Preparation -------------------------------------------------------- + +# See ?dataset_cifar10 for more info +cifar10 <- dataset_cifar10() + +# Feature scale RGB values in test and train inputs +x_train <- cifar10$train$x / 255 +x_test <- cifar10$test$x / 255 +y_train <- to_categorical(cifar10$train$y, num_classes = 10) +y_test <- to_categorical(cifar10$test$y, num_classes = 10) + + +# Defining Model ---------------------------------------------------------- + +# Initialize sequential model +model <- keras_model_sequential() + +model %>% + +# Start with hidden 2D convolutional layer being fed 32x32 pixel images +layer_conv_2d( + filter = 32, kernel_size = c(3, 3), padding = "same", + input_shape = c(32, 32, 3) + ) %>% + layer_activation("relu") %>% + + # Second hidden layer + layer_conv_2d(filter = 32, kernel_size = c(3, 3)) %>% + layer_activation("relu") %>% + + # Use max pooling + layer_max_pooling_2d(pool_size = c(2, 2)) %>% + layer_dropout(0.25) %>% + + # 2 additional hidden 2D convolutional layers + layer_conv_2d(filter = 32, kernel_size = c(3, 3), padding = "same") %>% + layer_activation("relu") %>% + layer_conv_2d(filter = 32, kernel_size = c(3, 3)) %>% + layer_activation("relu") %>% + + # Use max pooling once more + layer_max_pooling_2d(pool_size = c(2, 2)) %>% + layer_dropout(0.25) %>% + + # Flatten max filtered output into feature vector + # and feed into dense layer + layer_flatten() %>% + layer_dense(512) %>% + layer_activation("relu") %>% + layer_dropout(0.5) %>% + + # Outputs from dense layer are projected onto 10 unit output layer + layer_dense(10) %>% + layer_activation("softmax") + +opt <- optimizer_rmsprop(lr, decay) + +model %>% + compile(loss = "categorical_crossentropy", + optimizer = opt, + metrics = "accuracy" +) + + +# Training ---------------------------------------------------------------- + +if (!data_augmentation) { + + model %>% + fit(x_train, + y_train, + batch_size = batch_size, + epochs = epochs, + validation_data = list(x_test, y_test), + shuffle = TRUE + ) + +} else { + + datagen <- image_data_generator(rotation_range = 20, + width_shift_range = 0.2, + height_shift_range = 0.2, + horizontal_flip = TRUE + ) + + datagen %>% fit_image_data_generator(x_train) + + results <- evaluate(model, x_train, y_train, batch_size) + log_metric_to_run("Loss", results[[1]]) + cat("Loss: ", results[[1]], "\n") + cat("Accuracy: ", results[[2]], "\n") +} \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/installation.Rmd b/how-to-use-azureml/azureml-sdk-for-r/vignettes/installation.Rmd new file mode 100644 index 00000000..d072acab --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/installation.Rmd @@ -0,0 +1,100 @@ +--- +title: "Install the Azure ML SDK for R" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Install the Azure ML SDK for R} + %\VignetteEngine{knitr::rmarkdown} + \use_package{UTF-8} +--- + +This article covers the step-by-step instructions for installing the Azure ML SDK for R. + +You do not need run this if you are working on an Azure Machine Learning Compute Instance, as the compute instance already has the Azure ML SDK preinstalled. + +## Install Conda + +If you do not have Conda already installed on your machine, you will first need to install it, since the Azure ML R SDK uses **reticulate** to bind to the Python SDK. We recommend installing [Miniconda](https://docs.conda.io/en/latest/miniconda.html), which is a smaller, lightweight version of Anaconda. Choose the 64-bit binary for Python 3.5 or later. + +## Install the **azuremlsdk** R package +You will need **remotes** to install **azuremlsdk** from the GitHub repo. +``` {r install_remotes, eval=FALSE} +install.packages('remotes') +``` + +Then, you can use the `install_github` function to install the package. +``` {r install_azuremlsdk, eval=FALSE} +remotes::install_cran('azuremlsdk', repos = 'https://cloud.r-project.org/') +``` + +If you are using R installed from CRAN, which comes with 32-bit and 64-bit binaries, you may need to specify the parameter `INSTALL_opts=c("--no-multiarch")` to only build for the current 64-bit architecture. +``` {r eval=FALSE} +remotes::install_cran('azuremlsdk', repos = 'https://cloud.r-project.org/', INSTALL_opts=c("--no-multiarch")) +``` + +## Install the Azure ML Python SDK +Lastly, use the **azuremlsdk** R library to install the Python SDK. By default, `azuremlsdk::install_azureml()` will install the [latest version of the Python SDK](https://pypi.org/project/azureml-sdk/) in a conda environment called `r-azureml` if reticulate < 1.14 or `r-reticulate` if reticulate ≥ 1.14. +``` {r install_pythonsdk, eval=FALSE} +azuremlsdk::install_azureml() +``` + +If you would like to override the default version, environment name, or Python version, you can pass in those arguments. If you would like to restart the R session after installation or delete the conda environment if it already exists and create a new environment, you can also do so: +``` {r eval=FALSE} +azuremlsdk::install_azureml(version = NULL, + custom_envname = "", + conda_python_version = "", + restart_session = TRUE, + remove_existing_env = TRUE) +``` + +## Test installation +You can confirm your installation worked by loading the library and successfully retrieving a run. +``` {r test_installation, eval=FALSE} +library(azuremlsdk) +get_current_run() +``` + +## Troubleshooting +- In step 3 of the installation, if you get ssl errors on windows, it is due to an +outdated openssl binary. Install the latest openssl binaries from +[here](https://wiki.openssl.org/index.php/Binaries). + +- If installation fails due to this error: + + ```R + Error in strptime(xx, f, tz = tz) : + (converted from warning) unable to identify current timezone 'C': + please set environment variable 'TZ' + In R CMD INSTALL + Error in i.p(...) : + (converted from warning) installation of package ‘C:/.../azureml_0.4.0.tar.gz’ had non-zero exit + status + ``` + + You will need to set your time zone environment variable to GMT and restart the installation process. + + ```R + Sys.setenv(TZ='GMT') + ``` + +- If the following permission error occurs while installing in RStudio, + change your RStudio session to administrator mode, and re-run the installation command. + + ```R + Downloading GitHub repo Azure/azureml-sdk-for-r@master + Skipping 2 packages ahead of CRAN: reticulate, rlang + Running `R CMD build`... + + Error: (converted from warning) invalid package + 'C:/.../file2b441bf23631' + In R CMD INSTALL + Error in i.p(...) : + (converted from warning) installation of package + ‘C:/.../file2b441bf23631’ had non-zero exit status + In addition: Warning messages: + 1: In file(con, "r") : + cannot open file 'C:...\file2b44144a540f': Permission denied + 2: In file(con, "r") : + cannot open file 'C:...\file2b4463c21577': Permission denied + ``` + \ No newline at end of file diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accident_predict.R b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accident_predict.R new file mode 100644 index 00000000..37e16795 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accident_predict.R @@ -0,0 +1,16 @@ +#' Copyright(c) Microsoft Corporation. +#' Licensed under the MIT license. + +library(jsonlite) + +init <- function() { + model_path <- Sys.getenv("AZUREML_MODEL_DIR") + model <- readRDS(file.path(model_path, "model.rds")) + message("logistic regression model loaded") + + function(data) { + vars <- as.data.frame(fromJSON(data)) + prediction <- as.numeric(predict(model, vars, type = "response") * 100) + toJSON(prediction) + } +} diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accidents.R b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accidents.R new file mode 100644 index 00000000..14dd5237 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/project_files/accidents.R @@ -0,0 +1,33 @@ +#' Copyright(c) Microsoft Corporation. +#' Licensed under the MIT license. + +library(azuremlsdk) +library(optparse) +library(caret) + +options <- list( + make_option(c("-d", "--data_folder")) +) + +opt_parser <- OptionParser(option_list = options) +opt <- parse_args(opt_parser) + +paste(opt$data_folder) + +accidents <- readRDS(file.path(opt$data_folder, "accidents.Rd")) +summary(accidents) + +mod <- glm(dead ~ dvcat + seatbelt + frontal + sex + ageOFocc + yearVeh + airbag + occRole, family = binomial, data = accidents) +summary(mod) +predictions <- factor(ifelse(predict(mod) > 0.1, "dead", "alive")) +conf_matrix <- confusionMatrix(predictions, accidents$dead) +message(conf_matrix) + +log_metric_to_run("Accuracy", conf_matrix$overall["Accuracy"]) + +output_dir = "outputs" +if (!dir.exists(output_dir)) { + dir.create(output_dir) +} +saveRDS(mod, file = "./outputs/model.rds") +message("Model saved") diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/train-and-deploy-to-aci.Rmd b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/train-and-deploy-to-aci.Rmd new file mode 100644 index 00000000..a0b9f4c3 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-and-deploy-to-aci/train-and-deploy-to-aci.Rmd @@ -0,0 +1,326 @@ +--- +title: "Train and deploy your first model with Azure ML" +author: "David Smith" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Train and deploy your first model with Azure ML} + %\VignetteEngine{knitr::rmarkdown} + \use_package{UTF-8} +--- + +In this tutorial, you learn the foundational design patterns in Azure Machine Learning. You'll train and deploy a **caret** model to predict the likelihood of a fatality in an automobile accident. After completing this tutorial, you'll have the practical knowledge of the R SDK to scale up to developing more-complex experiments and workflows. + +In this tutorial, you learn the following tasks: + +* Connect your workspace +* Load data and prepare for training +* Upload data to the datastore so it is available for remote training +* Create a compute resource +* Train a caret model to predict probability of fatality +* Deploy a prediction endpoint +* Test the model from R + +## Prerequisites + +If you don't have access to an Azure ML workspace, follow the [setup tutorial](https://azure.github.io/azureml-sdk-for-r/articles/configuration.html) to configure and create a workspace. + +## Set up your development environment +The setup for your development work in this tutorial includes the following actions: + +* Install required packages +* Connect to a workspace, so that your local computer can communicate with remote resources +* Create an experiment to track your runs +* Create a remote compute target to use for training + +### Install required packages +This tutorial assumes you already have the Azure ML SDK installed. Go ahead and import the **azuremlsdk** package. + +```{r eval=FALSE} +library(azuremlsdk) +``` + +The tutorial uses data from the [**DAAG** package](https://cran.r-project.org/package=DAAG). Install the package if you don't have it. + +```{r eval=FALSE} +install.packages("DAAG") +``` + +The training and scoring scripts (`accidents.R` and `accident_predict.R`) have some additional dependencies. If you plan on running those scripts locally, make sure you have those required packages as well. + +### Load your workspace +Instantiate a workspace object from your existing workspace. The following code will load the workspace details from the **config.json** file. You can also retrieve a workspace using [`get_workspace()`](https://azure.github.io/azureml-sdk-for-r/reference/get_workspace.html). + +```{r load_workpace, eval=FALSE} +ws <- load_workspace_from_config() +``` + +### Create an experiment +An Azure ML experiment tracks a grouping of runs, typically from the same training script. Create an experiment to track the runs for training the caret model on the accidents data. + +```{r create_experiment, eval=FALSE} +experiment_name <- "accident-logreg" +exp <- experiment(ws, experiment_name) +``` + +### Create a compute target +By using Azure Machine Learning Compute (AmlCompute), a managed service, data scientists can train machine learning models on clusters of Azure virtual machines. Examples include VMs with GPU support. In this tutorial, you create a single-node AmlCompute cluster as your training environment. The code below creates the compute cluster for you if it doesn't already exist in your workspace. + +You may need to wait a few minutes for your compute cluster to be provisioned if it doesn't already exist. + +```{r create_cluster, eval=FALSE} +cluster_name <- "rcluster" +compute_target <- get_compute(ws, cluster_name = cluster_name) +if (is.null(compute_target)) { + vm_size <- "STANDARD_D2_V2" + compute_target <- create_aml_compute(workspace = ws, + cluster_name = cluster_name, + vm_size = vm_size, + max_nodes = 1) + + wait_for_provisioning_completion(compute_target, show_output = TRUE) +} +``` + +## Prepare data for training +This tutorial uses data from the **DAAG** package. This dataset includes data from over 25,000 car crashes in the US, with variables you can use to predict the likelihood of a fatality. First, import the data into R and transform it into a new dataframe `accidents` for analysis, and export it to an `Rdata` file. + +```{r load_data, eval=FALSE} +library(DAAG) +data(nassCDS) + +accidents <- na.omit(nassCDS[,c("dead","dvcat","seatbelt","frontal","sex","ageOFocc","yearVeh","airbag","occRole")]) +accidents$frontal <- factor(accidents$frontal, labels=c("notfrontal","frontal")) +accidents$occRole <- factor(accidents$occRole) + +saveRDS(accidents, file="accidents.Rd") +``` + +### Upload data to the datastore +Upload data to the cloud so that it can be access by your remote training environment. Each Azure ML workspace comes with a default datastore that stores the connection information to the Azure blob container that is provisioned in the storage account attached to the workspace. The following code will upload the accidents data you created above to that datastore. + +```{r upload_data, eval=FALSE} +ds <- get_default_datastore(ws) + +target_path <- "accidentdata" +upload_files_to_datastore(ds, + list("./project_files/accidents.Rd"), + target_path = target_path, + overwrite = TRUE) +``` + + +## Train a model + +For this tutorial, fit a logistic regression model on your uploaded data using your remote compute cluster. To submit a job, you need to: + +* Prepare the training script +* Create an estimator +* Submit the job + +### Prepare the training script +A training script called `accidents.R` has been provided for you in the "project_files" directory of this tutorial. Notice the following details **inside the training script** that have been done to leverage the Azure ML service for training: + +* The training script takes an argument `-d` to find the directory that contains the training data. When you define and submit your job later, you point to the datastore for this argument. Azure ML will mount the storage folder to the remote cluster for the training job. +* The training script logs the final accuracy as a metric to the run record in Azure ML using `log_metric_to_run()`. The Azure ML SDK provides a set of logging APIs for logging various metrics during training runs. These metrics are recorded and persisted in the experiment run record. The metrics can then be accessed at any time or viewed in the run details page in [Azure Machine Learning studio](http://ml.azure.com). See the [reference](https://azure.github.io/azureml-sdk-for-r/reference/index.html#section-training-experimentation) for the full set of logging methods `log_*()`. +* The training script saves your model into a directory named **outputs**. The `./outputs` folder receives special treatment by Azure ML. During training, files written to `./outputs` are automatically uploaded to your run record by Azure ML and persisted as artifacts. By saving the trained model to `./outputs`, you'll be able to access and retrieve your model file even after the run is over and you no longer have access to your remote training environment. + +### Create an estimator + +An Azure ML estimator encapsulates the run configuration information needed for executing a training script on the compute target. Azure ML runs are run as containerized jobs on the specified compute target. By default, the Docker image built for your training job will include R, the Azure ML SDK, and a set of commonly used R packages. See the full list of default packages included [here](https://azure.github.io/azureml-sdk-for-r/reference/r_environment.html). + +To create the estimator, define: + +* The directory that contains your scripts needed for training (`source_directory`). All the files in this directory are uploaded to the cluster node(s) for execution. The directory must contain your training script and any additional scripts required. +* The training script that will be executed (`entry_script`). +* The compute target (`compute_target`), in this case the AmlCompute cluster you created earlier. +* The parameters required from the training script (`script_params`). Azure ML will run your training script as a command-line script with `Rscript`. In this tutorial you specify one argument to the script, the data directory mounting point, which you can access with `ds$path(target_path)`. +* Any environment dependencies required for training. The default Docker image built for training already contains the three packages (`caret`, `e1071`, and `optparse`) needed in the training script. So you don't need to specify additional information. If you are using R packages that are not included by default, use the estimator's `cran_packages` parameter to add additional CRAN packages. See the [`estimator()`](https://azure.github.io/azureml-sdk-for-r/reference/estimator.html) reference for the full set of configurable options. + +```{r create_estimator, eval=FALSE} +est <- estimator(source_directory = "project_files", + entry_script = "accidents.R", + script_params = list("--data_folder" = ds$path(target_path)), + compute_target = compute_target + ) +``` + +### Submit the job on the remote cluster + +Finally submit the job to run on your cluster. `submit_experiment()` returns a Run object that you then use to interface with the run. In total, the first run takes **about 10 minutes**. But for later runs, the same Docker image is reused as long as the script dependencies don't change. In this case, the image is cached and the container startup time is much faster. + +```{r submit_job, eval=FALSE} +run <- submit_experiment(exp, est) +``` + +You can view a table of the run's details. Clicking the "Web View" link provided will bring you to Azure Machine Learning studio, where you can monitor the run in the UI. + +```{r view_run, eval=FALSE} +view_run_details(run) +``` + +Model training happens in the background. Wait until the model has finished training before you run more code. + +```{r wait_run, eval=FALSE} +wait_for_run_completion(run, show_output = TRUE) +``` + +You -- and colleagues with access to the workspace -- can submit multiple experiments in parallel, and Azure ML will take of scheduling the tasks on the compute cluster. You can even configure the cluster to automatically scale up to multiple nodes, and scale back when there are no more compute tasks in the queue. This configuration is a cost-effective way for teams to share compute resources. + +## Retrieve training results +Once your model has finished training, you can access the artifacts of your job that were persisted to the run record, including any metrics logged and the final trained model. + +### Get the logged metrics +In the training script `accidents.R`, you logged a metric from your model: the accuracy of the predictions in the training data. You can see metrics in the [studio](https://ml.azure.com), or extract them to the local session as an R list as follows: + +```{r metrics, eval=FALSE} +metrics <- get_run_metrics(run) +metrics +``` + +If you've run multiple experiments (say, using differing variables, algorithms, or hyperparamers), you can use the metrics from each run to compare and choose the model you'll use in production. + +### Get the trained model +You can retrieve the trained model and look at the results in your local R session. The following code will download the contents of the `./outputs` directory, which includes the model file. + +```{r retrieve_model, eval=FALSE} +download_files_from_run(run, prefix="outputs/") +accident_model <- readRDS("project_files/outputs/model.rds") +summary(accident_model) +``` + +You see some factors that contribute to an increase in the estimated probability of death: + +* higher impact speed +* male driver +* older occupant +* passenger + +You see lower probabilities of death with: + +* presence of airbags +* presence seatbelts +* frontal collision + +The vehicle year of manufacture does not have a significant effect. + +You can use this model to make new predictions: + +```{r manual_predict, eval=FALSE} +newdata <- data.frame( # valid values shown below + dvcat="10-24", # "1-9km/h" "10-24" "25-39" "40-54" "55+" + seatbelt="none", # "none" "belted" + frontal="frontal", # "notfrontal" "frontal" + sex="f", # "f" "m" + ageOFocc=16, # age in years, 16-97 + yearVeh=2002, # year of vehicle, 1955-2003 + airbag="none", # "none" "airbag" + occRole="pass" # "driver" "pass" + ) + +## predicted probability of death for these variables, as a percentage +as.numeric(predict(accident_model,newdata, type="response")*100) +``` + +## Deploy as a web service + +With your model, you can predict the danger of death from a collision. Use Azure ML to deploy your model as a prediction service. In this tutorial, you will deploy the web service in [Azure Container Instances](https://docs.microsoft.com/en-us/azure/container-instances/) (ACI). + +### Register the model + +First, register the model you downloaded to your workspace with [`register_model()`](https://azure.github.io/azureml-sdk-for-r/reference/register_model.html). A registered model can be any collection of files, but in this case the R model object is sufficient. Azure ML will use the registered model for deployment. + +```{r register_model, eval=FALSE} +model <- register_model(ws, + model_path = "project_files/outputs/model.rds", + model_name = "accidents_model", + description = "Predict probablity of auto accident") +``` + +### Define the inference dependencies +To create a web service for your model, you first need to create a scoring script (`entry_script`), an R script that will take as input variable values (in JSON format) and output a prediction from your model. For this tutorial, use the provided scoring file `accident_predict.R`. The scoring script must contain an `init()` method that loads your model and returns a function that uses the model to make a prediction based on the input data. See the [documentation](https://azure.github.io/azureml-sdk-for-r/reference/inference_config.html#details) for more details. + +Next, define an Azure ML **environment** for your script's package dependencies. With an environment, you specify R packages (from CRAN or elsewhere) that are needed for your script to run. You can also provide the values of environment variables that your script can reference to modify its behavior. By default, Azure ML will build the same default Docker image used with the estimator for training. Since the tutorial has no special requirements, create an environment with no special attributes. + +```{r create_environment, eval=FALSE} +r_env <- r_environment(name = "basic_env") +``` + +If you want to use your own Docker image for deployment instead, specify the `custom_docker_image` parameter. See the [`r_environment()`](https://azure.github.io/azureml-sdk-for-r/reference/r_environment.html) reference for the full set of configurable options for defining an environment. + +Now you have everything you need to create an **inference config** for encapsulating your scoring script and environment dependencies. + +``` {r create_inference_config, eval=FALSE} +inference_config <- inference_config( + entry_script = "accident_predict.R", + source_directory = "project_files", + environment = r_env) +``` + +### Deploy to ACI +In this tutorial, you will deploy your service to ACI. This code provisions a single container to respond to inbound requests, which is suitable for testing and light loads. See [`aci_webservice_deployment_config()`](https://azure.github.io/azureml-sdk-for-r/reference/aci_webservice_deployment_config.html) for additional configurable options. (For production-scale deployments, you can also [deploy to Azure Kubernetes Service](https://azure.github.io/azureml-sdk-for-r/articles/deploy-to-aks/deploy-to-aks.html).) + +``` {r create_aci_config, eval=FALSE} +aci_config <- aci_webservice_deployment_config(cpu_cores = 1, memory_gb = 0.5) +``` + +Now you deploy your model as a web service. Deployment **can take several minutes**. + +```{r deploy_service, eval=FALSE} +aci_service <- deploy_model(ws, + 'accident-pred', + list(model), + inference_config, + aci_config) + +wait_for_deployment(aci_service, show_output = TRUE) +``` + +If you encounter any issue in deploying the web service, please visit the [troubleshooting guide](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-troubleshoot-deployment). + +## Test the deployed service + +Now that your model is deployed as a service, you can test the service from R using [`invoke_webservice()`](https://azure.github.io/azureml-sdk-for-r/reference/invoke_webservice.html). Provide a new set of data to predict from, convert it to JSON, and send it to the service. + +```{r test_deployment, eval=FALSE} +library(jsonlite) + +newdata <- data.frame( # valid values shown below + dvcat="10-24", # "1-9km/h" "10-24" "25-39" "40-54" "55+" + seatbelt="none", # "none" "belted" + frontal="frontal", # "notfrontal" "frontal" + sex="f", # "f" "m" + ageOFocc=22, # age in years, 16-97 + yearVeh=2002, # year of vehicle, 1955-2003 + airbag="none", # "none" "airbag" + occRole="pass" # "driver" "pass" + ) + +prob <- invoke_webservice(aci_service, toJSON(newdata)) +prob +``` + +You can also get the web service's HTTP endpoint, which accepts REST client calls. You can share this endpoint with anyone who wants to test the web service or integrate it into an application. + +```{r get_endpoint, eval=FALSE} +aci_service$scoring_uri +``` + +## Clean up resources + +Delete the resources once you no longer need them. Don't delete any resource you plan to still use. + +Delete the web service: +```{r delete_service, eval=FALSE} +delete_webservice(aci_service) +``` + +Delete the registered model: +```{r delete_model, eval=FALSE} +delete_model(model) +``` + +Delete the compute cluster: +```{r delete_compute, eval=FALSE} +delete_compute(compute_target) +``` diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/project_files/tf_mnist.R b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/project_files/tf_mnist.R new file mode 100644 index 00000000..4eaff5db --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/project_files/tf_mnist.R @@ -0,0 +1,62 @@ +# Copyright 2015 The TensorFlow Authors. All Rights Reserved. +# Copyright 2016 RStudio, Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + + +library(tensorflow) +install_tensorflow(version = "1.13.2-gpu") + +library(azuremlsdk) + +# Create the model +x <- tf$placeholder(tf$float32, shape(NULL, 784L)) +W <- tf$Variable(tf$zeros(shape(784L, 10L))) +b <- tf$Variable(tf$zeros(shape(10L))) + +y <- tf$nn$softmax(tf$matmul(x, W) + b) + +# Define loss and optimizer +y_ <- tf$placeholder(tf$float32, shape(NULL, 10L)) +cross_entropy <- tf$reduce_mean(-tf$reduce_sum(y_ * log(y), + reduction_indices = 1L)) +train_step <- tf$train$GradientDescentOptimizer(0.5)$minimize(cross_entropy) + +# Create session and initialize variables +sess <- tf$Session() +sess$run(tf$global_variables_initializer()) + +# Load mnist data ) +datasets <- tf$contrib$learn$datasets +mnist <- datasets$mnist$read_data_sets("MNIST-data", one_hot = TRUE) + +# Train +for (i in 1:1000) { + batches <- mnist$train$next_batch(100L) + batch_xs <- batches[[1]] + batch_ys <- batches[[2]] + sess$run(train_step, + feed_dict = dict(x = batch_xs, y_ = batch_ys)) +} + +# Test trained model +correct_prediction <- tf$equal(tf$argmax(y, 1L), tf$argmax(y_, 1L)) +accuracy <- tf$reduce_mean(tf$cast(correct_prediction, tf$float32)) +cat("Accuracy: ", sess$run(accuracy, + feed_dict = dict(x = mnist$test$images, + y_ = mnist$test$labels))) + +log_metric_to_run("accuracy", + sess$run(accuracy, feed_dict = dict(x = mnist$test$images, + y_ = mnist$test$labels))) diff --git a/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/train-with-tensorflow.Rmd b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/train-with-tensorflow.Rmd new file mode 100644 index 00000000..1290c4b4 --- /dev/null +++ b/how-to-use-azureml/azureml-sdk-for-r/vignettes/train-with-tensorflow/train-with-tensorflow.Rmd @@ -0,0 +1,143 @@ +--- +title: "Train a TensorFlow model" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Train a TensorFlow model} + %\VignetteEngine{knitr::rmarkdown} + \use_package{UTF-8} +--- + +This tutorial demonstrates how run a TensorFlow job at scale using Azure ML. You will train a TensorFlow model to classify handwritten digits (MNIST) using a deep neural network (DNN) and log your results to the Azure ML service. + +## Prerequisites +If you don’t have access to an Azure ML workspace, follow the [setup tutorial](https://azure.github.io/azureml-sdk-for-r/articles/configuration.html) to configure and create a workspace. + +## Set up development environment +The setup for your development work in this tutorial includes the following actions: + +* Import required packages +* Connect to a workspace +* Create an experiment to track your runs +* Create a remote compute target to use for training + +### Import **azuremlsdk** package +```{r eval=FALSE} +library(azuremlsdk) +``` + +### Load your workspace +Instantiate a workspace object from your existing workspace. The following code will load the workspace details from a **config.json** file if you previously wrote one out with [`write_workspace_config()`](https://azure.github.io/azureml-sdk-for-r/reference/write_workspace_config.html). +```{r load_workpace, eval=FALSE} +ws <- load_workspace_from_config() +``` + +Or, you can retrieve a workspace by directly specifying your workspace details: +```{r get_workpace, eval=FALSE} +ws <- get_workspace("", "", "") +``` + +### Create an experiment +An Azure ML **experiment** tracks a grouping of runs, typically from the same training script. Create an experiment to track the runs for training the TensorFlow model on the MNIST data. + +```{r create_experiment, eval=FALSE} +exp <- experiment(workspace = ws, name = "tf-mnist") +``` + +If you would like to track your runs in an existing experiment, simply specify that experiment's name to the `name` parameter of `experiment()`. + +### Create a compute target +By using Azure Machine Learning Compute (AmlCompute), a managed service, data scientists can train machine learning models on clusters of Azure virtual machines. In this tutorial, you create a GPU-enabled cluster as your training environment. The code below creates the compute cluster for you if it doesn't already exist in your workspace. + +You may need to wait a few minutes for your compute cluster to be provisioned if it doesn't already exist. + +```{r create_cluster, eval=FALSE} +cluster_name <- "gpucluster" +compute_target <- get_compute(ws, cluster_name = cluster_name) +if (is.null(compute_target)) +{ + vm_size <- "STANDARD_NC6" + compute_target <- create_aml_compute(workspace = ws, + cluster_name = cluster_name, + vm_size = vm_size, + max_nodes = 4) + + wait_for_provisioning_completion(compute_target, show_output = TRUE) +} +``` + +## Prepare the training script + +A training script called `tf_mnist.R` has been provided for you in the "project_files" directory of this tutorial. The Azure ML SDK provides a set of logging APIs for logging various metrics during training runs. These metrics are recorded and persisted in the experiment run record, and can be be accessed at any time or viewed in the run details page in [Azure Machine Learning studio](http://ml.azure.com/). + +In order to collect and upload run metrics, you need to do the following **inside the training script**: + +* Import the **azuremlsdk** package +``` +library(azuremlsdk) +``` + +* Add the [`log_metric_to_run()`](https://azure.github.io/azureml-sdk-for-r/reference/log_metric_to_run.html) function to track our primary metric, "accuracy", for this experiment. If you have your own training script with several important metrics, simply create a logging call for each one within the script. +``` +log_metric_to_run("accuracy", + sess$run(accuracy, + feed_dict = dict(x = mnist$test$images, y_ = mnist$test$labels))) +``` + +See the [reference](https://azure.github.io/azureml-sdk-for-r/reference/index.html#section-training-experimentation) for the full set of logging methods `log_*()` available from the R SDK. + +## Create an estimator + +An Azure ML **estimator** encapsulates the run configuration information needed for executing a training script on the compute target. Azure ML runs are run as containerized jobs on the specified compute target. By default, the Docker image built for your training job will include R, the Azure ML SDK, and a set of commonly used R packages. See the full list of default packages included [here](https://azure.github.io/azureml-sdk-for-r/reference/r_environment.html). + +To create the estimator, define the following: + +* The directory that contains your scripts needed for training (`source_directory`). All the files in this directory are uploaded to the cluster node(s) for execution. The directory must contain your training script and any additional scripts required. +* The training script that will be executed (`entry_script`). +* The compute target (`compute_target`), in this case the AmlCompute cluster you created earlier. +* Any environment dependencies required for training. Since the training script requires the TensorFlow package, which is not included in the image by default, pass the package name to the `cran_packages` parameter to have it installed in the Docker container where the job will run. See the [`estimator()`](https://azure.github.io/azureml-sdk-for-r/reference/estimator.html) reference for the full set of configurable options. +* Set the `use_gpu = TRUE` flag so the default base GPU Docker image will be built, since the job will be run on a GPU cluster. + +```{r create_estimator, eval=FALSE} +est <- estimator(source_directory = "project_files", + entry_script = "tf_mnist.R", + compute_target = compute_target, + cran_packages = c("tensorflow"), + use_gpu = TRUE) +``` + +## Submit the job + +Finally submit the job to run on your cluster. [`submit_experiment()`](https://azure.github.io/azureml-sdk-for-r/reference/submit_experiment.html) returns a `Run` object that you can then use to interface with the run. + +```{r submit_job, eval=FALSE} +run <- submit_experiment(exp, est) +``` + +You can view the run’s details as a table. Clicking the “Web View” link provided will bring you to Azure Machine Learning studio, where you can monitor the run in the UI. + +```{r eval=FALSE} +view_run_details(run) +``` + +Model training happens in the background. Wait until the model has finished training before you run more code. + +```{r eval=FALSE} +wait_for_run_completion(run, show_output = TRUE) +``` + +## View run metrics +Once your job has finished, you can view the metrics collected during your TensorFlow run. + +```{r get_metrics, eval=FALSE} +metrics <- get_run_metrics(run) +metrics +``` + +## Clean up resources +Delete the resources once you no longer need them. Don't delete any resource you plan to still use. + +Delete the compute cluster: +```{r delete_compute, eval=FALSE} +delete_compute(compute_target) +``` \ No newline at end of file diff --git a/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-setup-schedule-for-a-published-pipeline.ipynb b/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-setup-schedule-for-a-published-pipeline.ipynb index 800258dc..d1653874 100644 --- a/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-setup-schedule-for-a-published-pipeline.ipynb +++ b/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-setup-schedule-for-a-published-pipeline.ipynb @@ -378,7 +378,8 @@ "### Create a schedule for the pipeline using a Datastore\n", "This schedule will run when additions or modifications are made to Blobs in the Datastore.\n", "By default, the Datastore container is monitored for changes. Use the path_on_datastore parameter to instead specify a path on the Datastore to monitor for changes. Note: the path_on_datastore will be under the container for the datastore, so the actual path monitored will be container/path_on_datastore. Changes made to subfolders in the container/path will not trigger the schedule.\n", - "Note: Only Blob Datastores are supported." + "Note: Only Blob Datastores are supported.\n", + "Note: Not supported for CMK workspaces. Please review these [instructions](https://docs.microsoft.com/azure/machine-learning/how-to-trigger-published-pipeline) in order to setup a blob trigger submission schedule with CMK enabled. Also see those instructions to bring your own LogicApp to avoid the schedule triggers per month limit." ] }, { diff --git a/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-with-automated-machine-learning-step.ipynb b/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-with-automated-machine-learning-step.ipynb index cb049d7b..7b1017c6 100644 --- a/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-with-automated-machine-learning-step.ipynb +++ b/how-to-use-azureml/machine-learning-pipelines/intro-to-pipelines/aml-pipelines-with-automated-machine-learning-step.ipynb @@ -76,7 +76,7 @@ "from azureml.core.runconfig import RunConfiguration\n", "from azureml.core.conda_dependencies import CondaDependencies\n", "\n", - "from azureml.train.automl.runtime import AutoMLStep\n", + "from azureml.pipeline.steps import AutoMLStep\n", "\n", "# Check core SDK version number\n", "print(\"SDK version:\", azureml.core.VERSION)" @@ -173,12 +173,7 @@ "source": [ "# create a new RunConfig object\n", "conda_run_config = RunConfiguration(framework=\"python\")\n", - "\n", - "conda_run_config.environment.docker.enabled = True\n", - "conda_run_config.environment.docker.base_image = azureml.core.runconfig.DEFAULT_CPU_IMAGE\n", - "\n", - "cd = CondaDependencies.create(pip_packages=['azureml-sdk[automl]'], \n", - " conda_packages=['numpy', 'py-xgboost<=0.80'])\n", + "cd = CondaDependencies.create(pip_packages=['azureml-sdk[automl]'])\n", "conda_run_config.environment.python.conda_dependencies = cd\n", "\n", "print('run config is ready')" diff --git a/how-to-use-azureml/machine-learning-pipelines/parallel-run/README.md b/how-to-use-azureml/machine-learning-pipelines/parallel-run/README.md index 83ab2730..b7274ae9 100644 --- a/how-to-use-azureml/machine-learning-pipelines/parallel-run/README.md +++ b/how-to-use-azureml/machine-learning-pipelines/parallel-run/README.md @@ -71,7 +71,7 @@ base_image_registry.password = "password" - **models**: zero or more model names already registered in Azure Machine Learning model registry. - **parallel_run_config**: ParallelRunConfig as defined above. - **inputs**: one or more Dataset objects. - - **output**: this should be a PipelineData object encapsulating an Azure BLOB container path. + - **output**: this should be a PipelineData object encapsulating an Azure BLOB container path. - **arguments**: list of custom arguments passed to scoring script (optional) - **allow_reuse**: optional, default value is True. If the inputs remain the same as a previous run, it will make the previous run results immediately available (skips re-computing the step). @@ -121,7 +121,8 @@ pipeline_run.wait_for_completion(show_output=True) # Sample notebooks -- [file-dataset-image-inference-mnist.ipynb](./file-dataset-image-inference-mnist.ipynb) demonstrates how to run batch inference on an MNIST dataset. -- [tabular-dataset-inference-iris.ipynb](./tabular-dataset-inference-iris.ipynb) demonstrates how to run batch inference on an IRIS dataset. +- [file-dataset-image-inference-mnist.ipynb](./file-dataset-image-inference-mnist.ipynb) demonstrates how to run batch inference on an MNIST dataset using FileDataset. +- [tabular-dataset-inference-iris.ipynb](./tabular-dataset-inference-iris.ipynb) demonstrates how to run batch inference on an IRIS dataset using TabularDataset. +- [pipeline-style-transfer.ipynb](../pipeline-style-transfer/pipeline-style-transfer.ipynb) demonstrates using ParallelRunStep in multi-step pipeline and using output from one step as input to ParallelRunStep. ![Impressions](https://PixelServer20190423114238.azurewebsites.net/api/impressions/MachineLearningNotebooks/how-to-use-azureml/machine-learning-pipelines/parallel-run/README.png) diff --git a/how-to-use-azureml/machine-learning-pipelines/parallel-run/file-dataset-image-inference-mnist.yml b/how-to-use-azureml/machine-learning-pipelines/parallel-run/file-dataset-image-inference-mnist.yml index e1727c0a..cd4be086 100644 --- a/how-to-use-azureml/machine-learning-pipelines/parallel-run/file-dataset-image-inference-mnist.yml +++ b/how-to-use-azureml/machine-learning-pipelines/parallel-run/file-dataset-image-inference-mnist.yml @@ -4,3 +4,4 @@ dependencies: - azureml-sdk - azureml-contrib-pipeline-steps - azureml-widgets + - pandas diff --git a/how-to-use-azureml/machine-learning-pipelines/parallel-run/tabular-dataset-inference-iris.yml b/how-to-use-azureml/machine-learning-pipelines/parallel-run/tabular-dataset-inference-iris.yml index 8bbf1c7a..6d1c08a8 100644 --- a/how-to-use-azureml/machine-learning-pipelines/parallel-run/tabular-dataset-inference-iris.yml +++ b/how-to-use-azureml/machine-learning-pipelines/parallel-run/tabular-dataset-inference-iris.yml @@ -4,3 +4,4 @@ dependencies: - azureml-sdk - azureml-contrib-pipeline-steps - azureml-widgets + - pandas diff --git a/how-to-use-azureml/ml-frameworks/pytorch/deployment/train-hyperparameter-tune-deploy-with-pytorch/train-hyperparameter-tune-deploy-with-pytorch.ipynb b/how-to-use-azureml/ml-frameworks/pytorch/deployment/train-hyperparameter-tune-deploy-with-pytorch/train-hyperparameter-tune-deploy-with-pytorch.ipynb index 2489ac1e..4e621cfe 100644 --- a/how-to-use-azureml/ml-frameworks/pytorch/deployment/train-hyperparameter-tune-deploy-with-pytorch/train-hyperparameter-tune-deploy-with-pytorch.ipynb +++ b/how-to-use-azureml/ml-frameworks/pytorch/deployment/train-hyperparameter-tune-deploy-with-pytorch/train-hyperparameter-tune-deploy-with-pytorch.ipynb @@ -535,7 +535,7 @@ "source": [ "from azureml.core.conda_dependencies import CondaDependencies \n", "\n", - "myenv = CondaDependencies.create(pip_packages=['azureml-defaults', 'torch', 'torchvision'])\n", + "myenv = CondaDependencies.create(pip_packages=['azureml-defaults', 'torch', 'torchvision>=0.5.0'])\n", "\n", "with open(\"myenv.yml\",\"w\") as f:\n", " f.write(myenv.serialize_to_string())\n", diff --git a/how-to-use-azureml/ml-frameworks/tensorflow/training/distributed-tensorflow-with-horovod/tf_horovod_word2vec.py b/how-to-use-azureml/ml-frameworks/tensorflow/training/distributed-tensorflow-with-horovod/tf_horovod_word2vec.py index e075d4e8..48305330 100644 --- a/how-to-use-azureml/ml-frameworks/tensorflow/training/distributed-tensorflow-with-horovod/tf_horovod_word2vec.py +++ b/how-to-use-azureml/ml-frameworks/tensorflow/training/distributed-tensorflow-with-horovod/tf_horovod_word2vec.py @@ -37,7 +37,7 @@ input_data = args.input_data print("the input data is at %s" % input_data) # Step 1: Read data. -filename = glob.glob(os.path.join(input_data, '**/text8.zip'), recursive=True)[0] +filename = input_data # Read the data into a list of strings. diff --git a/how-to-use-azureml/ml-frameworks/tensorflow/training/hyperparameter-tune-and-warm-start-with-tensorflow/hyperparameter-tune-and-warm-start-with-tensorflow.ipynb b/how-to-use-azureml/ml-frameworks/tensorflow/training/hyperparameter-tune-and-warm-start-with-tensorflow/hyperparameter-tune-and-warm-start-with-tensorflow.ipynb index 86fc3d9b..4539c436 100644 --- a/how-to-use-azureml/ml-frameworks/tensorflow/training/hyperparameter-tune-and-warm-start-with-tensorflow/hyperparameter-tune-and-warm-start-with-tensorflow.ipynb +++ b/how-to-use-azureml/ml-frameworks/tensorflow/training/hyperparameter-tune-and-warm-start-with-tensorflow/hyperparameter-tune-and-warm-start-with-tensorflow.ipynb @@ -149,7 +149,7 @@ "script_folder = './tf-mnist'\n", "os.makedirs(script_folder, exist_ok=True)\n", "\n", - "exp = Experiment(workspace=ws, name='tf-mnist')" + "exp = Experiment(workspace=ws, name='tf-mnist-2')" ] }, { diff --git a/how-to-use-azureml/monitor-models/data-drift/drift-on-aks.ipynb b/how-to-use-azureml/monitor-models/data-drift/drift-on-aks.ipynb index e0384ef6..9131ed12 100644 --- a/how-to-use-azureml/monitor-models/data-drift/drift-on-aks.ipynb +++ b/how-to-use-azureml/monitor-models/data-drift/drift-on-aks.ipynb @@ -390,15 +390,6 @@ "run = monitor.run(target_date, services, feature_list=feature_list, compute_target='cpu-cluster')" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "time.sleep(1200)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -418,6 +409,24 @@ "# Here we retrieve the individual service run to get its output results and metrics. \n", "\n", "child_run = list(run.get_children())[0]\n", + "child_run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "child_run.wait_for_completion(wait_post_processing=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "results, metrics = monitor.get_output(run_id=child_run.id)" ] }, diff --git a/how-to-use-azureml/track-and-monitor-experiments/logging-api/logging-api.ipynb b/how-to-use-azureml/track-and-monitor-experiments/logging-api/logging-api.ipynb index 33a779e7..1253622b 100644 --- a/how-to-use-azureml/track-and-monitor-experiments/logging-api/logging-api.ipynb +++ b/how-to-use-azureml/track-and-monitor-experiments/logging-api/logging-api.ipynb @@ -100,7 +100,7 @@ "\n", "# Check core SDK version number\n", "\n", - "print(\"This notebook was created using SDK version 1.1.0rc0, you are currently running version\", azureml.core.VERSION)" + "print(\"This notebook was created using SDK version 1.1.0rc1, you are currently running version\", azureml.core.VERSION)" ] }, { diff --git a/how-to-use-azureml/training-with-deep-learning/train-hyperparameter-tune-deploy-with-keras/train-hyperparameter-tune-deploy-with-keras.ipynb b/how-to-use-azureml/training-with-deep-learning/train-hyperparameter-tune-deploy-with-keras/train-hyperparameter-tune-deploy-with-keras.ipynb index 1f8ad67e..508ec236 100644 --- a/how-to-use-azureml/training-with-deep-learning/train-hyperparameter-tune-deploy-with-keras/train-hyperparameter-tune-deploy-with-keras.ipynb +++ b/how-to-use-azureml/training-with-deep-learning/train-hyperparameter-tune-deploy-with-keras/train-hyperparameter-tune-deploy-with-keras.ipynb @@ -1103,13 +1103,11 @@ "metadata": {}, "outputs": [], "source": [ - "models = ws.models\n", - "for name, model in models.items():\n", - " print(\"Model: {}, ID: {}\".format(name, model.id))\n", + "model = ws.models['keras-mlp-mnist']\n", + "print(\"Model: {}, ID: {}\".format('keras-mlp-mnist', model.id))\n", " \n", - "webservices = ws.webservices\n", - "for name, webservice in webservices.items():\n", - " print(\"Webservice: {}, scoring URI: {}\".format(name, webservice.scoring_uri))" + "webservice = ws.webservices['keras-mnist-svc']\n", + "print(\"Webservice: {}, scoring URI: {}\".format('keras-mnist-svc', webservice.scoring_uri))" ] }, { diff --git a/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.ipynb b/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.ipynb index 415fb061..7d2b546b 100644 --- a/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.ipynb +++ b/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.ipynb @@ -23,7 +23,7 @@ "# 04. Train in a remote Linux VM\n", "* Create Workspace\n", "* Create `train.py` file\n", - "* Create and Attach a Remote VM (eg. DSVM) as compute resource.\n", + "* Create and Attach a Remote VM (eg. DSVM) as compute resource\n", "* Upload data files into default datastore\n", "* Configure & execute a run in a few different ways\n", " - Use system-built conda\n", @@ -126,7 +126,7 @@ "metadata": {}, "outputs": [], "source": [ - "# get the default datastore\n", + "# Get the default datastore\n", "ds = ws.get_default_datastore()\n", "print(ds.name, ds.datastore_type, ds.account_name, ds.container_name)" ] @@ -313,11 +313,11 @@ "from azureml.core import ScriptRunConfig\n", "from uuid import uuid4\n", "\n", + "script_arguments = ['--data-folder', dataset.as_named_input('diabetes').as_mount('/tmp/{}'.format(uuid4()))]\n", "src = ScriptRunConfig(source_directory=script_folder, \n", " script='train.py', \n", " # pass the dataset as a parameter to the training script\n", - " arguments=['--data-folder', \n", - " dataset.as_named_input('diabetes').as_mount('/tmp/{}'.format(uuid4()))]\n", + " arguments=script_arguments\n", " ) \n", "\n", "src.run_config.framework = \"python\"\n", @@ -392,14 +392,14 @@ "metadata": {}, "outputs": [], "source": [ - "run = exp.submit(config=src)\n", + " run = exp.submit(config=src)\n", "\n", - "from azureml.exceptions import ActivityFailedException\n", + " from azureml.exceptions import ActivityFailedException\n", "\n", - "try:\n", - " run.wait_for_completion(show_output=True)\n", - "except ActivityFailedException as ex:\n", - " print(ex)" + " try:\n", + " run.wait_for_completion(show_output=True)\n", + " except ActivityFailedException as ex:\n", + " print(ex)" ] }, { @@ -421,7 +421,8 @@ "with open(os.path.join(script_folder, './train2.py'), 'r') as training_script:\n", " print(training_script.read())\n", " \n", - "src.script = \"train2.py\"" + "src.script = \"train2.py\"\n", + "src.arguments = None" ] }, { @@ -493,6 +494,7 @@ "outputs": [], "source": [ "src.script = \"train.py\"\n", + "src.arguments = script_arguments\n", "\n", "run = exp.submit(config=src)\n", "\n", diff --git a/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.yml b/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.yml deleted file mode 100644 index 930604bf..00000000 --- a/how-to-use-azureml/training/train-on-remote-vm/train-on-remote-vm.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: train-on-remote-vm -dependencies: -- matplotlib -- tqdm -- scikit-learn==0.22.1 -- numpy==1.18.1 -- pip: - - azureml-sdk - - azureml-widgets - - azureml-dataprep[fuse,pandas] diff --git a/how-to-use-azureml/work-with-data/datadrift-tutorial/datadrift-tutorial.ipynb b/how-to-use-azureml/work-with-data/datadrift-tutorial/datadrift-tutorial.ipynb index 599d88d6..8459192c 100644 --- a/how-to-use-azureml/work-with-data/datadrift-tutorial/datadrift-tutorial.ipynb +++ b/how-to-use-azureml/work-with-data/datadrift-tutorial/datadrift-tutorial.ipynb @@ -300,28 +300,6 @@ "backfill" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Enable the monitor's pipeline schedule\n", - "\n", - "Turn on a scheduled pipeline which will anlayze the target dataset for drift every `frequency`. Use the latency parameter to adjust the start time of the pipeline. For instance, if it takes 24 hours for my data processing pipelines for data to arrive in the target dataset, set latency to 24. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# enable the pipeline schedule and recieve email alerts\n", - "monitor.enable_schedule()\n", - "\n", - "# disable the pipeline schedule \n", - "#monitor.disable_schedule()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -338,8 +316,7 @@ "outputs": [], "source": [ "# make sure the backfill has completed\n", - "import time\n", - "time.sleep(1200)" + "backfill.wait_for_completion(wait_post_processing=True)" ] }, { @@ -366,9 +343,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## See results in Azure Machine Learning studio (Enterprise only)\n", + "## Enable the monitor's pipeline schedule\n", "\n", - "The below cell will print a link to the monitor in the Azure Machine Learning studio, where the results can be viewed. Alertnatively, use the `show` or `get_results` to get and plot data drift results in Python." + "Turn on a scheduled pipeline which will anlayze the target dataset for drift every `frequency`. Use the latency parameter to adjust the start time of the pipeline. For instance, if it takes 24 hours for my data processing pipelines for data to arrive in the target dataset, set latency to 24. " ] }, { @@ -377,8 +354,11 @@ "metadata": {}, "outputs": [], "source": [ - "link = 'https://ml.azure.com/data/monitor/{}?wsid=/subscriptions/{}/resourcegroups/{}/workspaces/{}&startDate={}&endDate={}'.format(monitor.name, ws.subscription_id, ws.resource_group, ws.name, backfill_start_date.strftime('%Y-%m-%d'), backfill_end_date .strftime('%Y-%m-%d'))\n", - "print(link)" + "# enable the pipeline schedule and recieve email alerts\n", + "monitor.enable_schedule()\n", + "\n", + "# disable the pipeline schedule \n", + "#monitor.disable_schedule()" ] }, { diff --git a/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.ipynb b/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.ipynb new file mode 100644 index 00000000..ed210f6a --- /dev/null +++ b/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.ipynb @@ -0,0 +1,403 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Copyright (c) Microsoft Corporation. All rights reserved.\n", + "\n", + "Licensed under the MIT License." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Impressions](https://PixelServer20190423114238.azurewebsites.net/api/impressions/MachineLearningNotebooks/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction to labeled datasets\n", + "\n", + "Labeled datasets are output from Azure Machine Learning [labeling projects](https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-create-labeling-projects). It captures the reference to the data (e.g. image files) and its labels. \n", + "\n", + "This tutorial introduces the capabilities of labeled datasets and how to use it in training.\n", + "\n", + "Learn how-to:\n", + "\n", + "> * Set up your development environment\n", + "> * Explore labeled datasets\n", + "> * Train a simple deep learning neural network on a remote cluster\n", + "\n", + "## Prerequisite:\n", + "* Understand the [architecture and terms](https://docs.microsoft.com/azure/machine-learning/service/concept-azure-machine-learning-architecture) introduced by Azure Machine Learning\n", + "* Go through Azure Machine Learning [labeling projects](https://docs.microsoft.com/azure/machine-learning/service/how-to-create-labeling-projects) and export the labels as an Azure Machine Learning dataset\n", + "* Go through the [configuration notebook](../../../configuration.ipynb) to:\n", + " * install the latest version of azureml-sdk\n", + " * install the latest version of azureml-contrib-dataset\n", + " * install [PyTorch](https://pytorch.org/)\n", + " * create a workspace and its configuration file (`config.json`)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up your development environment\n", + "\n", + "All the setup for your development work can be accomplished in a Python notebook. Setup includes:\n", + "\n", + "* Importing Python packages\n", + "* Connecting to a workspace to enable communication between your local computer and remote resources\n", + "* Creating an experiment to track all your runs\n", + "* Creating a remote compute target to use for training\n", + "\n", + "### Import packages\n", + "\n", + "Import Python packages you need in this session. Also display the Azure Machine Learning SDK version." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import azureml.core\n", + "import azureml.contrib.dataset\n", + "from azureml.core import Dataset, Workspace, Experiment\n", + "from azureml.contrib.dataset import FileHandlingOption\n", + "\n", + "# check core SDK version number\n", + "print(\"Azure ML SDK Version: \", azureml.core.VERSION)\n", + "print(\"Azure ML Contrib Version\", azureml.contrib.dataset.VERSION)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to workspace\n", + "\n", + "Create a workspace object from the existing workspace. `Workspace.from_config()` reads the file **config.json** and loads the details into an object named `workspace`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load workspace\n", + "workspace = Workspace.from_config()\n", + "print('Workspace name: ' + workspace.name, \n", + " 'Azure region: ' + workspace.location, \n", + " 'Subscription id: ' + workspace.subscription_id, \n", + " 'Resource group: ' + workspace.resource_group, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create experiment and a directory\n", + "\n", + "Create an experiment to track the runs in your workspace and a directory to deliver the necessary code from your computer to the remote resource." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create an ML experiment\n", + "exp = Experiment(workspace=workspace, name='labeled-datasets')\n", + "\n", + "# create a directory\n", + "script_folder = './labeled-datasets'\n", + "os.makedirs(script_folder, exist_ok=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create or Attach existing compute resource\n", + "By using Azure Machine Learning Compute, a managed service, data scientists can train machine learning models on clusters of Azure virtual machines. Examples include VMs with GPU support. In this tutorial, you will create Azure Machine Learning Compute as your training environment. The code below creates the compute clusters for you if they don't already exist in your workspace.\n", + "\n", + "**Creation of compute takes approximately 5 minutes.** If the AmlCompute with that name is already in your workspace the code will skip the creation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core.compute import ComputeTarget, AmlCompute\n", + "from azureml.core.compute_target import ComputeTargetException\n", + "\n", + "# choose a name for your cluster\n", + "cluster_name = \"openhack\"\n", + "\n", + "try:\n", + " compute_target = ComputeTarget(workspace=workspace, name=cluster_name)\n", + " print('Found existing compute target')\n", + "except ComputeTargetException:\n", + " print('Creating a new compute target...')\n", + " compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6', \n", + " max_nodes=4)\n", + "\n", + " # create the cluster\n", + " compute_target = ComputeTarget.create(workspace, cluster_name, compute_config)\n", + "\n", + " # can poll for a minimum number of nodes and for a specific timeout. \n", + " # if no min node count is provided it uses the scale settings for the cluster\n", + " compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)\n", + "\n", + "# use get_status() to get a detailed status for the current cluster. \n", + "print(compute_target.get_status().serialize())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Explore labeled datasets\n", + "\n", + "**Note**: How to create labeled datasets is not covered in this tutorial. To create labeled datasets, you can go through [labeling projects](https://docs.microsoft.com/azure/machine-learning/service/how-to-create-labeling-projects) and export the output labels as Azure Machine Lerning datasets. \n", + "\n", + "`animal_labels` used in this tutorial section is the output from a labeling project, with the task type of \"Object Identification\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get animal_labels dataset from the workspace\n", + "animal_labels = Dataset.get_by_name(workspace, 'animal_labels')\n", + "animal_labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can load labeled datasets into pandas DataFrame. There are 3 file handling option that you can choose to load the data files referenced by the labeled datasets:\n", + "* Streaming: The default option to load data files.\n", + "* Download: Download your data files to a local path.\n", + "* Mount: Mount your data files to a mount point. Mount only works for Linux-based compute, including Azure Machine Learning notebook VM and Azure Machine Learning Compute." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "animal_pd = animal_labels.to_pandas_dataframe(file_handling_option=FileHandlingOption.DOWNLOAD, target_path='./download/', overwrite_download=True)\n", + "animal_pd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import matplotlib.image as mpimg\n", + "\n", + "# read images from downloaded path\n", + "img = mpimg.imread(animal_pd.loc[0,'image_url'])\n", + "imgplot = plt.imshow(img)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also load labeled datasets into [torchvision datasets](https://pytorch.org/docs/stable/torchvision/datasets.html), so that you can leverage on the open source libraries provided by PyTorch for image transformation and training." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from torchvision.transforms import functional as F\n", + "\n", + "# load animal_labels dataset into torchvision dataset\n", + "pytorch_dataset = animal_labels.to_torchvision()\n", + "img = pytorch_dataset[0][0]\n", + "print(type(img))\n", + "\n", + "# use methods from torchvision to transform the img into grayscale\n", + "pil_image = F.to_pil_image(img)\n", + "gray_image = F.to_grayscale(pil_image, num_output_channels=3)\n", + "\n", + "imgplot = plt.imshow(gray_image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train an image classification model\n", + "\n", + " `crack_labels` dataset used in this tutorial section is the output from a labeling project, with the task type of \"Image Classification Multi-class\". We will use this dataset to train an image classification model that classify whether an image has cracks or not." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# get crack_labels dataset from the workspace\n", + "crack_labels = Dataset.get_by_name(workspace, 'crack_labels')\n", + "crack_labels" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Configure Estimator for training\n", + "\n", + "You can ask the system to build a conda environment based on your dependency specification. Once the environment is built, and if you don't change your dependencies, it will be reused in subsequent runs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.core import Environment\n", + "from azureml.core.conda_dependencies import CondaDependencies\n", + "\n", + "conda_env = Environment('conda-env')\n", + "conda_env.python.conda_dependencies = CondaDependencies.create(pip_packages=['azureml-sdk',\n", + " 'azureml-contrib-dataset',\n", + " 'torch','torchvision',\n", + " 'azureml-dataprep[pandas]'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An estimator object is used to submit the run. Azure Machine Learning has pre-configured estimators for common machine learning frameworks, as well as generic Estimator. Create a generic estimator for by specifying\n", + "\n", + "* The name of the estimator object, `est`\n", + "* The directory that contains your scripts. All the files in this directory are uploaded into the cluster nodes for execution. \n", + "* The training script name, train.py\n", + "* The input dataset for training\n", + "* The compute target. In this case you will use the AmlCompute you created\n", + "* The environment definition for the experiment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from azureml.train.estimator import Estimator\n", + "\n", + "est = Estimator(source_directory=script_folder, \n", + " entry_script='train.py',\n", + " inputs=[crack_labels.as_named_input('crack_labels')],\n", + " compute_target=compute_target,\n", + " environment_definition= conda_env)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Submit job to run\n", + "\n", + "Submit the estimator to the Azure ML experiment to kick off the execution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run = exp.submit(est)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "run.wait_for_completion(show_output=True)" + ] + } + ], + "metadata": { + "authors": [ + { + "name": "sihhu" + } + ], + "category": "tutorial", + "compute": [ + "Remote" + ], + "deployment": [ + "None" + ], + "exclude_from_index": false, + "framework": [ + "Azure ML" + ], + "friendly_name": "Introduction to labeled datasets", + "index_order": 1, + "kernelspec": { + "display_name": "Python 3.6", + "language": "python", + "name": "python36" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "star_tag": [ + "featured" + ], + "tags": [ + "Dataset", + "label", + "Estimator" + ], + "task": "Train" + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.yml b/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.yml new file mode 100644 index 00000000..26c3266a --- /dev/null +++ b/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets.yml @@ -0,0 +1,10 @@ +name: labeled-datasets +dependencies: +- pip: + - azureml-sdk + - azureml-dataprep + - pandas + - fuse + - azureml.contrib.dataset + - matplotlib + - torchvision diff --git a/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets/train.py b/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets/train.py new file mode 100644 index 00000000..a4bfc53e --- /dev/null +++ b/how-to-use-azureml/work-with-data/datasets-tutorial/labeled-datasets/labeled-datasets/train.py @@ -0,0 +1,106 @@ +import os +import torchvision +import torchvision.transforms as transforms +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim + +from azureml.core import Dataset, Run +import azureml.contrib.dataset +from azureml.contrib.dataset import FileHandlingOption, LabeledDatasetTask + +run = Run.get_context() + +# get input dataset by name +labeled_dataset = run.input_datasets['crack_labels'] +pytorch_dataset = labeled_dataset.to_torchvision() + + +indices = torch.randperm(len(pytorch_dataset)).tolist() +dataset_train = torch.utils.data.Subset(pytorch_dataset, indices[:40]) +dataset_test = torch.utils.data.Subset(pytorch_dataset, indices[-10:]) + +trainloader = torch.utils.data.DataLoader(dataset_train, batch_size=4, + shuffle=True, num_workers=0) + +testloader = torch.utils.data.DataLoader(dataset_test, batch_size=4, + shuffle=True, num_workers=0) + + +class Net(nn.Module): + def __init__(self): + super(Net, self).__init__() + self.conv1 = nn.Conv2d(3, 6, 5) + self.pool = nn.MaxPool2d(2, 2) + self.conv2 = nn.Conv2d(6, 16, 5) + self.fc1 = nn.Linear(16 * 71 * 71, 120) + self.fc2 = nn.Linear(120, 84) + self.fc3 = nn.Linear(84, 10) + + def forward(self, x): + x = self.pool(F.relu(self.conv1(x))) + x = self.pool(F.relu(self.conv2(x))) + x = x.view(x.size(0), 16 * 71 * 71) + x = F.relu(self.fc1(x)) + x = F.relu(self.fc2(x)) + x = self.fc3(x) + return x + + +net = Net() + +criterion = nn.CrossEntropyLoss() +optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9) + + +for epoch in range(2): # loop over the dataset multiple times + + running_loss = 0.0 + for i, data in enumerate(trainloader, 0): + # get the inputs; data is a list of [inputs, labels] + inputs, labels = data + + # zero the parameter gradients + optimizer.zero_grad() + + # forward + backward + optimize + outputs = net(inputs) + loss = criterion(outputs, labels) + loss.backward() + optimizer.step() + + # print statistics + running_loss += loss.item() + if i % 5 == 4: # print every 5 mini-batches + print('[%d, %5d] loss: %.3f' % + (epoch + 1, i + 1, running_loss / 5)) + running_loss = 0.0 + +print('Finished Training') +classes = trainloader.dataset.dataset.labels +PATH = './cifar_net.pth' +torch.save(net.state_dict(), PATH) + +dataiter = iter(testloader) +images, labels = dataiter.next() + +net = Net() +net.load_state_dict(torch.load(PATH)) + +outputs = net(images) + +_, predicted = torch.max(outputs, 1) + +correct = 0 +total = 0 +with torch.no_grad(): + for data in testloader: + images, labels = data + outputs = net(images) + _, predicted = torch.max(outputs.data, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + +print('Accuracy of the network on the 10 test images: %d %%' % (100 * correct / total)) +pass diff --git a/how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/prepare.py b/how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/prepare.py new file mode 100644 index 00000000..4e8c054a --- /dev/null +++ b/how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/prepare.py @@ -0,0 +1,35 @@ +import os + + +def convert(imgf, labelf, outf, n): + f = open(imgf, "rb") + l = open(labelf, "rb") + o = open(outf, "w") + + f.read(16) + l.read(8) + images = [] + + for i in range(n): + image = [ord(l.read(1))] + for j in range(28 * 28): + image.append(ord(f.read(1))) + images.append(image) + + for image in images: + o.write(",".join(str(pix) for pix in image) + "\n") + f.close() + o.close() + l.close() + + +mounted_input_path = os.environ['fashion_ds'] +mounted_output_path = os.environ['AZUREML_DATAREFERENCE_prepared_fashion_ds'] +os.makedirs(mounted_output_path, exist_ok=True) + +convert(os.path.join(mounted_input_path, 'train-images-idx3-ubyte'), + os.path.join(mounted_input_path, 'train-labels-idx1-ubyte'), + os.path.join(mounted_output_path, 'mnist_train.csv'), 60000) +convert(os.path.join(mounted_input_path, 't10k-images-idx3-ubyte'), + os.path.join(mounted_input_path, 't10k-labels-idx1-ubyte'), + os.path.join(mounted_output_path, 'mnist_test.csv'), 10000) diff --git a/how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/t10k-images-idx3-ubyte b/how-to-use-azureml/work-with-data/datasets-tutorial/pipeline-with-datasets/keras-mnist-fashion/t10k-images-idx3-ubyte new file mode 100644 index 0000000000000000000000000000000000000000..37bac79bc6f002d965f363e0b20514904504a4d9 GIT binary patch literal 7840016 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

(GIx<+Xm|zo` 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�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