Обучение и регистрация модели классификации keras с помощью Машинное обучение AzureTrain and register a Keras classification model with Azure Machine Learning

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

В этой статье показано, как обучить и зарегистрировать модель классификации keras, построенную на основе TensorFlow с помощью Машинное обучение Azure.This article shows you how to train and register a Keras classification model built on TensorFlow using Azure Machine Learning. Он использует популярный набор данных MNIST для классификации рукописных цифр с помощью глубокой нейронной сети (DNN), созданной с помощью библиотеки keras Python , работающей поверх TensorFlow.It uses the popular MNIST dataset to classify handwritten digits using a deep neural network (DNN) built using the Keras Python library running on top of TensorFlow.

Keras — это высокоуровневый API нейронной сети, который может работать над другими популярными DNN платформами для упрощения разработки.Keras is a high-level neural network API capable of running top of other popular DNN frameworks to simplify development. С Машинное обучение Azure можно быстро масштабировать задания обучения с помощью эластичных облачных ресурсов.With Azure Machine Learning, you can rapidly scale out training jobs using elastic cloud compute resources. Вы также можете отвестись к обучающим запускам, моделям версий, развертыванию моделей и т. д.You can also track your training runs, version models, deploy models, and much more.

Независимо от того, разрабатываете ли вы модель keras с нуля или используете существующую модель в облаке, Машинное обучение Azure может помочь в создании моделей, готовых для производства.Whether you're developing a Keras model from the ground-up or you're bringing an existing model into the cloud, Azure Machine Learning can help you build production-ready models.

Сведения о различиях между машинным обучением и глубоким обучением см. в этой статье .See the conceptual article for information on the differences between machine learning and deep learning.

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

Запустите этот код в любой из этих сред:Run this code on either of these environments:

  • Машинное обучение Azure виртуальной машины записной книжки — Загрузка или установка не требуетсяAzure Machine Learning Notebook VM - no downloads or installation necessary

    • Выполните инструкции из учебника Настройка среды и рабочей области , чтобы создать выделенный сервер записной книжки, предварительно загруженный с помощью пакета SDK и примера репозитория.Complete the Tutorial: Setup environment and workspace to create a dedicated notebook server pre-loaded with the SDK and the sample repository.
    • В папке Samples на сервере записной книжки найдите готовую и развернутую записную книжку, перейдя к этому каталогу: практические советы по использованию azureml > обучающие материалы с-глубокими обучениями > Train-i Parameter-Настройка-Deploy-with-keras .In the samples folder on the notebook server, find a completed and expanded notebook by navigating to this directory: how-to-use-azureml > training-with-deep-learning > train-hyperparameter-tune-deploy-with-keras folder.
  • Собственный сервер Jupyter NotebookYour own Jupyter Notebook server

    Вы также можете найти завершенную Jupyter Notebook версию этого руководства на странице примеров GitHub.You can also find a completed Jupyter Notebook version of this guide on the GitHub samples page. Записная книжка включает в себя развернутые разделы, охватывающие интеллектуальные настройки, развертывание моделей и мини-приложения записных книжек.The notebook includes expanded sections covering intelligent hyperparameter tuning, model deployment, and notebook widgets.

Настройка экспериментаSet up the experiment

В этом разделе выполняется настройка обучающего эксперимента путем загрузки требуемых пакетов Python, инициализации рабочей области, создания эксперимента и отправки обучающих данных и сценариев обучения.This section sets up the training experiment by loading the required python packages, initializing a workspace, creating an experiment, and uploading the training data and training scripts.

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

Сначала импортируйте необходимые библиотеки Python.First, import the necessary Python libraries.

import os
import azureml
from azureml.core import Experiment
from azureml.core import Workspace, Run
from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

Инициализация рабочей областиInitialize a workspace

Машинное обучение Azure Рабочая область — это ресурс верхнего уровня для службы.The Azure Machine Learning workspace is the top-level resource for the service. Он обеспечивает централизованное расположение для работы со всеми создаваемыми артефактами.It provides you with a centralized place to work with all the artifacts you create. В пакете SDK для Python можно получить доступ к артефактам рабочей области, создав объект workspace .In the Python SDK, you can access the workspace artifacts by creating a workspace object.

