Руководство по Обучение моделей классификации изображений с помощью данных MNIST и scikit-learn в Службе машинного обучения AzureTutorial: Train image classification models with MNIST data and scikit-learn using Azure Machine Learning

Применимо к: даБазовый выпуск даКорпоративный выпуск                    (Обновление до выпуска "Корпоративный")APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

В этом руководстве необходимо обучить модель машинного обучения на удаленных вычислительных ресурсах.In this tutorial, you train a machine learning model on remote compute resources. Вы будете использовать рабочий процесс обучения и развертывания для Машинного обучения Azure в Jupyter Notebook для Python.You'll use the training and deployment workflow for Azure Machine Learning in a Python Jupyter notebook. Затем можно использовать записную книжку как шаблон для обучения собственной модели машинного обучения со своими данными.You can then use the notebook as a template to train your own machine learning model with your own data. Это руководство представляет собой первую часть серии, состоящей из двух частей.This tutorial is part one of a two-part tutorial series.

В руководстве показано, как обучить простую модель регрессии для функции логистики с помощью набора данных MNIST и Scikit-learn в Машинном обучении Azure.This tutorial trains a simple logistic regression by using the MNIST dataset and scikit-learn with Azure Machine Learning. MNIST — это популярный набор данных, состоящий из 70 000 изображений в оттенках серого.MNIST is a popular dataset consisting of 70,000 grayscale images. Каждое изображение содержит рукописную цифру размером 28 x 28 пикселей, то есть числа от нуля до девяти.Each image is a handwritten digit of 28 x 28 pixels, representing a number from zero to nine. Целью является создание многоклассового классификатора для идентификации цифры, которую отображает данное изображение.The goal is to create a multi-class classifier to identify the digit a given image represents.

Узнайте, как выполнять следующие действия:Learn how to take the following actions:

  • Настройка среды разработки.Set up your development environment.
  • Подключение к данным и их проверка.Access and examine the data.
  • Обучайте простую логистическую регрессию на удаленном кластере.Train a simple logistic regression model on a remote cluster.
  • Проверка результатов обучения и регистрация наилучшей модели.Review training results and register the best model.

Во второй части этого руководства описано, как выбрать и развернуть модель.You learn how to select a model and deploy it in part two of this tutorial.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don’t have an Azure subscription, create a free account before you begin. Опробуйте бесплатную или платную версию Машинного обучения Azure уже сегодня.Try the free or paid version of Azure Machine Learning today.

Примечание

Код в этой статье протестирован с помощью пакета SDK для Машинного обучения Azure версии 1.0.65.Code in this article was tested with Azure Machine Learning SDK version 1.0.65.

Предварительные требованияPrerequisites

Это руководство и дополняющий его файл utils.py также доступны на сайте GitHub, если вы хотите использовать их в собственной локальной среде.The tutorial and accompanying utils.py file is also available on GitHub if you wish to use it on your own local environment. Выполните pip install azureml-sdk[notebooks] azureml-opendatasets matplotlib, чтобы установить зависимости для этого руководства.Run pip install azureml-sdk[notebooks] azureml-opendatasets matplotlib to install dependencies for this tutorial.

Важно!

Оставшаяся часть этой статьи содержит то же содержимое, что и записная книжка.The rest of this article contains the same content as you see in the notebook.

Перейдите в записную книжку Jupyter, чтобы вы могли просматривать его во время выполнения кода.Switch to the Jupyter notebook now if you want to read along as you run the code. Чтобы выполнить одну ячейку кода в записной книжке, щелкните эту ячейку и нажмите клавиши SHIFT+ВВОД.To run a single code cell in a notebook, click the code cell and hit Shift+Enter. Или запустите всю записную книжку, выбрав Запустить все в верхней части панели инструментов.Or, run the entire notebook by choosing Run all from the top toolbar.

Настройка среды разработкиSet up your development environment

