Обучение scikitам Python и моделям глубокого обучения в AzureTraining of Python scikit-learn and deep learning models on Azure

В этой эталонной архитектуре представлены рекомендации по настройке параметров (обучающие параметры) моделей Python.This reference architecture shows recommended practices for tuning the hyperparameters (training parameters) of python models. Здесь рассматриваются два сценария: Настройка параметров scikit- Learning Models и модели глубокого обучения с графическими процессорами.Two scenarios are covered: hyperparameter tuning of scikit-learn models and deep learning models with GPUs. Две эталонные реализации для этой архитектуры доступны на GitHub, одна для моделей scikit и одна для моделей глубокого обучения .Two reference implementation for this architecture are available on GitHub, one for scikit-learn models and one for deep learning models.

Диаграмма архитектуры

СценарииScenarios

Сценарий 1. часто задаваемые вопросы о сопоставлении.Scenario 1: FAQ matching. Проблема, описанная здесь, часто запрашивает вопросы и ответы.The problem addressed here is Frequently Asked Question (FAQ) matching. В этом сценарии используется набор данных вопросов Stack Overflow , которые содержат исходные вопросы, помеченные тегами JavaScript, дублирующиеся вопросы и ответы на них.This scenario uses a subset of Stack Overflow question data that includes original questions tagged as JavaScript, their duplicate questions, and their answers. Он настраивает конвейер scikit-учиться для прогнозирования вероятности того, что дублирующийся вопрос соответствует одному из исходных вопросов.It tunes a scikit-learn pipeline to predict the probability that a duplicate question matches one of the original questions.

Обработка в этом машинное обучение Azure конвейерном сценарии включает следующие шаги.Processing in this Azure Machine Learning pipeline scenario involves the following steps:

  1. Сценарий Python для обучения отправляется в машинное обучение Azure.The training Python script is submitted to Azure Machine Learning.

  2. Скрипт выполняется в контейнерах DOCKER, созданных на каждом узле.The script runs in Docker containers that are created on each node.

  3. Этот сценарий извлекает обучающие и проверочные данные из службы хранилища Azure.That script retrieves training and testing data from Azure Storage.

  4. Сценарий обучает модель из обучающих данных, используя сочетание обучающих параметров.The script trains a model from the training data using its combination of training parameters.

  5. Производительность модели оценивается на данных тестирования и записывается в службу хранилища Azure.The model's performance is evaluated on the testing data, and is written to Azure Storage.

  6. Наиболее производительная модель регистрируется в машинное обучение Azure.The best performing model is registered with Azure Machine Learning.

См. также рекомендации по обучению моделей глубокого обучения с графическими процессорами.See also considerations for training deep learning models with GPUs.

Scenario2: недостаточно данных для обнаружения запасов.Scenario2: Out of stock detection. В этом сценарии показано, как настроить РКНН модель определения объекта, которая может быть развернута как веб-служба, чтобы предоставить прогнозы для пустых пробелов на полках магазина.This scenario shows how to tune an object detection Mask RCNN model that can be deployed as a web service to provide predictions for empty spaces on store shelves. Изображения, похожие на полки магазина розничной торговли, заполненные продуктами, используются для прогнозирования пустых пространств, чтобы помочь в обнаружении нестандартных продуктов, потенциально соединение эти прогнозы с другими источниками информации, такими как планограмс и базы данных.Images similar to retailer store shelves filled with products are used to predict empty spaces to help detect out of stock products by potentially marrying these predictions with other sources of information such as planograms and databases. В этом сценарии охватывается только пустое прогнозирование пространства.In this scenario, only empty space prediction is covered. Используемый набор данных распространяется в рамках лицензии CC-BY 4,0 .The dataset used is distributed under the CC-BY 4.0 license.

