Введение

Основная цель машинного обучения — обучать модели и прогнозировать результаты, которые могут использоваться приложениями. В Машинном обучении Azure мы используем сценарии для обучения моделей с помощью таких платформ машинного обучения, как Scikit-Learn, Tensorflow, PyTorch, SparkML и других. В этом руководстве мы подробно расскажем о Машинном обучении Azure, его возможностях, экосистеме Azure, которая поддерживает действия по машинному обучению, а также о различных способах обучения и создания моделей.

Что такое Машинное обучение Azure? Это облачный, полностью организованный модуль, который помогает нам эффективно выполнять различные задачи машинного обучения и итерационные процессы, используя при этом огромную вычислительную мощность, предоставляемую Microsoft Azure.

Преимущества машинного обучения Azure

Давайте рассмотрим некоторые преимущества использования Azure ML.

  • Для большинства пользователей настройка всей инфраструктуры для эффективного обучения моделей машинного обучения может оказаться непосильной задачей. С помощью Azure ML мы можем сосредоточиться на науке о данных и решении проблем, а Azure позаботится о настройке инфраструктуры и требованиях к лицензии.
  • Azure или, если на то пошло, любой из облачных провайдеров оплачивается по мере использования. При усердном использовании, например, осторожном отключении работающего экземпляра, когда он не используется, эта модель может оказаться очень экономичной.
  • Одна особенность, которую я нахожу удобной, заключается в том, что Azure позволяет нам публиковать нашу обученную модель как веб-службу и использовать ее в приложениях.
  • Поддерживается широкий спектр алгоритмов, которые мы можем легко настроить.

Ключевые возможности машинного обучения Azure

Azure встроила несколько полезных функций в свое предложение по машинному обучению, которые упрощают работу для более широкой аудитории. Вы найдете эти функции незаменимыми, особенно если вы не привыкли настраивать рабочий процесс и среду машинного обучения вручную.

Вот некоторые из этих особенностей:

  • Вычисления по запросу, которые можно настроить в зависимости от рабочей нагрузки
  • Механизм приема данных, который я нашел обширным с точки зрения источников, которые он принимает.
  • С azure оркестровка рабочих процессов для машинного обучения невероятно проста.
  • Управление моделями машинного обучения — если вам нравится оценивать несколько моделей, прежде чем выбрать окончательную, машинное обучение Azure имеет специальные возможности для управления этим.
  • Метрики и журналы всех учебных мероприятий и услуг, которые мы используем, легко доступны на платформе.
  • Развертывание модели. С помощью Azure ML вы можете развернуть свою модель в режиме реального времени.

Службы студии машинного обучения Azure

Microsoft разработала студию как веб-инструмент для управления рабочим пространством машинного обучения. Сервисы Studio — это инструменты на основе графики, которые позволяют нам автоматизировать машинное обучение, а также абстрагировать разработку модели до уровня без кода, используя функции перетаскивания. Помимо создания пользовательской модели в экспертном режиме, я подробно расскажу об этих двух подходах в следующем разделе этого руководства. Как получить доступ к студии машинного обучения Azure? Вам нужно перейти на https://ml.azure.com из браузера и войти, используя подписку Azure.

Теперь, когда мы рассмотрели ключевые возможности Azure ML, давайте посмотрим на экосистему, которую Azure предлагает для машинного обучения.

Экосистема машинного обучения Azure

Различные службы работают вместе с Azure ML, чтобы интегрировать всю экосистему вокруг данных и аналитики. Вот основные из них:

Управление большими данными

Как мы знаем, машинное обучение — это создание прогностических моделей с использованием доступных данных. В современном мире эти данные могут быть объемными, и нам нужны специальные инструменты для обработки этих данных для построения наших моделей. Azure ML предлагает несколько служб, таких как база данных SQL Azure, Azure Cosmos DB, озеро данных Azure, которые помогут нам решить эту задачу. Кроме того, мы можем воспользоваться такими услугами, как механизмы Apache Spark в Azure HDInsight и Databricks, для передачи и преобразования больших данных.

Службы Azure для Интернета, мобильных устройств и Интернета вещей