Все настройки для работы по разработке можно сделать в записной книжке Python.All the setup for your development work can be accomplished in a Python notebook. Настройка включает следующие действия:Setup includes the following actions:

  • Импорт пакетов Python.Import Python packages.
  • Подключение к рабочей области, что позволяет локальному компьютеру обмениваться данными с удаленными ресурсами.Connect to a workspace, so that your local computer can communicate with remote resources.
  • Создание эксперимента, чтобы отслеживать все запуски.Create an experiment to track all your runs.
  • Создание удаленного целевого объекта вычислений для использования в обучении.Create a remote compute target to use for training.

Импорт пакетовImport packages

Импортируйте пакеты Python, которые необходимы вам в этом сеансе.Import Python packages you need in this session. Также отобразите версию пакета SDK Службы машинного обучения Azure.Also display the Azure Machine Learning SDK version:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

import azureml.core
from azureml.core import Workspace

# check core SDK version number
print("Azure ML SDK Version: ", azureml.core.VERSION)

Подключение к рабочей областиConnect to a workspace

В существующей рабочей области создайте объект.Create a workspace object from the existing workspace. Workspace.from_config() считывает файл config.json и загружает данные в объект с именем ws.Workspace.from_config() reads the file config.json and loads the details into an object named ws:

# load workspace configuration from the config.json file in the current folder.
ws = Workspace.from_config()
print(ws.name, ws.location, ws.resource_group, sep='\t')

Создание экспериментаCreate an experiment

Чтобы отслеживать сведения о выполнении в рабочей области, создайте эксперимент.Create an experiment to track the runs in your workspace. Рабочая область может содержать несколько экспериментов.A workspace can have multiple experiments:

from azureml.core import Experiment
experiment_name = 'sklearn-mnist'

exp = Experiment(workspace=ws, name=experiment_name)

Создание или подключение существующего целевого объекта вычисленийCreate or attach an existing compute target

Использование Вычислительной среды Машинного обучения Azure (управляемой службы) позволяет специалистам по обработке и анализу данных обучать модели машинного обучения в кластерах виртуальных машин Azure.By using Azure Machine Learning Compute, a managed service, data scientists can train machine learning models on clusters of Azure virtual machines. Часто используются виртуальные машины с поддержкой GPU.Examples include VMs with GPU support. В этом руководстве описано, как создать Вычислительную среду Машинного обучения Azure в качестве среды обучения.In this tutorial, you 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.

Создание целевого объекта вычислений занимает около пяти минут.Creation of the compute target takes about five minutes. Если вычислительный ресурс уже находится в рабочей области, код сразу применяет ее, пропуская процесс создания.If the compute resource is already in the workspace, the code uses it and skips the creation process.

from azureml.core.compute import AmlCompute
from azureml.core.compute import ComputeTarget
import os

# choose a name for your cluster
compute_name = os.environ.get("AML_COMPUTE_CLUSTER_NAME", "cpucluster")
compute_min_nodes = os.environ.get("AML_COMPUTE_CLUSTER_MIN_NODES", 0)
compute_max_nodes = os.environ.get("AML_COMPUTE_CLUSTER_MAX_NODES", 4)

# This example uses CPU VM. For using GPU VM, set SKU to STANDARD_NC6
vm_size = os.environ.get("AML_COMPUTE_CLUSTER_SKU", "STANDARD_D2_V2")


if compute_name in ws.compute_targets:
    compute_target = ws.compute_targets[compute_name]
    if compute_target and type(compute_target) is AmlCompute:
        print('found compute target. just use it. ' + compute_name)
else:
    print('creating a new compute target...')
    provisioning_config = AmlCompute.provisioning_configuration(vm_size=vm_size,
                                                                min_nodes=compute_min_nodes,
                                                                max_nodes=compute_max_nodes)

    # create the cluster
    compute_target = ComputeTarget.create(
        ws, compute_name, provisioning_config)

    # can poll for a minimum number of nodes and for a specific timeout.
    # if no min node count is provided it will use the scale settings for the cluster
    compute_target.wait_for_completion(
        show_output=True, min_node_count=None, timeout_in_minutes=20)

    # For a more detailed view of current AmlCompute status, use get_status()
    print(compute_target.get_status().serialize())