Обработка в этом сценарии включает следующие шаги.Processing in this scenario involves the following steps:

  1. Сценарий Python для обучения отправляется в машинное обучение Azure.The training Python script is submitted to Azure Machine Learning.

  2. Скрипт выполняется в контейнерах DOCKER, созданных на каждом узле, путем извлечения пользовательского образа, который хранится в реестре контейнеров Azure.The script runs in Docker containers that are created on each node by pulling a custom image that is stored on Azure Container Registry.

  3. Сценарий обучает модель из обучающих данных, сохраненных в службе хранилища Azure.The script trains a model from the training data saved in Azure Storage. использование сочетания параметров обучения.using its combination of training parameters.

  4. Производительность модели оценивается на данных тестирования и записывается в службу хранилища Azure.The model's performance is evaluated on the testing data, and is written to Azure Storage.

  5. Наиболее производительная модель регистрируется в Машинное обучение Azure.The best performing model is registered with Azure Machine Learning.

См. также рекомендации по распределенному обучению моделей глубокого обучения с помощью GPU.See also considerations for distributed training of deep learning models with GPUs.

АрхитектураArchitecture

Эта архитектура состоит из нескольких облачных служб Azure, которые позволяют масштабировать ресурсы в соответствии с нуждами.This architecture consists of several Azure cloud services that scale resources according to need. Ниже описаны службы и их роли в этом решении.The services and their roles in this solution are described below.

Виртуальная машина Майкрософт для обработки и анализа данных (DSVM) — это образ виртуальной машины, настроенный с помощью средств, используемых для анализа данных и машинного обучения.Microsoft Data Science Virtual Machine (DSVM) is a VM image configured with tools used for data analytics and machine learning. Доступны версии Windows Server и Linux.Both Windows Server and Linux versions are available. В этом развертывании используются выпуски DSVM для Linux в Ubuntu 16,04 LTS.This deployment uses the Linux editions of the DSVM on Ubuntu 16.04 LTS.

Машинное обучение Azure используется для обучения, развертывания, автоматизации и управления моделями машинного обучения в масштабе облака.Azure Machine Learning is used to train, deploy, automate, and manage machine learning models at cloud scale. Он используется в этой архитектуре для управления выделением и использованием ресурсов Azure, описанных ниже.It's used in this architecture to manage the allocation and use of the Azure resources described below.

Машинное обучение Azure COMPUTE — это ресурс, используемый для обучения и тестирования моделей машинного обучения и искусственного интеллекта в Azure.Azure Machine Learning Compute is the resource used to train and test machine learning and AI models at scale in Azure. Целевой объект вычислений в этом сценарии представляет собой кластер узлов, которые выделяются по запросу на основе параметра автоматического масштабирования .The compute target in this scenario is a cluster of nodes that are allocated on demand based on an automatic scaling option. Каждый узел — это виртуальная машина, в которой выполняется задание обучения для определенного набора параметров .Each node is a VM that runs a training job for a particular hyperparameter set.

В реестре контейнеров Azure хранятся образы всех типов развертываний контейнеров DOCKER.Azure Container Registry stores images for all types of Docker container deployments. Эти контейнеры создаются на каждом узле и используются для выполнения обучающего скрипта Python.These containers are created on each node and used to run the training Python script. Образ, используемый в кластере Вычислительная среда Машинного обучения, создается Машинное обучение в записях с локальным запуском и настройками параметров, а затем передается в реестр контейнеров.The image used in the Machine Learning Compute cluster is created by Machine Learning in the local run and hyperparameter tuning notebooks, and then is pushed to Container Registry.

Хранилище BLOB-объектов Azure получает наборы обучающих и проверочных данных из машинное обучение, которые используются в обучающем скрипте Python.Azure Blob storage receives the training and test data sets from Machine Learning that are used by the training Python script. Хранилище монтируется в качестве виртуального диска на каждом узле кластера Вычислительная среда Машинного обучения.Storage is mounted as a virtual drive onto each node of a Machine Learning Compute cluster.

Вопросы производительностиPerformance considerations