Создайте объект рабочей области из файла config.json, созданного в разделе Предварительные требования.Create a workspace object from the config.json file created in the prerequisites section.

ws = Workspace.from_config()

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

Создайте эксперимент с именем "keras-mnist" в рабочей области.Create an experiment called "keras-mnist" in your workspace.

exp = Experiment(workspace=ws, name='keras-mnist')

Создание файлового набора данныхCreate a file dataset

Объект FileDataset ссылается на один или несколько файлов в хранилище данных рабочей области или общедоступных URL-адресов.A FileDataset object references one or multiple files in your workspace datastore or public urls. Это могут быть файлы любого формата, и с помощью этого класса вы сможете скачивать их или подключать к вычислительной среде.The files can be of any format, and the class provides you with the ability to download or mount the files to your compute. Создавая FileDataset, вы одновременно создаете ссылку на расположение источника данных.By creating a FileDataset, you create a reference to the data source location. Любые преобразования, примененные к такому набору данных, будут сохранены и в исходном наборе данных.If you applied any transformations to the data set, they will be stored in the data set as well. Данные хранятся только в исходном расположении, а значит не потребуется лишних расходов на хранение.The data remains in its existing location, so no extra storage cost is incurred. Дополнительные сведения см. в соответствующем практическом руководстве по пакету Dataset.See the how-to guide on the Dataset package for more information.

from azureml.core.dataset import Dataset

web_paths = [
            'http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz',
            'http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz',
            'http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz',
            'http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz'
            ]
dataset = Dataset.File.from_files(path=web_paths)

Используйте метод register(), чтобы зарегистрировать набор данных в рабочей области, чтобы предоставить доступ к ним другим пользователям, повторно использовать их в различных экспериментах и называть их по имени в обучающем скрипте.Use the register() method to register the data set to your workspace so they can be shared with others, reused across various experiments, and referred to by name in your training script.

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

Создание целевого объекта вычисленийCreate a compute target

Создайте целевой объект вычислений для выполнения задания TensorFlow.Create a compute target for your TensorFlow job to run on. В этом примере создайте кластерный Машинное обучение Azure вычислений с поддержкой GPU.In this example, create a GPU-enabled Azure Machine Learning compute cluster.

cluster_name = "gpucluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)

Дополнительные сведения о целевых объектах вычислений см. в статье что такое целевые показатели вычислений .For more information on compute targets, see the what is a compute target article.

Создание средства оценки TensorFlow и импорт kerasCreate a TensorFlow estimator and import Keras

Средство оценки TensorFlow предоставляет простой способ запуска заданий обучения TensorFlow в целевом объекте вычислений.The TensorFlow estimator provides a simple way of launching TensorFlow training jobs on compute target. Так как keras выполняется поверх TensorFlow, вы можете использовать Оценщик TensorFlow и импортировать библиотеку keras с помощью аргумента pip_packages.Since Keras runs on top of TensorFlow, you can use the TensorFlow estimator and import the Keras library using the pip_packages argument.

Сначала получите данные из хранилища данных рабочей области с помощью класса Dataset.First get the data from the workspace datastore using the Dataset class.

dataset = Dataset.get_by_name(ws, 'mnist dataset')

# list the files referenced by mnist dataset
dataset.to_path()

Оценщик TensorFlow реализуется с помощью универсального класса estimator , который можно использовать для поддержки любой платформы.The TensorFlow estimator is implemented through the generic estimator class, which can be used to support any framework. Кроме того, создайте словарь script_params, содержащий настройки параметров DNN.Additionally, create a dictionary script_params that contains the DNN hyperparameter settings. Дополнительные сведения о учебных моделях с помощью универсального средства оценки см. в статье обучение моделей с машинное обучение Azure помощью средства оценки .For more information about training models using the generic estimator, see train models with Azure Machine Learning using estimator

from azureml.train.dnn import TensorFlow

script_params = {
    '--data-folder': dataset.as_named_input('mnist').as_mount(),
    '--batch-size': 50,
    '--first-layer-neurons': 300,
    '--second-layer-neurons': 100,
    '--learning-rate': 0.001
}