Теперь у вас есть необходимые пакеты и вычислительные ресурсы для обучения модели в облаке.You now have the necessary packages and compute resources to train a model in the cloud.

Изучение данныхExplore data

Прежде чем начинать обучение модели, необходимо понимать, какие данные используются для ее обучения.Before you train a model, you need to understand the data that you use to train it. Из этого раздела вы узнаете, как выполнять следующие действия.In this section you learn how to:

  • Скачивание набора данных MNIST.Download the MNIST dataset.
  • Отображение примеров изображений.Display some sample images.

Скачивание набора данных MNISTDownload the MNIST dataset

Используйте Открытые наборы данных Azure для получения необработанных файлов данных MNIST.Use Azure Open Datasets to get the raw MNIST data files. Открытые наборы данных Azure — это проверенные общедоступные наборы данных, которые можно использовать для добавления функций конкретных сценариев в решения машинного обучения для создания более точных моделей.Azure Open Datasets are curated public datasets that you can use to add scenario-specific features to machine learning solutions for more accurate models. Каждый набор данных использует соответствующий класс (в данном случае — MNIST) для получения данных различными способами.Each dataset has a corresponding class, MNIST in this case, to retrieve the data in different ways.

Этот код получает данные в виде объекта FileDataset, который является подклассом Dataset.This code retrieves the data as a FileDataset object, which is a subclass of Dataset. FileDataset ссылается на один или несколько файлов в любом формате, размещенных в хранилищах данных или доступных по общедоступным URL-адресам.A FileDataset references single or multiple files of any format in your datastores or public urls. С помощью этого класса вы можете скачивать их или подключать к вычислительной среде, создав ссылку на расположение источника данных.The class provides you with the ability to download or mount the files to your compute by creating a reference to the data source location. Кроме того, вы регистрируете набор данных в своей рабочей области, чтобы упростить получение данных во время обучения.Additionally, you register the Dataset to your workspace for easy retrieval during training.

Чтобы узнать больше о наборах данных и их использовании в пакете SDK, ознакомьтесь с этим практическим руководством.Follow the how-to to learn more about Datasets and their usage in the SDK.

from azureml.core import Dataset
from azureml.opendatasets import MNIST

data_folder = os.path.join(os.getcwd(), 'data')
os.makedirs(data_folder, exist_ok=True)

mnist_file_dataset = MNIST.get_file_dataset()
mnist_file_dataset.download(data_folder, overwrite=True)

mnist_file_dataset = mnist_file_dataset.register(workspace=ws,
                                                 name='mnist_opendataset',
                                                 description='training and test dataset',
                                                 create_new_version=True)

Отображение некоторых примеров изображенийDisplay some sample images

Загрузите сжатые файлы в массивы numpy.Load the compressed files into numpy arrays. Затем с помощью matplotlib постройте график 30 случайных изображений из набора данных с подписями над ними.Then use matplotlib to plot 30 random images from the dataset with their labels above them. На этом шаге потребуется функция load_data, которая содержится в файле util.py.This step requires a load_data function that's included in an util.py file. Этот файл находится в папке примера.This file is included in the sample folder. Разместите его в той же папке, где находится эта записная книжка.Make sure it's placed in the same folder as this notebook. Функция load_data выполняет анализ сжатых файлов, преобразовывая их в массивы numpy.The load_data function simply parses the compressed files into numpy arrays.

# make sure utils.py is in the same directory as this code
from utils import load_data

# note we also shrink the intensity values (X) from 0-255 to 0-1. This helps the model converge faster.
X_train = load_data(os.path.join(data_folder, "train-images-idx3-ubyte.gz"), False) / 255.0
X_test = load_data(os.path.join(data_folder, "t10k-images-idx3-ubyte.gz"), False) / 255.0
y_train = load_data(os.path.join(data_folder, "train-labels-idx1-ubyte.gz"), True).reshape(-1)
y_test = load_data(os.path.join(data_folder, "t10k-labels-idx1-ubyte.gz"), True).reshape(-1)

