Поделиться через


Выполнение скриптов Python машинного обучения в Студии машинного обучения (классической)

ОБЛАСТЬ ПРИМЕНЕНИЯ К:Применимо к.Машинное обучение Studio (классическая) Не применяется к.Машинное обучение Azure

Внимание

Поддержка Студии машинного обучения (классической) будет прекращена 31 августа 2024 г. До этой даты рекомендуется перейти на Машинное обучение Azure.

Начиная с 1 декабря 2021 года вы не сможете создавать новые ресурсы Студии машинного обучения (классической). Существующие ресурсы Студии машинного обучения (классической) можно будет использовать до 31 августа 2024 г.

Прекращается поддержка документации по Студии машинного обучения (классической). В будущем она может не обновляться.

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

В этой статье показано, как использовать модуль выполнения скриптов Python для использования кода Python в экспериментах и веб-службах Студии машинного обучения (классической).

Использование модуля выполнения скриптов Python

Основной интерфейс для Python в студии (классическая модель) реализуется с помощью модуля выполнения скриптов Python. Он имеет до трех входов и до двух выходов, аналогично модулю выполнения скриптов R. Выполняемый код Python вводится в поле параметра в качестве специально именованной функции точки входа azureml_main.

Модуль Выполнение сценария Python

Пример кода Python в поле параметра модуля

Входные параметры

Входные данные, вводимые в модуль Python, представляются в виде кадров данных Pandas. Функция azureml_main принимает в качестве параметров до двух необязательных кадров данных Pandas.

Сопоставление входных портов и параметров функции выполняется по позиционному принципу:

  • Первый подключенный входной порт сопоставляется с первым параметром функции.
  • Второй входной порт (если он подключен) сопоставляется со вторым параметром функции.
  • Третий ввод используется для импорта дополнительных модулей Python.

Более подробная семантика сопоставления входных портов с параметрами функции azureml_main показана ниже.

Таблица конфигураций входных портов и результирующая подпись Python

Возвращаемые значения выходных данных

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

Сопоставление входных портов с параметрами и возвращаемого значения с входным портом

Преобразование типов входных и выходных данных

Наборы данных студии не совпадают с кадрами данных Panda. В результате входные наборы данных в студии (классическая модель) преобразуются в кадры данных Pandas, а выходные кадры данных преобразуются обратно в наборы данных студии (классическая модель). В ходе этого процесса преобразования также выполняются следующие преобразования.

Типы данных Python Процедура преобразования студии
Строки и числовые значения Преобразовано как есть
Pandas "НД" Преобразовано как "отсутствующее значение"
Векторы индекса Не поддерживается *
Имена столбцов, не являющихся строками Вызов str для имен столбцов
Повторяющиеся имена столбцов Добавьте числовой суффикс: (1), (2), (3) и т. д.

*Все входные кадры данных в функции Python будут всегда содержать 64-разрядный числовой индекс от 0 до соответствующего количества строк минус 1

Импорт существующих модулей сценариев Python

Серверная часть, используемая для выполнения кода Python, работает на базе широко используемого научного дистрибутива Python Anaconda. Она поставляется с приблизительно 200 наиболее распространенными пакетами Python. В настоящее время студия (классическая модель) не поддерживает использование систем управления пакетами, таких как PIP или Conda, для установки внешних библиотек и управления ими. Если требуется включить дополнительные библиотеки, в качестве рекомендации используйте следующий сценарий.

Распространенным вариантом использования является включение существующих скриптов Python в эксперименты студии (классическая модель). Модуль выполнения скриптов Python принимает ZIP-файл, содержащий модули Python, по третьему порту ввода. Этот файл распаковывается во время выполнения в среда выполнения, а его содержимое добавляется в путь к библиотеке интерпретатора Python. После этого функция точки входа azureml_main может импортировать эти модули напрямую.

Рассмотрим в качестве примера файл Hello.py, содержащий простую функцию "Hello, World".

Определяемая пользователем функция в файле Hello.py

Далее мы создаем файл Hello.zip, содержащий файл Hello.py:

ZIP-файл, содержащий пользовательский код Python

Отправьте ZIP-файл в качестве набора данных в студии (классическая модель). Затем создайте и запустите эксперимент с использованием кода Python в файле Hello.zip, передав его на третий входной порт модуля выполнения скриптов Python, как показано на рисунке ниже.

Пример эксперимента с файлом Hello.zip, используемого в качестве входных данных для модуля выполнения скриптов Python

Пользовательский код Python отправлен в виде ZIP-файла

В выходных данных модуля можно увидеть, что ZIP-файл был распакован, и функция print_hello была выполнена.

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

Доступ к BLOB-объектам Azure

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

  1. Скачайте локально пакет хранилища BLOB-объектов Azure для Python.
  2. Отправьте ZIP-файл в рабочую область студии (классическая модель) в качестве набора данных.
  3. Создайте объект BlobService с помощью protocol='http'
from azure.storage.blob import BlockBlobService

# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='account_name', account_key='account_key', protocol='http')
  1. На вкладке параметров Конфигурации хранилища необходимо отключить параметр Требуется безопасное перемещение

Выключение параметра

Выполнение сценариев Python

При публикации в качестве веб-службы вызываются любые модули Execute Python Script (Выполнение сценария Python) в оценивающем эксперименте. Например, на рисунке ниже показан оценивающий эксперимент с кодом для оценки одного выражения Python.

Рабочая область студии для веб-службы

Выражение Pandas Python

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

  1. принимает выражение Python (в виде строки) в качестве входных данных;
  2. отправляет выражение Python в интерпретатор Python;
  3. возвращает таблицу, содержащую выражение и результат вычисления.

Работа с визуализациями

Модуль выполнения скриптов Python может возвратить созданные с помощью MatplotLib графики. Однако эти графики не будут автоматически перенаправляться к изображениям, как это происходит при использовании языка R. Поэтому пользователь должен явным образом сохранить все графики в PNG-файлы.

Чтобы создавать изображения с помощью MatplotLib, выполните следующие действия.

  1. Переключитесь с серверной части на AGG в стандартном отрисовщике, разработанном с использованием библиотеки Qt.
  2. Создайте новый объект фигуры.
  3. Получите ось и постройте все графики по ней.
  4. Сохраните фигуру в PNG-файл.

Этот процесс показан на следующих рисунках. Создается матрица точечной диаграммы с помощью функции scatter_matrix в Pandas.

Код для сохранения фигур MatplotLib в изображениях

Щелкните

Визуализация графиков для примера эксперимента с помощью кода Python

Можно вернуть несколько фигур, сохранив их в различных изображениях. Студия (классическая модель) выбирает все изображения и объединяет их для визуализации.

Сложные примеры

Среда Anaconda, установленная в студии (классическая модель), содержит общие пакеты, такие как NumPy, SciPy и Scikits-Learn, которые можно эффективно использовать для выполнения различных задач обработки данных в конвейере Машинного обучения.

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

Ниже показана функция Python, используемая для вычисления оценки важности и упорядочивания компонентов на основе этой оценки:

Функция ранжирования компонентов по баллам

Затем следующий эксперимент вычисляет и возвращает оценки важности признаков в наборе данных "Диабет у индейцев пима" в Студии машинного обучения (классической).

Эксперимент по ранжированию компонентов в наборе данных

Визуализация выходных данных модуля выполнения скриптов Python

Ограничения

На данный момент в модуле выполнения скриптов Python имеются следующие ограничения.

Выполнение в изолированном режиме

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

Отсутствие расширенной поддержки разработки и отладки

В настоящее время модуль Python не поддерживает возможности интегрированной среды разработки, такие как Intellisense и отладка. Кроме того, при сбое модуля во время выполнения доступен полный стек трассировки Python. Его необходимо просматривать в журнале выходных данных для модуля. Сейчас мы советуем вам разрабатывать и отлаживать сценарии Python в таких средах, как IPython, а затем импортировать код в модуль.

Выходные данные с одним кадром данных

Точке входа Python разрешено возвращать только один кадр данных в качестве выходных данных. В настоящее время не возвращаются такие произвольные объекты Python, как обученные модели, непосредственно в среду выполнения студии Машинного обучения Azure (классическая модель). Как и в модуле Execute R Script (Выполнить сценарий R) с такими же ограничениями, во многих случаях возможно поместить объект в массив байтов, а затем возвратить его в кадр данных.

Невозможность настроить установку Python

Сейчас единственный возможный способ добавить пользовательские модули Python — применение механизма с использованием ZIP-файла, описанного выше. Несмотря на то что этот механизм можно применять для небольших модулей, он не подходит для больших модулей (особенно модули со встроенными библиотеками DLL) или большого количества модулей.

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

Дополнительную информацию можно найти в Центре разработчика Python.