Такие службы, как службы приложений Azure и Azure IoT Edge, предназначены именно для этого, и мы можем использовать их внутри платформы машинного обучения Azure.

Развертывания на основе контейнеров

Для создания моделей машинного обучения, их упаковки и развертывания правильным подходом является развертывание на основе контейнеров. Это часть современных методологий развертывания программного обеспечения, в которых мы предпочитаем подход с использованием микросервисов. Идея заключается в развертывании программного обеспечения в небольших логических единицах. Это хорошо сочетается с подходом DevOps и отходит от традиционного монолитного подхода к разработке программного обеспечения. В Azure мы делаем это с помощью таких сервисов, как Azure Kubernetes Services и Azure Container Services.

Говоря о DevOps, давайте посмотрим, как Машинное обучение Azure позволяет использовать ML Ops.

MLOps — операционализация машинного обучения

По мере того, как машинное обучение становится мейнстримом, все больше внимания уделяется интеграции действий машинного обучения, таких как обучение моделей, развертывание и обслуживание, в более широкую структуру разработки и доставки программного обеспечения. Набор действий, которые помогают нам достичь этого, известен как MLOPs. Это объединяется с деятельностью DevOps в рамках общей разработки программного обеспечения.

Что такое DevOps? Что ж, DevOps — это набор методов повышения эффективности разработки программного обеспечения в масштабе предприятия. Это включает в себя все системы и процессы, которые улучшают сотрудничество в команде, используют автоматизацию процессов для повышения эффективности.

Это изменение парадигмы в том, как машинное обучение будет интегрироваться в более крупную структуру разработки программного обеспечения. Традиционно специалисты по машинному обучению создавали модели, а разработчикам программного обеспечения и системным администраторам оставалось интегрировать эти модели в общее приложение. Использование принципов DevOps в машинном обучении все больше повышает общую эффективность создания комплексного решения. Машинное обучение Azure имеет возможности для интеграции с общими системами DevOps, такими как интеграция Azure DevOps и GitHub.

Построение моделей машинного обучения в Azure

Теперь, когда мы рассмотрели общую архитектуру Машинного обучения Azure, давайте углубимся в создание моделей машинного обучения внутри Машинного обучения Azure.

Как известно, построение модели — это итеративный процесс. В этом руководстве я расскажу о трех подходах, которые мы можем использовать для создания приложений машинного обучения с использованием данных:

Подход 1. Экспертный режим. Если мы, специалисты по данным, хотим использовать свои знания в области программирования на таких языках, как Python, и связанных библиотеках, таких как PyTorch, Scikit-Learn, для обучения моделей машинного обучения, Azure предлагает эту гибкость. создавать модели нашим уникальным, индивидуальным способом. Здесь мы решаем, какую модель будем использовать, вычислительную мощность и зависимости, которые хотим настроить.

Подход № 2. Автоматизированное машинное обучение на базе студии Azure ML. Это полезно для пользователей, цель которых состоит не в том, чтобы вникнуть в мельчайшие детали построения модели, а в том, чтобы использовать возможности модели. на месте. Мы используем студию машинного обучения Azure для оценки нескольких моделей, настроенных Azure, и возвращаем самую эффективную. Студия машинного обучения Azure берет на себя всю тяжелую работу, связанную со статистикой и математикой.

Подход № 3. Режим конструктора. Это графическая утилита, работающая в соответствии с парадигмой отсутствия кода, которая становится все более популярной. Пользователи, которые хотят использовать машинное обучение как часть более крупного приложения. Мы хотим контролировать автоматизированный процесс DevOps, повторно обучать модель и проверять производительность всего приложения.

Набор данных для этого руководства

Чтобы продемонстрировать построение модели в подходах № 1 и № 2, я буду использовать набор данных о диабете. Вот ссылка GitHub на набор данных. Цель этого набора данных — определить, будет ли человек диабетиком или нет.

Подход 1 — Экспертный режим — Пользовательские настройки и построение модели по нашему выбору в

Начнем с первого подхода, где мы определяем модель, которая будет использоваться. Поскольку результат представляет собой прогноз вероятности развития диабета, категорический показатель, я использую модель логистической регрессии для этого прогноза.