# now let's show some randomly chosen images from the traininng set.
count = 0
sample_size = 30
plt.figure(figsize=(16, 6))
for i in np.random.permutation(X_train.shape[0])[:sample_size]:
    count = count + 1
    plt.subplot(1, sample_size, count)
    plt.axhline('')
    plt.axvline('')
    plt.text(x=10, y=-10, s=y_train[i], fontsize=18)
    plt.imshow(X_train[i].reshape(28, 28), cmap=plt.cm.Greys)
plt.show()

Случайный пример изображений приведен ниже.A random sample of images displays:

Случайный пример изображений

Теперь у вас есть представление о том, как выглядят эти изображения, и прогноз ожидаемого результата.Now you have an idea of what these images look like and the expected prediction outcome.

Обучение на удаленном кластереTrain on a remote cluster

Для выполнения этой задачи отправьте задание в кластер удаленного обучения, который мы настроили ранее.For this task, submit the job to the remote training cluster you set up earlier. Чтобы отправить задание, нужно:To submit a job you:

  • создать каталог;Create a directory
  • Создание сценария обученияCreate a training script
  • Создание объекта оценщикаCreate an estimator object
  • отправить задание.Submit the job

создать каталог;Create a directory

Создайте каталог для доставки необходимого кода с компьютера на удаленный ресурс.Create a directory to deliver the necessary code from your computer to the remote resource.

script_folder = os.path.join(os.getcwd(), "sklearn-mnist")
os.makedirs(script_folder, exist_ok=True)

Создание сценария обученияCreate a training script

Чтобы отправить задание в кластер, необходимо сначала создать сценарий обучения.To submit the job to the cluster, first create a training script. Для создания сценария обучения выполните следующий код, который называется train.py, в каталоге, который был только что создан.Run the following code to create the training script called train.py in the directory you just created.

%%writefile $script_folder/train.py

import argparse
import os
import numpy as np
import glob

from sklearn.linear_model import LogisticRegression
from sklearn.externals import joblib

from azureml.core import Run
from utils import load_data

# let user feed in 2 parameters, the dataset to mount or download, and the regularization rate of the logistic regression model
parser = argparse.ArgumentParser()
parser.add_argument('--data-folder', type=str, dest='data_folder', help='data folder mounting point')
parser.add_argument('--regularization', type=float, dest='reg', default=0.01, help='regularization rate')
args = parser.parse_args()

data_folder = args.data_folder
print('Data folder:', data_folder)

# load train and test set into numpy arrays
# note we scale the pixel intensity values to 0-1 (by dividing it with 255.0) so the model can converge faster.
X_train = load_data(glob.glob(os.path.join(data_folder, '**/train-images-idx3-ubyte.gz'), recursive=True)[0], False) / 255.0
X_test = load_data(glob.glob(os.path.join(data_folder, '**/t10k-images-idx3-ubyte.gz'), recursive=True)[0], False) / 255.0
y_train = load_data(glob.glob(os.path.join(data_folder, '**/train-labels-idx1-ubyte.gz'), recursive=True)[0], True).reshape(-1)
y_test = load_data(glob.glob(os.path.join(data_folder, '**/t10k-labels-idx1-ubyte.gz'), recursive=True)[0], True).reshape(-1)
print(X_train.shape, y_train.shape, X_test.shape, y_test.shape, sep = '\n')

# get hold of the current run
run = Run.get_context()

print('Train a logistic regression model with regularization rate of', args.reg)
clf = LogisticRegression(C=1.0/args.reg, solver="liblinear", multi_class="auto", random_state=42)
clf.fit(X_train, y_train)

print('Predict the test set')
y_hat = clf.predict(X_test)