est = TensorFlow(source_directory=script_folder,
                 entry_script='keras_mnist.py',
                 script_params=script_params,
                 compute_target=compute_target,
                 pip_packages=['keras', 'matplotlib'],
                 use_gpu=True)

Отправка запускаSubmit a run

Объект Run предоставляет интерфейс для журнала выполнения во время выполнения задания и после его завершения.The Run object provides the interface to the run history while the job is running and after it has completed.

run = exp.submit(est)
run.wait_for_completion(show_output=True)

При выполнении выполнения он проходит следующие этапы.As the Run is executed, it goes through the following stages:

  • Подготовка. образ DOCKER создается в соответствии с оценкой TensorFlow.Preparing: A docker image is created according to the TensorFlow estimator. Образ отправляется в реестр контейнеров рабочей области и кэшируется для последующего выполнения.The image is uploaded to the workspace's container registry and cached for later runs. Журналы также передаются в журнал выполнения и могут быть просмотрены для отслеживания хода выполнения.Logs are also streamed to the run history and can be viewed to monitor progress.

  • Масштабирование. Кластер пытается выполнить масштабирование, если кластеру Batch AI требуется больше узлов для выполнения выполнения, чем в настоящее время доступно.Scaling: The cluster attempts to scale up if the Batch AI cluster requires more nodes to execute the run than are currently available.

  • Выполняется: все скрипты в папке Script передаются в целевой объект вычислений, хранилища данных подключаются или копируются, а entry_script выполняется.Running: All scripts in the script folder are uploaded to the compute target, data stores are mounted or copied, and the entry_script is executed. Выходные данные из STDOUT и папки/логс передаются в журнал выполнения и могут использоваться для наблюдения за выполнением.Outputs from stdout and the ./logs folder are streamed to the run history and can be used to monitor the run.

  • Пост-обработка. папка/Outputs для выполнения копируется в журнал выполнения.Post-Processing: The ./outputs folder of the run is copied over to the run history.

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

После обучения модели DNN можно зарегистрировать ее в рабочей области.Once you've trained the DNN model, you can register it to your workspace. Регистрация модели позволяет хранить и отменять версии моделей в рабочей области, чтобы упростить Управление моделями и их развертывание.Model registration lets you store and version your models in your workspace to simplify model management and deployment.

model = run.register_model(model_name='keras-dnn-mnist', model_path='outputs/model')

Совет

Только что зарегистрированная модель развертывается точно так же, как и любая другая Зарегистрированная модель в Машинное обучение Azure, независимо от того, какой механизм оценки использовался для обучения.The model you just registered is deployed the exact same way as any other registered model in Azure Machine Learning, regardless of which estimator you used for training. Руководство по развертыванию содержит раздел, посвященный регистрации моделей, но можно сразу перейти к созданию целевого объекта вычислений для развертывания, так как у вас уже есть Зарегистрированная модель.The deployment how-to contains a section on registering models, but you can skip directly to creating a compute target for deployment, since you already have a registered model.

Также можно скачать локальную копию модели.You can also download a local copy of the model. Это может быть полезно для выполнения дополнительной проверки модели локально.This can be useful for doing additional model validation work locally. В скрипте обучения mnist-keras.pyобъект хранителя сохраняет модель в локальную папку (локальную для целевого объекта вычислений).In the training script, mnist-keras.py, a TensorFlow saver object persists the model to a local folder (local to the compute target). Чтобы скачать копию из хранилища данных, можно использовать объект Run.You can use the Run object to download a copy from datastore.

# Create a model folder in the current directory
os.makedirs('./model', exist_ok=True)

for f in run.get_file_names():
    if f.startswith('outputs/model'):
        output_file_path = os.path.join('./model', f.split('/')[-1])
        print('Downloading from {} to {} ...'.format(f, output_file_path))
        run.download_file(name=f, output_file_path=output_file_path)

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

В этой статье вы обучили и зарегистрировали модель keras на Машинное обучение Azure.In this article, you trained and registered a Keras model on Azure Machine Learning. Чтобы узнать, как развернуть модель, перейдите к статье о развертывании модели.To learn how to deploy a model, continue on to our model deployment article.