Обучите модель машинного обучения с помощью Python

Вот как вы обучаете свою модель машинного обучения с помощью Python в среде машинного обучения Azure. Я объяснил этот подход в 8 шагов:

Шаг 1. Создайте рабочую область Azure

Рабочая область — это централизованное место для управления ресурсами, необходимыми для обучения модели. Мы можем использовать рабочие области для группировки ресурсов на основе проектов, сред развертывания, таких как тестирование и производство, на основе организационного подразделения и т. д. Рабочие области определяются в группе ресурсов в Azure.

Активы в рабочей области включают вычислительные цели, данные для обучения моделей, ноутбуки, эксперименты, модели, конвейеры и т. д.

Когда мы создаем рабочую область Azure, она также создает следующее

  • Учетная запись хранения для хранения данных для обучения модели
  • Applications Insights для мониторинга сервисов прогнозирования
  • Azure Key Vault для управления учетными данными

Чтобы получить доступ к этим ресурсам в Azure Workspace, пользователям необходимо пройти аутентификацию с помощью каталога Azure Active.

Ниже приведены шаги по созданию рабочей области Azure.

Создание ресурса машинного обучения на портале Azure

2. После создания экземпляра ресурса укажите запрошенную информацию, такую ​​как имя рабочей области, регион, учетная запись хранения, Application Insights, и создайте рабочую область.

Шаг 2. Создайте вычислительный экземпляр

Вычислительные экземпляры — это онлайновые вычислительные ресурсы, на которых уже установлена ​​среда разработки для написания и выполнения кода на Python. У нас может быть несколько вычислительных экземпляров в рабочей области.

В зависимости от наших требований мы можем выбрать вычислительный экземпляр с желаемым процессором, графическим процессором, оперативной памятью и хранилищем.

Ниже приведены шаги по созданию вычислительного экземпляра.

2. Укажите имя вычислительного экземпляра, выберите нужную виртуальную машину и создайте вычислительный экземпляр.

Мы также можем создавать вычислительные кластеры, в которых мы можем автоматически масштабировать вычислительные узлы CPU/GPU в облаке.

Шаг 3: Создайте набор данных

1. Щелкните DataSet и создайте новый DataSet. Я загрузил данные, используя опцию из локальных файлов

2. Укажите имя набора данных и загрузите файл.

Шаг 4. Создайте записную книжку Azure и подключитесь к рабочей области

1. Перейдите в Студию машинного обучения и нажмите Создать новый блокнот.

2. Создайте новый блокнот

3. Импортируйте пакет azureml-core, пакет Python, который позволяет нам подключаться и писать код, использующий ресурсы в рабочей области и

import azureml.core from azureml.core import Workspace ws = Workspace.from_config()

Шаг 5: Создайте сценарий обучения для обучения модели

На этом этапе мы создадим скрипт для обучения модели и сохраним скрипт в виде файла .py в нашей папке с помощью следующей команды:

%%writefile $training_folder/diabetes_training.py

1. Давайте создадим папку для сохранения всех скриптов Python. Мы будем сохранять сценарии обучения в папке с названием «диабетическая тренировка».

training_folder = 'diabetes-training' os.makedirs(training_folder, exist_ok=True)

2. Получите путь к файлу CSV, который мы загрузили как набор данных. Доступ к файлам данных можно получить с помощью хранилищ данных. Хранилища данных используются для хранения сведений о подключении к службам хранилища Azure.

В моем случае имя хранилища данных — «workspaceblobstorage». Мы можем перейти в раздел Главная › Наборы данных › Зарегистрированные наборы данных, чтобы просмотреть все зарегистрированные источники данных.

datastore_name = 'workspaceblobstorage' datastore_paths = [(datastore_name, 'diabetes.csv')]

3. Получите контекст выполнения. Прогон представляет собой одно испытание для эксперимента. У нас может быть несколько прогонов в одном эксперименте.

Используя Run, мы можем отслеживать испытание, регистрировать показатели и сохранять результаты испытания, а затем анализировать полученные результаты.

run = Run.get_context()

4. Прочитайте набор данных с помощью библиотеки Pandas.

diabetes = pd.read_csv(Dataset.Tabular.from_delimited_files(path=datastore_paths))

5. Создайте наборы данных X и Y. X содержит переменные объектов, а Y — выходную переменную.

X, y = diabetes[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness','SerumInsulin','BMI','DiabetesPedigree','Age']].values, diabetes['Diabetic'].values

6. Разделите набор данных на обучающие и тестовые и используйте модель логистической регрессии, поскольку мы пытаемся решить проблему классификации — есть ли у человека диабет или нет.

Здесь мы разделили данные поезда и теста в соотношении 70:30.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0) # Set regularization hyperparameter reg = 0.01 # Train a logistic regression model run.log('Regularization Rate', np.float(reg)) model = LogisticRegression(C=1/reg, solver="liblinear").fit(X_train, y_train)

7. Затем мы вычисляем точность и AUC модели, чтобы оценить нашу модель.

# calculate accuracy y_pred = model.predict(X_test) acc = np.average(y_pred == y_test) print('Accuracy:', acc) run.log('Accuracy', np.float(acc)) # calculate AUC y_score = model.predict_proba(X_test) auc = roc_auc_score(y_test,y_score[:,1]) print('AUC: ' + str(auc)) run.log('AUC', np.float(auc))

8. Сохраните обученную модель в нужную папку. В этом примере мы сохраняем модель в выходную папку.

# Save the trained model in the outputs folder os.makedirs('outputs', exist_ok=True) joblib.dump(value=model, filename='outputs/diabetes_model.pkl') run.complete()

На этом этапе мы только что написали скрипт для обучения модели и сохранили его в папке. Мы еще не выполнили сценарий.

Шаг 6. Запустите сценарий обучения в качестве эксперимента

Эксперимент — это набор испытаний, представляющих несколько прогонов модели. Мы также можем проводить эксперименты с различными данными, кодом и настройками.

Эксперимент представлен классом эксперимента, а каждое испытание в эксперименте представлено классом выполнения.

1. Мы создаем среду Python для запуска эксперимента.

env = Environment.from_conda_specification("experiment_env", "environment.yml")

Где environment.yml содержит спецификации среды

2. Затем мы создаем ScriptRunConfig, который собирает воедино информацию для отправки запуска, такую ​​как Script, вычислительные цели, среды и т. д.

script_config = ScriptRunConfig(source_directory=training_folder, script='diabetes_training.py', environment=env)

3. Затем мы отправляем запуск эксперимента и передаем детали ScriptConfig.

experiment_name = 'train-diabetes'
experiment = Experiment(workspace=ws, name=experiment_name) run = experiment.submit(config=script_config)
4. Then we run the Experiment run and wait for it to complete.
RunDetails(run).show() run.wait_for_completion()

Шаг 7. Получите метрики и выходные данные объекта запуска и распечатайте их в Блокноте.

Мы можем использовать метод get_metric класса запуска для печати таких показателей, как скорость регуляризации, AUC, точность и т. д.

metrics = run.get_metrics() for key in metrics.keys(): print(key, metrics.get(key))

Шаг 8: Зарегистрируйте обученную модель

На шаге 5 мы сохранили модель как файл pkl. Теперь мы зарегистрируем модель в рабочей области, чтобы мы могли отслеживать версии модели.

# Register the model run.register_model(model_path='outputs/diabetes_model.pkl', model_name='diabetes_model', tags={'Training context':'Script'}, properties={'AUC': run.get_metrics()['AUC'], 'Accuracy': run.get_metrics()['Accuracy']})

После того, как мы обучили модель и зарегистрировали ее, мы можем видеть результаты каждого запуска эксперимента в левой навигационной панели.

Мы можем видеть различные запуски, когда нажимаем на название эксперимента и их соответствующий статус.

Для каждого прогона мы можем видеть связанные метрики, выходные данные, журналы и т. д. В этом конкретном алгоритме точность модели составляет 0,774, а площадь под кривой — 0,848.

Подход II — автоматизированное машинное обучение с использованием Azure Machine Learning Studio