# calculate accuracy on the prediction
acc = np.average(y_hat == y_test)
print('Accuracy is', acc)

run.log('regularization rate', np.float(args.reg))
run.log('accuracy', np.float(acc))

os.makedirs('outputs', exist_ok=True)
# note file saved in the outputs folder is automatically uploaded into experiment record
joblib.dump(value=clf, filename='outputs/sklearn_mnist_model.pkl')

Обратите внимание на то, как сценарий получает данные и сохраняет модели.Notice how the script gets data and saves models:

  • Скрипт обучения считывает аргумент, чтобы найти каталог с данными.The training script reads an argument to find the directory that contains the data. При отправке задания позже вы указываете хранилище данных для этого аргумента: parser.add_argument('--data-folder', type=str, dest='data_folder', help='data directory mounting point').When you submit the job later, you point to the datastore for this argument: parser.add_argument('--data-folder', type=str, dest='data_folder', help='data directory mounting point')

  • Скрипт обучения сохраняет модель в каталог с именем outputs.The training script saves your model into a directory named outputs. Все записи в этом каталоге автоматически передаются в рабочую область.Anything written in this directory is automatically uploaded into your workspace. Вы будете обращаться к модели из этого каталога далее в этом руководстве.You access your model from this directory later in the tutorial. joblib.dump(value=clf, filename='outputs/sklearn_mnist_model.pkl')

  • Для правильной загрузки набора данных учебный скрипт требует файл utils.py.The training script requires the file utils.py to load the dataset correctly. Следующий код копирует utils.py в script_folder, чтобы получить доступ к файлу вместе со сценарием обучения на удаленном ресурсе.The following code copies utils.py into script_folder so that the file can be accessed along with the training script on the remote resource.

    import shutil
    shutil.copy('utils.py', script_folder)
    

Создание оценщикаCreate an estimator

Объект оценщика SKLearn используется для отправки потокового выполнения.An SKLearn estimator object is used to submit the run. Создайте оценщик, выполнив следующий код, который определяет следующие элементы:Create your estimator by running the following code to define these items:

  • Имя оценщика — est.The name of the estimator object, est.
  • Выберите каталог, который содержит скрипт.The directory that contains your scripts. Все файлы в этом каталоге передаются в узел кластера для выполнения.All the files in this directory are uploaded into the cluster nodes for execution.
  • Целевой объект вычисления.The compute target. В этом примере используется созданный вычислительный кластер Службы машинного обучения Azure.In this case, you use the Azure Machine Learning compute cluster you created.
  • Имя скрипта обучения — train.py.The training script name, train.py.
  • Параметры, требуемые от скрипта обучения.Parameters required from the training script.

В этом руководстве целевой средой является AMLCompute.In this tutorial, this target is AmlCompute. Все файлы в папке скриптов передаются для выполнения в узлы кластера.All files in the script folder are uploaded into the cluster nodes for run. Параметр data_folder настраивается на использование хранилища данных.The data_folder is set to use the dataset. Для начала создайте объект среды, в котором указаны все необходимые для обучения зависимости.First create an environment object that specifies the dependencies required for training.

from azureml.core.environment import Environment
from azureml.core.conda_dependencies import CondaDependencies

env = Environment('my_env')
cd = CondaDependencies.create(pip_packages=['azureml-sdk','scikit-learn','azureml-dataprep[pandas,fuse]>=1.1.14'])
env.python.conda_dependencies = cd

Затем создайте эмулятор со следующим кодом.Then create the estimator with the following code.

from azureml.train.sklearn import SKLearn

script_params = {
    '--data-folder': mnist_file_dataset.as_named_input('mnist_opendataset').as_mount(),
    '--regularization': 0.5
}

est = SKLearn(source_directory=script_folder,
              script_params=script_params,
              compute_target=compute_target,
              environment_definition=env, 
              entry_script='train.py')

Отправка задания в кластерSubmit the job to the cluster

Запустите эксперимент, отправив объект оценщика.Run the experiment by submitting the estimator object:

run = exp.submit(config=est)
run

Так как вызов является асинхронным, сразу после запуска задания он возвращает состояние Preparing (Подготовка) или Running (Выполнение).Because the call is asynchronous, it returns a Preparing or Running state as soon as the job is started.

Мониторинг удаленного выполненияMonitor a remote run

Обычно первый запуск занимает около 10 минут.In total, the first run takes about 10 minutes. Но для последующих запусков используется тот же образ, если зависимости скрипта не изменяются.But for subsequent runs, as long as the script dependencies don't change, the same image is reused. Благодаря этому запуск контейнера будет намного быстрее.So the container startup time is much faster.

Что происходит, пока вы ожидаете завершения?What happens while you wait:

  • Создание образа. Создается образ Docker, который соответствует среде Python, указанной в оценщике.Image creation: A Docker image is created that matches the Python environment specified by the estimator. Изображение загружается в рабочую область.The image is uploaded to the workspace. Создание и отправка изображений занимает около пяти минут.Image creation and uploading takes about five minutes.

    Этот этап выполняется один раз для каждой среды Python, а для последующих запусков контейнер помещается в кэш.This stage happens once for each Python environment because the container is cached for subsequent runs. Во время создания образа журналы будут отправлены в журнал выполнения.During image creation, logs are streamed to the run history. С помощью этих журналов вы можете отслеживать ход создания образа.You can monitor the image creation progress by using these logs.

  • Масштабирование. Если для выполнения на удаленном кластере требуется больше узлов, чем доступно в текущий момент, дополнительные узлы добавляются автоматически.Scaling: If the remote cluster requires more nodes to do the run than currently available, additional nodes are added automatically. Масштабирование обычно занимает около пяти минут.Scaling typically takes about five minutes.

  • Running. На этом этапе необходимые скрипты и файлы отправляются на целевой объект вычислений.Running: In this stage, the necessary scripts and files are sent to the compute target. Затем подключаются или копируются хранилища данных.Then datastores are mounted or copied. После этого выполняется entry_script.And then the entry_script is run. Пока выполняется задание, стандартный выход stdout и каталог ./logs направляются в журнал выполнения.While the job is running, stdout and the ./logs directory are streamed to the run history. С помощью этих журналов вы можете отслеживать ход создания образа.You can monitor the run's progress by using these logs.

  • Постобработка. Каталог ./outputs завершенного выполнения копируется в журнал выполнения в рабочей области, чтобы вы могли обращаться к этим результатам.Post-processing: The ./outputs directory of the run is copied over to the run history in your workspace, so you can access these results.

Ход выполнения запущенного задания можно контролировать несколькими способами.You can check the progress of a running job in several ways. В этом руководстве используются мини-приложение Jupyter и метод wait_for_completion.This tutorial uses a Jupyter widget and a wait_for_completion method.

Мини-приложение JupyterJupyter widget

Отслеживайте ход выполнения с помощью мини-приложения Jupyter.Watch the progress of the run with a Jupyter widget. Как и отправка выполнения, мини-приложение работает асинхронно и в реальном времени предоставляет обновления каждые 10–15 секунд, пока не завершит задание.Like the run submission, the widget is asynchronous and provides live updates every 10 to 15 seconds until the job finishes:

from azureml.widgets import RunDetails
RunDetails(run).show()

В конце обучения мини-приложение будет выглядеть следующим образом:The widget will look like the following at the end of training:

Мини-приложение записной книжки

Если необходимо отменить выполнение, вы можете выполнить эти инструкции.If you need to cancel a run, you can follow these instructions.

Получение результатов записи по завершенииGet log results upon completion

Обучение и мониторинг модели происходит в фоновом режиме.Model training and monitoring happen in the background. Прежде, чем выполнять другой код, дождитесь завершения обучения модели.Wait until the model has finished training before you run more code. wait_for_completion позволяет узнать, когда завершится обучение модели.Use wait_for_completion to show when the model training is finished:

run.wait_for_completion(show_output=False)  # specify True for a verbose log

Отображение результатов потокового выполненияDisplay run results

Теперь у вас есть модель, которую обучили на удаленном кластере.You now have a model trained on a remote cluster. Извлеките точность модели, выполнив такую команду.Retrieve the accuracy of the model:

print(run.get_metrics())

В выходных данных показано, что точность удаленной модели — 0,9204.The output shows the remote model has accuracy of 0.9204:

{'regularization rate': 0.8, 'accuracy': 0.9204}

В следующем руководстве эта модель рассматривается подробнее.In the next tutorial, you explore this model in more detail.

Регистрация моделиRegister model

На последнем шаге скрипт обучения записал файл outputs/sklearn_mnist_model.pkl в каталог с именем outputs на виртуальной машине кластера, где выполнялось задание.The last step in the training script wrote the file outputs/sklearn_mnist_model.pkl in a directory named outputs in the VM of the cluster where the job is run. Все содержимое специального каталога outputs автоматически отправляется в рабочую область.outputs is a special directory in that all content in this directory is automatically uploaded to your workspace. Это содержимое отображается в записи о выполнении эксперимента в рабочей области.This content appears in the run record in the experiment under your workspace. Теперь файл модели также доступен в рабочей области.So the model file is now also available in your workspace.

Вы увидите файлы, связанные с этим выполнением.You can see files associated with that run:

print(run.get_file_names())

Зарегистрируйте модель в рабочей области, чтобы вы или другие участники смогли позже запросить, проверить и развернуть ее.Register the model in the workspace, so that you or other collaborators can later query, examine, and deploy this model:

# register model
model = run.register_model(model_name='sklearn_mnist',
                           model_path='outputs/sklearn_mnist_model.pkl')
print(model.name, model.id, model.version, sep='\t')

Очистка ресурсовClean up resources

Важно!

Созданные ресурсы могут использоваться в качестве необходимых компонентов при работе с другими руководствами по Машинному обучению Azure.The resources you created can be used as prerequisites to other Azure Machine Learning tutorials and how-to articles.

Если вы не планируете использовать созданные ресурсы, удалите их, чтобы с вас не взималась плата.If you don't plan to use the resources you created, delete them, so you don't incur any charges:

  1. На портале Azure выберите Группы ресурсов в левой части окна.In the Azure portal, select Resource groups on the far left.

    Удаление ресурсов на портале AzureDelete in the Azure portal

  2. В списке выберите созданную группу ресурсов.From the list, select the resource group you created.

  3. Выберите Удалить группу ресурсов.Select Delete resource group.

  4. Введите имя группы ресурсов.Enter the resource group name. Теперь щелкните Удалить.Then select Delete.

Вычислительный кластер Машинного обучения Azure можно удалить.You can also delete just the Azure Machine Learning Compute cluster. Но для него включено автомасштабирование с минимальным размером, равным нулю.However, autoscale is turned on, and the cluster minimum is zero. Это означает, что этот ресурс не создает дополнительных расходов, когда он не используется.So this particular resource won't incur additional compute charges when not in use:

# optionally, delete the Azure Machine Learning Compute cluster
compute_target.delete()

Дополнительная информацияNext steps

В рамках этого руководства по Машинному обучению Azure с помощью Python вы выполнили такие задачи:In this Azure Machine Learning tutorial, you used Python for the following tasks:

  • настроили среду разработки;Set up your development environment.
  • Подключение к данным и их проверка.Access and examine the data.
  • Обучение нескольких моделей на удаленном кластере с помощью популярной библиотеки машинного обучения scikit-learn.Train multiple models on a remote cluster using the popular scikit-learn machine learning library
  • Проверка сведений об обучении и регистрация наилучшей модели.Review training details and register the best model.

Теперь вы готовы развернуть зарегистрированную модель с помощью инструкций, представленных в следующей части серии руководств.You're ready to deploy this registered model by using the instructions in the next part of the tutorial series: