Руководство по разработке моделей на облачной рабочей станции

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

  • Настройка и настройка облачной рабочей станции. Облачная рабочая станция работает на базе Машинное обучение Azure вычислительного экземпляра, который предварительно настроен в средах для поддержки различных потребностей разработки моделей.
  • Используйте облачные среды разработки.
  • Используйте MLflow для отслеживания метрик модели, все из записной книжки.

Необходимые компоненты

Чтобы использовать Машинное обучение Azure, вам нужна рабочая область. Если у вас нет ресурсов, выполните инструкции по созданию рабочей области и узнайте больше об использовании.

Начните с вычислений

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

  1. Войдите в Студию машинного обучения Azure.
  2. Выберите рабочую область, если она еще не открыта.
  3. В области навигации слева выберите "Вычисления".
  4. Если у вас нет вычислительного экземпляра, вы увидите новое в середине экрана. Выберите "Создать " и заполните форму. Вы можете использовать все значения по умолчанию.
  5. Если у вас есть вычислительный экземпляр, выберите его из списка. Если он остановлен, нажмите кнопку "Пуск".

Открытие Visual Studio Code (VS Code)

После запуска вычислительного экземпляра вы можете получить доступ к нему различными способами. В этом руководстве показано использование вычислительного экземпляра из VS Code. VS Code предоставляет полную интегрированную среду разработки (IDE) с возможностями Машинное обучение Azure ресурсов.

В списке вычислительных экземпляров выберите ссылку VS Code (Web) или VS Code (Desktop) для используемого вычислительного экземпляра. Если вы выберете VS Code (Desktop), появится всплывающее окно с просьбой открыть приложение.

Снимок экрана: ссылки на запуск VS Code (Веб) или (Рабочий стол).

Этот экземпляр VS Code подключен к вычислительному экземпляру и файловой системе рабочей области. Даже если открыть его на рабочем столе, файлы, которые отображаются в рабочей области, являются файлами.

Настройка новой среды для создания прототипов (необязательно)

Чтобы скрипт выполнялся, необходимо работать в среде, настроенной с зависимостями и библиотеками, которые ожидает код. В этом разделе показано, как создать среду, адаптированную к коду. Чтобы создать новое ядро Jupyter, к которому подключается записная книжка, вы будете использовать YAML-файл, определяющий зависимости.

  • Отправка файла.

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

    1. Скачайте этот файл среды conda, workstation_env.yml на компьютер с помощью кнопки "Скачать необработанный файл " в правом верхнем углу.

    2. Перетащите файл с компьютера в окно VS Code. Файл передается в рабочую область.

    3. Переместите файл в папку имени пользователя.

      Снимок экрана: отправка файла.

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

    name: workstation_env
    # This file serves as an example - you can update packages or versions to fit your use case
    dependencies:
      - python=3.8
      - pip=21.2.4
      - scikit-learn=0.24.2
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - mlflow-skinny 
        - azureml-mlflow
        - psutil>=5.8,<5.9
        - ipykernel~=6.0
        - matplotlib
    
  • Создайте ядро.

    Теперь используйте терминал для создания нового ядра Jupyter на основе файла workstation_env.yml .

    1. В верхней строке меню выберите терминал > "Новый терминал".

      Снимок экрана: открытие средства терминала на панели инструментов записной книжки.

    2. Просмотр текущих сред conda. Активная среда помечена как *.

      conda env list
      
    3. cd в папку, в которой был отправлен файл workstation_env.yml . Например, если вы загрузили его в папку пользователя:

      cd Users/myusername
      
    4. Убедитесь, что workstation_env.yml находится в этой папке.

      ls
      
    5. Создайте среду на основе предоставленного файла conda. Создание этой среды занимает несколько минут.

      conda env create -f workstation_env.yml
      
    6. Активируйте новую среду.

      conda activate workstation_env
      

      Примечание.

      Если вы видите CommandNotFoundError, следуйте инструкциям по выполнению conda init bash, закройте терминал и откройте новый. Затем повторите conda activate workstation_env команду.

    7. Убедитесь, что правильная среда активна, снова ищет среду, помеченную как *.

      conda env list
      
    8. Создайте новое ядро Jupyter на основе активной среды.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    9. Закройте окно терминала.

Теперь у вас есть новое ядро. Затем вы откроете записную книжку и используйте это ядро.

Создание записной книжки

  1. В верхней строке меню выберите "Файл > нового файла".
  2. Присвойте новому файлу имя develop-tutorial.ipynb (или введите предпочитаемое имя). Убедитесь, что вы используете расширение IPYNB .

Задание ядра

  1. В правом верхнем углу выберите " Выбрать ядро".
  2. Выберите вычислительный экземпляр Машинного обучения Azure (computeinstance-name).
  3. Выберите созданное ядро, на рабочей станции учебника Env. Если он не отображается, выберите средство "Обновить " в правом верхнем углу.

Разработка скрипта обучения

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