Каждый набор параметров выполняется на одном узле целевого объекта вычислениймашинное обучение.Each set of hyperparameters runs on one node of the Machine Learning compute target. В сценарии 1 каждый узел представляет собой стандартную виртуальную машину версии D4 v2 с четырьмя ядрами.For scenario 1, each node is a Standard D4 v2 VM, which has four cores. В этом сценарии используется классификатор LightGBM для машинного обучения — платформа повышения производительности.This scenario uses a LightGBM classifier for machine learning, a gradient boosting framework. Это программное обеспечение может выполняться на всех четырех ядрах одновременно, что ускоряет выполнение каждого из них до четырех раз.This software can run on all four cores at the same time, speeding up each run by a factor of up to four. Таким образом, выполнение настройки всего веб-параметров занимает до одного квартала времени, в течение которого он выполнялся на Вычислительная среда Машинного обучения целевом компьютере, основанном на стандартных виртуальных машинах D1 v2, которые имеют только одно ядро.That way, the whole hyperparameter tuning run takes up to one-quarter of the time it would take had it been run on a Machine Learning Compute target based on Standard D1 v2 VMs, which have only one core each. В сценарии 2 каждый узел является стандартным NC6 с 1 графическим процессором, и каждый запуск настройки каждого параметра будет использовать один GPU на каждом узле.For scenario 2, each node is a Standard NC6 with 1 GPU and each hyperparameter tuning run will use the single GPU on each node.

Максимальное количество Вычислительная среда Машинного обучения узлов влияет на общее время выполнения.The maximum number of Machine Learning Compute nodes affects the total run time. Рекомендуемое минимальное количество узлов равно нулю.The recommended minimum number of nodes is zero. При использовании этого параметра время, необходимое для запуска задания, включает в себя несколько минут для автоматического масштабирования по крайней мере одного узла в кластере.With this setting, the time it takes for a job to start up includes some minutes for auto-scaling at least one node into the cluster. Однако если настройка параметров будет выполняться в течение короткого промежутка времени, увеличение масштаба увеличивает нагрузку на это задание.If the hyperparameter tuning runs for a short time, however, scaling up the job adds to the overhead. Например, задание может выполняться в течение пяти минут, но масштабирование до одного узла может занять еще пять минут.For example, a job can run in under five minutes, but scaling up to one node might take another five minutes. В этом случае установка минимума на один узел экономит время, но добавляет к стоимости.In this case, setting the minimum to one node saves time but adds to the cost.

Мониторинг и ведение журнала запросовMonitoring and logging considerations

Отправьте конфигурацию запуска для работы с видеодиском , чтобы вернуть объект запуска для использования при наблюдении за ходом выполнения.Submit a HyperDrive run configuration to return a Run object for use in monitoring the run's progress.

Мини-приложение Jupyter РундетаилсRunDetails Jupyter Widget

Используйте объект Run с мини-приложением Рундетаилс Jupyter для удобного отслеживания его хода выполнения в очереди и выполнения его дочерних заданий.Use the Run object with the RunDetails Jupyter widget to conveniently monitor its progress at queuing and when running its children jobs. В нем также показаны значения основной статистики, которая входит в систему в режиме реального времени.It also shows the values of the primary statistic that they log in real time.

Портал AzureAzure portal

Распечатайте объект Run, чтобы отобразить ссылку на страницу запуска в портал Azure следующим образом:Print a Run object to display a link to the run's page in Azure portal like this:

Запустить объект

Эта страница используется для наблюдения за состоянием запуска и его дочерними элементами.Use this page to monitor the status of the run and its children runs. Каждый дочерний запуск имеет журнал драйвера, содержащий выходные данные обучающего сценария, который он выполнял.Each child run has a driver log containing the output of the training script it has run.

Рекомендации по стоимостиCost considerations

Стоимость выполнения настройки параметров в зависимости от Вычислительная среда Машинного обучения размера виртуальной машины, использования узлов с низким приоритетом и максимально допустимого количества узлов в кластере зависит от линейного запуска.The cost of a hyperparameter tuning run depends linearly on the choice of Machine Learning Compute VM size, whether low-priority nodes are used, and the maximum number of nodes allowed in the cluster.

Постоянные затраты, когда кластер не используется, зависят от минимального количества узлов, требуемых для кластера.Ongoing costs when the cluster is not in use depend on the minimum number of nodes required by the cluster. С помощью автоматического масштабирования кластера система автоматически добавляет узлы вплоть до допустимого максимума в соответствии с количеством заданий, а затем удаляет узлы вплоть до запрошенного минимума, так как они больше не нужны.With cluster autoscaling, the system automatically adds nodes up to the allowed maximum to match the number of jobs, and then removes nodes down to the requested minimum as they are no longer needed. Если кластер может автоматически масштабироваться до нулевых узлов, он не требует каких-либо затрат, если он не используется.If the cluster can autoscale down to zero nodes, it does not cost anything when it is not in use.

Замечания по безопасностиSecurity considerations

Ограничение доступа к хранилищу BLOB-объектов AzureRestrict access to Azure Blob Storage

В этой архитектуре для доступа к хранилищу BLOB-объектов используются ключи учетной записи хранения.This architecture uses storage account keys to access the Blob storage. Для дальнейшего управления и защиты рекомендуется использовать подписанный URL-адрес (SAS).For further control and protection, consider using a shared access signature (SAS) instead. Таким образом можно предоставить ограниченный доступ к объектам в хранилище без необходимости жесткого кодирования ключей учетной записи или сохранения их в виде открытого текста.This grants limited access to objects in storage, without needing to hard-code the account keys or save them in plaintext. Использование SAS также гарантирует, что в учетной записи хранения обеспечено надлежащее управление, а доступ предоставляется только пользователям, которым он необходим.Using a SAS also helps to ensure that the storage account has proper governance, and that access is granted only to the people intended to have it.

Для сценариев с более конфиденциальными данными убедитесь, что все ключи к хранилищу защищены, так как эти ключи предоставляют полный доступ всем входным и выходным данным из рабочей нагрузки.For scenarios with more sensitive data, make sure that all of your storage keys are protected, because these keys grant full access to all input and output data from the workload.

Шифрование данных во время хранения и передачиEncrypt data at rest and in motion

В сценариях, использующих конфиденциальные данные, зашифруйте неактивных данных, то есть данных в хранилище.In scenarios that use sensitive data, encrypt the data at rest-that is, the data in storage. При любых перемещениях данных из одного расположения в другое используйте SSL для безопасной передачи данных.Each time data moves from one location to the next, use SSL to secure the data transfer. Дополнительные сведения см. в руководстве по безопасности службы хранилища Azure.For more information, see the Azure Storage security guide.

Защита данных в виртуальной сетиSecure data in a virtual network

Для рабочих развертываний рассмотрите возможность развертывания кластера в подсети указанной виртуальной сети.For production deployments, consider deploying the cluster into a subnet of a virtual network that you specify. Это позволит вычислительным узлам в кластере безопасно обмениваться данными с другими виртуальными машинами или с локальной сетью.This allows the compute nodes in the cluster to communicate securely with other virtual machines or with an on-premises network. Вы также можете использовать конечные точки службы с хранилищем BLOB-объектов, чтобы предоставить доступ из виртуальной сети или использовать NFS с одним узлом в виртуальной сети с машинное обучение Azure.You can also use service endpoints with blob storage to grant access from a virtual network or use a single-node NFS inside the virtual network with Azure Machine Learning.

РазвертываниеDeployment

Чтобы развернуть эталонную реализацию для этой архитектуры, выполните действия, описанные в репозиториеве GitHub:To deploy the reference implementation for this architecture, follow the steps described in the GitHub repos:

Дальнейшие действияNext steps

Чтобы эксплуатацию модель, см. раздел эксплуатация машинного обучения (млопс) для моделей Python с помощью машинное обучение Azure.To operationalize the model, see Machine learning operationalization (MLOps) for Python models using Azure Machine Learning.