Учитывая итеративный характер построения моделей машинного обучения, параллельная обработка нескольких моделей может сэкономить время, а также помочь определить лучшую модель для конкретного варианта использования. Благодаря вычислительной мощности Azure оптимизация алгоритмов для получения наилучших результатов в среде Azure Machine Learning Studio невероятно проста. Автоматизация студии устраняет необходимость во всех ручных пробах и ошибках, связанных с построением модели.

Важно знать, что студия машинного обучения Azure поддерживает только контролируемые модели машинного обучения, для которых у нас есть обучающие данные и известные метки. Эти модели:

  • Модели классификации, в которых мы предсказываем категории
  • Регрессионные модели, в которых мы работаем с числовыми данными и находим наиболее подходящее уравнение
  • Прогнозирование временных рядов, где у нас есть закодированные данные о датах, и мы пытаемся спрогнозировать, скажем, будущие продажи для магазина.

Выявление наиболее эффективной модели

Как студия Azure ML определяет наиболее эффективную модель? Мы можем указать метрики для того же самого. Вот как мы можем настроить эксперименты в студии машинного обучения Azure:

Основные метрики для студии автоматизированного машинного обучения

Рисунок. Основные показатели для модели классификации

Рисунок. Основные показатели регрессионной модели

Рисунок. Основные показатели для модели прогнозирования временных рядов

Остальные метрики мы можем настроить в студии

  • Объяснимость ИИ — это помогает нам генерировать объяснения важности функций для лучшей выявленной модели.
  • Отменить алгоритмы — это алгоритмы, которые вы можете отбросить заранее, и автоматизированный движок не будет их учитывать. Это помогает сократить расходы на облако.
  • Критерии выхода: поскольку операции машинного обучения автоматизированы, вам необходимо установить параметры остановки для эксперимента и активировать максимальное количество времени или определенный порог метрики.
  • Разделение данных для проверки: вы можете настроить, как вы хотите разделить набор данных между обучающими данными и тестовыми данными, которые вы можете использовать для оценки.
  • Параллельная обработка. Одной из самых важных функций Azure ML, позволяющих сэкономить время, является возможность параллельного запуска и оценки нескольких алгоритмов. Вы можете настроить эти параметры.

Возможности обработки данных Azure Machine Learning Studio

Все, что вы делаете в экспертном режиме, вы также можете настроить в этом автоматизированном режиме. Это включает в себя такие возможности, как вменение пропущенных значений, кодирование категориальных признаков, балансировка данных путем нормализации и масштабирования признаков, отбрасывание признаков с высокой кардинальностью, которые не помогают в прогнозировании. Вы также можете получить функции временных рядов, извлекая день, месяц и год из поля даты.

Ключевые шаги для запуска автоматизированного алгоритма машинного обучения

Шаг 1. Укажите набор данных с метками для обучения данных. Я использовал тот же набор данных по диабету и создал новый автоматический запуск машинного обучения.

Шаг 2. Настройте автоматический запуск машинного обучения — имя, метку цели и цель вычислений, на которой будет выполняться эксперимент.

Шаг 3.Выберите применяемый алгоритм и параметры — классификацию, регрессию или временные ряды, параметры конфигурации и параметры функций.

Шаг 4.Просмотрите наилучшую созданную модель

Когда мы нажимаем на эксперимент, мы видим, что было несколько прогонов для разных типов алгоритмов, чтобы определить, какая модель будет работать хорошо.

Мы видим, что RandomForest имеет уровень точности 0,88, XGBoostClassifier имеет уровень точности 0,87.

Подход III — Модель обучения с использованием Azure Machine Learning Designer

Как мы уже говорили, Azure Machine Learning Designer предоставляет графическую среду для создания моделей машинного обучения. Кроме того, мы можем публиковать модели как сервисы, которые затем используются в общем процессе разработки программного обеспечения.

Вот как вы можете построить модель в конструкторе машинного обучения

Создайте конвейер обучения

Мы определяем поток данных для обучения модели машинного обучения с использованием функций перетаскивания. Этот разработанный рабочий процесс выглядит как конвейер и называется конвейером, как видно на рисунке ниже.