Этот код используется sklearn для обучения и MLflow для ведения журнала метрик.

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

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
  2. Затем загрузите и обработайте данные для этого эксперимента. В этом руководстве вы считываете данные из файла в Интернете.

    # load the data
    credit_df = pd.read_csv(
        "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",
        header=1,
        index_col=0,
    )
    
    train_df, test_df = train_test_split(
        credit_df,
        test_size=0.25,
    )
  3. Получите данные, готовые к обучению:

    # Extracting the label column
    y_train = train_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_train = train_df.values
    
    # Extracting the label column
    y_test = test_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_test = test_df.values
  4. Добавьте код для запуска автоматической записи MLflow, чтобы отслеживать метрики и результаты. Благодаря итеративному характеру разработки моделей помогает MLflow выполнять журнал параметров и результатов модели. Вернитесь к этим запускам, чтобы сравнить и понять, как выполняется модель. Журналы также предоставляют контекст для перехода с этапа разработки на этап обучения рабочих процессов в Машинное обучение Azure.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. обучение моделей.

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")
    
    mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    
    print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()

    Примечание.

    Вы можете игнорировать предупреждения mlflow. Вы по-прежнему получите все результаты, необходимые для отслеживания.

Выполнение итерации

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

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier

print(f"Training with data of shape {X_train.shape}")

mlflow.start_run()
ada = AdaBoostClassifier()

ada.fit(X_train, y_train)

y_pred = ada.predict(X_test)

print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

Примечание.

Вы можете игнорировать предупреждения mlflow. Вы по-прежнему получите все результаты, необходимые для отслеживания.

Изучение результатов

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

  1. Вернитесь в рабочую область в Студия машинного обучения Azure.

  2. В области навигации слева выберите "Задания".

    Снимок экрана: выбор заданий в навигации.

  3. Выберите ссылку для разработки в облаке.

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

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

  6. На странице отображаются сведения о задании, таких как свойства, выходные данные, теги и параметры. В разделе "Теги" вы увидите estimator_name, в котором описывается тип модели.

  7. Перейдите на вкладку "Метрики" , чтобы просмотреть метрики, записанные в MLflowжурнал. (Ожидается, что результаты будут отличаться, так как у вас есть другой набор обучения.)

    Снимок экрана: метрики для задания.

  8. Выберите вкладку "Изображения", чтобы просмотреть изображения , созданные с помощью MLflow.

    Снимок экрана: изображения для задания.

  9. Вернитесь и просмотрите метрики и изображения для другой модели.

Создание скрипта Python

Теперь создайте скрипт Python из записной книжки для обучения модели.

  1. В окне VS Code щелкните правой кнопкой мыши имя файла записной книжки и выберите "Импортировать записную книжку в скрипт".

  2. Сохраните этот новый файл скрипта с помощью меню "Сохранить > файл". Вызовите его train.py.

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

    • Убедитесь, что код запускает автозалогирование (mlflow.sklearn.autolog()).
    • При интерактивном запуске скрипта Python (при выполнении здесь) можно сохранить строку, определяющую имя эксперимента (mlflow.set_experiment("Develop on cloud tutorial")). Или даже присвойте ему другое имя, чтобы увидеть его как другую запись в разделе "Задания ". Но при подготовке скрипта для задания обучения эта строка не применяется и должна быть опущена. Определение задания включает имя эксперимента.
    • При обучении одной модели строки для запуска и завершения выполнения (mlflow.start_run() и mlflow.end_run()) также не нужны (они не будут иметь эффекта), но могут быть оставлены, если вы хотите.
  4. Завершив редактирование, сохраните файл.

Теперь у вас есть скрипт Python для обучения предпочитаемой модели.

выполнение скрипта Python.

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

  1. Выберите среду, созданную ранее в этом руководстве, в качестве версии Python (workstations_env). В правом нижнем углу записной книжки вы увидите имя среды. Выберите ее, а затем выберите среду в середине экрана.

    Снимок экрана: выбор новой среды.

  2. Теперь запустите скрипт Python. Используйте средство запуска файла Python в правом верхнем углу.

    Снимок экрана: средство запуска файла Python в правом верхнем углу экрана.

Примечание.

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

Проверка результатов скрипта

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

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

Если вы планируете перейти к другим руководствам, перейдите к следующим шагам.

Остановка вычислительного экземпляра

Если вы сейчас не планируете использовать вычислительный экземпляр, остановите его, выполнив следующие действия:

  1. В студии в левой области навигации выберите "Вычисления".
  2. Из вкладок вверху выберите Вычислительные экземпляры.
  3. Выберите вычислительный экземпляр из списка.
  4. В верхней панели инструментов выберите Остановить.

Удаление всех ресурсов

Внимание

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

Если вы не планируете использовать созданные вами ресурсы, удалите их, чтобы с вас не взималась плата:

  1. В портал Azure в поле поиска введите группы ресурсов и выберите его из результатов.

  2. Выберите созданную группу ресурсов из списка.

  3. На странице "Обзор" выберите "Удалить группу ресурсов".

    Снимок экрана с выбранными параметрами для удаления группы ресурсов на портале Azure.

  4. Введите имя группы ресурсов. Затем выберите Удалить.

Следующие шаги

Дополнительные сведения:

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