Из чего состоит обучающий пайплайн? Мы разрабатываем все шаги, необходимые перед созданием модели, такие как прием данных и разработка функций. В интерфейсе дизайнера мы можем выполнить каждый из этих шагов независимо. Конвейер управляет потоком выполнения.

Как вы могли заметить, мы не использовали ни одной строки кода для выполнения этих задач. Это ключевая особенность режима конструктора. Как вы заметили в левой колонке на рисунке ниже, конструктор включает в себя широкий спектр предопределенных модулей для приема данных, выбора и разработки функций, обучения модели и проверки. Хотя Azure разработала эту среду без кода, она оставила место для добавления пользовательских сценариев, если вы того пожелаете. Мы можем добавить пользовательскую логику Python, R и SQL в поток данных.

Канал обучения

Шаг 1. Обработайте данные, нормализуйте объекты с помощью перетаскивания.

Шаг 2. Разделите данные.

Я разделил данные на 70% в виде поезда и 30% в качестве тестовых данных.

Шаг 3. Обучите модель

Как только вы вводите обучение модели в конвейер, начинается обучение модели.

Автоматическое создание объяснений

Мощной функцией конструктора машинного обучения является генератор пояснений. Вы можете включить эту опцию, перейдя в настройки параметров, как показано на скриншоте ниже. Так что экономьте вычислительные ресурсы, это отключено по умолчанию, и вам нужно будет включить это вручную.

После того как дизайнер машинного обучения Azure обучит модель с помощью этой функции, мы создадим объяснение, чтобы понять контекст и лучше интерпретировать результаты. На приведенном ниже снимке экрана показано объяснение производительности модели и важности совокупных функций.

Рисунок. Объяснение производительности модели

Рисунок. Объяснение важности совокупных функций

Шаг 4: Оценка модели

В нашем случае оценка даст нам прогноз о вероятности заболевания человека диабетом.

Шаг 5: Оцените модель

Завершающим этапом является оценка модели. Мы можем оценить модель, используя следующие показатели

  • Кривая ROC, кривая точного отзыва, кривая подъемной силы.
  • Матрица путаницы сообщает нам соотношение между истинными положительными результатами и ложными положительными результатами и помогает нам оценивать различные показатели, такие как чувствительность, специфичность.

Конвейер вывода: использование модели для прогнозирования

После того, как мы обучим и оценим модель с помощью обучающего конвейера, мы можем использовать его для создания конвейера логического вывода для пакетного прогнозирования или конвейера логического вывода в реальном времени. Конвейер логического вывода инкапсулирует обученную модель в виде веб-службы, которая прогнозирует метки для новых данных.

Создание конвейера логического вывода

Вы получите два варианта:

  1. Конвейер вывода в реальном времени — здесь мы можем делать прогнозы в режиме реального времени с немедленным ответом от службы.
  2. Пакетный конвейер вывода — здесь прогнозы хранятся в виде файлов для бизнес-приложений.

Как только мы создадим конвейер вывода, он будет выглядеть так, как показано на рисунке ниже.

Заключение

Как подробно описано в этом руководстве, Azure разработала свои службы машинного обучения для всех типов пользователей и построила вокруг них сильную экосистему. От приема данных до использования модели в качестве службы и оркестрации контейнеров — Azure предлагает все на одной платформе. Организации, особенно те, которые уже работают в экосистеме Azure, сочтут это незаменимым в своем путешествии по машинному обучению.

Azure предлагает несколько способов создания и обучения моделей, при этом легко справляясь с базовой инфраструктурой и высокими требованиями к вычислительным ресурсам. Являетесь ли вы пользователем, который хочет раскрыть возможности машинного обучения без использования кода, или программистом, использующим машинное обучение как часть более крупного программного обеспечения, или специалистом по данным, вы будете в восторге от простоты, с которой Azure ML организует все для вас. при этом чувствительно к вашему опыту.

Использованная литература-

Источник изображений: Все изображения в этом руководстве созданы автором. Некоторые изображения были сделаны автором при построении модели машинного обучения.

Примечание. Я получил сертификат Microsoft Certified Azure Data Scientist. Пожалуйста, свяжитесь со мной в LinkedIn

Первоначально опубликовано на https://www.analyticsvidhya.com 28 сентября 2021 г.