Руководство по отправке, доступу и просмотру данных в Машинное обучение Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python azure-ai-ml версии 2 (current)

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

  • Отправка данных в облачное хранилище
  • Создание ресурса данных Машинное обучение Azure
  • Доступ к данным в записной книжке для интерактивной разработки
  • Создание новых версий ресурсов данных

Начало проекта машинного обучения обычно включает в себя анализ аналитических данных (EDA), предварительную обработку данных (очистку, проектирование признаков) и создание прототипов модели Машинное обучение для проверки гипотез. Этот этап создания прототипов является очень интерактивным. Она позволяет разрабатывать в интегрированной среде разработки или записной книжке Jupyter с интерактивной консолью Python. В этом руководстве описаны эти идеи.

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

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

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

  2. Войдите в студию и выберите рабочую область, если она еще не открыта.

  3. Откройте или создайте записную книжку в рабочей области:

    • Создайте записную книжку, если вы хотите скопировать и вставить код в ячейки.
    • Кроме того, откройте учебники/начало работы с записными книжками/обзор-data.ipynb из раздела "Примеры " студии. Затем выберите "Клонировать", чтобы добавить записную книжку в файлы. (См. сведения о том, где найти примеры.)

Настройка ядра

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

    Screenshot shows how to create a compute instance.

  2. Если вычислительный экземпляр остановлен, нажмите кнопку "Пуск вычислений " и подождите, пока она не будет запущена.

    Screenshot shows how to start compute if it is stopped.

  3. Убедитесь, что ядро, найденное в правом верхнем углу.Python 3.10 - SDK v2 В противном случае используйте раскрывающийся список для выбора этого ядра.

    Screenshot shows how to set the kernel.

  4. Если вы видите баннер, который говорит, что необходимо пройти проверку подлинности, выберите "Проверка подлинности".

Внимание

Остальная часть этого руководства содержит ячейки записной книжки учебника. Скопируйте и вставьте их в новую записную книжку или переключитесь на записную книжку, если она клонирована.

Скачивание данных, используемых в этом руководстве

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

Примечание.

Это руководство зависит от данных, помещенных в папку ресурсов Машинное обучение Azure. В этом руководстве "локальный" означает расположение папки в этом Машинное обучение Azure ресурсе.

  1. Выберите "Открыть терминал " под тремя точками, как показано на этом рисунке:

    Screenshot shows open terminal tool in notebook toolbar.

  2. Откроется окно терминала на новой вкладке.

  3. Убедитесь, что эта cd записная книжка находится в той же папке. Например, если записная книжка находится в папке с именем get-started-notebooks:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Введите эти команды в окне терминала, чтобы скопировать данные в вычислительный экземпляр:

    mkdir data
    cd data                     # the sub-folder where you'll store the data
    wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv
    
  5. Теперь можно закрыть окно терминала.

Дополнительные сведения об этих данных в репозитории Машинное обучение UCI.

Создание дескриптора в рабочей области

Прежде чем мы рассмотрим код, вам потребуется способ ссылаться на рабочую область. Вы создадите ml_client дескриптор для рабочей области. Затем вы будете использовать ml_client для управления ресурсами и заданиями.

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

  1. На панели инструментов в правом верхнем углу Студии машинного обучения Azure выберите имя рабочей области.
  2. Скопируйте значение для рабочей области, группы ресурсов и идентификатора подписки в код.
  3. Необходимо скопировать одно значение, закрыть область и вставить, а затем вернуться к следующей.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# authenticate
credential = DefaultAzureCredential()

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

Примечание.

При создании клиента ML не будет выполняться подключение к рабочей области. Инициализация клиента отложена, она ожидает первого вызова (это произойдет в следующей ячейке кода).

Отправка данных в облачное хранилище

Машинное обучение Azure использует универсальные идентификаторы ресурсов (URI), которые указывают на расположения хранилища в облаке. Универсальный код ресурса (URI) упрощает доступ к данным в записных книжках и заданиях. Форматы URI данных похожи на URL-адреса, используемые в веб-браузере для доступа к веб-страницам. Например:

  • Доступ к данным с общедоступного https-сервера: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Доступ к данным из Azure Data Lake 2-го поколения: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Ресурс данных Машинное обучение Azure похож на закладки веб-браузера (избранное). Вместо запоминания длинных путей хранения (URI), указывающих на наиболее часто используемые данные, можно создать ресурс данных, а затем получить доступ к нему с понятным именем.

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

Совет

Для отправки данных меньшего размера Машинное обучение Azure создание ресурса данных хорошо подходит для отправки данных из локальных ресурсов компьютера в облачное хранилище. Этот подход позволяет избежать необходимости использования дополнительных средств или служебных программ. Однако для отправки данных большего размера может потребоваться выделенное средство или служебная программа, например azcopy. Средство командной строки azcopy перемещает данные в служба хранилища Azure и из нее. Узнайте больше об azcopy здесь.

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

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

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

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

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystem

my_path = "./data/default_of_credit_card_clients.csv"
# set the version number of the data asset
v1 = "initial"

my_data = Data(
    name="credit-card",
    version=v1,
    description="Credit card data",
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## create data asset if it doesn't already exist:
try:
    data_asset = ml_client.data.get(name="credit-card", version=v1)
    print(
        f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}"
    )
except:
    ml_client.data.create_or_update(my_data)
    print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

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

Screenshot shows the data in studio.

Эти данные называются кредитными карта, а на вкладке "Ресурсы данных" его можно увидеть в столбце "Имя". Эти данные, отправленные в хранилище данных по умолчанию рабочей области с именем workspaceblobstore, видно в столбце источника данных.

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

  1. Распространенный и простой API для взаимодействия с различными типами хранилища (BLOB-объектов/Files/Azure Data Lake служба хранилища) и методами проверки подлинности.
  2. Более простой способ обнаружения полезных хранилищ данных при работе с командой.
  3. В скриптах можно скрыть сведения о подключении для доступа к данным на основе учетных данных (субъект-служба/SAS/ключ).

Доступ к данным в записной книжке

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

import pandas as pd

df = pd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")

Однако, как упоминание ранее, это может стать трудно вспомнить эти URI. Кроме того, необходимо вручную заменить все <значения подстроки> в команде pd.read_csv реальными значениями ресурсов.

Вы хотите создать ресурсы данных для часто доступных данных. Ниже приведен более простой способ доступа к CSV-файлу в Pandas:

Внимание

В ячейке записной книжки выполните этот код, чтобы установить библиотеку azureml-fsspec Python в ядре Jupyter:

%pip install -U azureml-fsspec
import pandas as pd

# get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")

# read into pandas - note that you will see 2 headers in your data frame - that is ok, for now

df = pd.read_csv(data_asset.path)
df.head()

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

Создание новой версии ресурса данных

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

  • два заголовка
  • столбец идентификатора клиента; Мы не будем использовать эту функцию в Машинное обучение
  • пробелы в имени переменной ответа

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

# read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# remove ID column
df.drop("ID", axis=1, inplace=True)

# write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")

В этой таблице показана структура данных в исходном default_of_credit_карта_clients.csv файле. CSV-файл, скачанный на предыдущем шаге. Отправленные данные содержат 23 пояснительные переменные и 1 переменные ответа, как показано ниже:

Имена столбцов Тип переменной Description
X1 Пояснительные Сумма данного кредита (NT доллар): она включает как индивидуальный потребительский кредит, так и их семью (дополнительный) кредит.
X2 Пояснительные Пол (1 = мужчина; 2 = женщина).
x{_>3<_} Пояснительные Образование (1 = выпускная школа; 2 = университет; 3 = средняя школа; 4 = другие).
x{_>4<_} Пояснительные Семейное состояние (1 = женат; 2 = сингл; 3 = другие).
x{_>5<_} Пояснительные Возраст (годы).
X6-X11 Пояснительные История прошлого платежа. Мы отслеживали последние ежемесячные платежи (с апреля по сентябрь 2005 года). -1 = оплатить должным образом; 1 = задержка платежа в течение одного месяца; 2 = задержка платежа в течение двух месяцев; . .; 8 = задержка платежа в течение восьми месяцев; 9 = задержка платежа в течение девяти месяцев и выше.
X12-17 Пояснительные Сумма заявления о выставлении счетов (NT доллар) с апреля по сентябрь 2005 года.
X18-23 Пояснительные Сумма предыдущей оплаты (NT доллар) с апреля по сентябрь 2005 года.
Y Response Оплата по умолчанию (Да = 1, Нет = 0)

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

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time

# Next, create a new *version* of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"

# Define the data asset, and use tags to make it clear the asset can be used in training

my_data = Data(
    name="credit-card",
    version=v2,
    description="Default of credit card clients data.",
    tags={"training_data": "true", "format": "parquet"},
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## create the data asset

my_data = ml_client.data.create_or_update(my_data)

print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

Чистый файл parquet — это последний источник данных версии. В этом коде сначала показан результирующий набор версий CSV, а затем версия Parquet:

import pandas as pd

# get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)

# print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))

# print the v2 data
print(
    "_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))

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

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

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

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

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

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

Внимание

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

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

  1. На портале Azure выберите Группы ресурсов в левой части окна.

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

  3. Выберите команду Удалить группу ресурсов.

    Screenshot of the selections to delete a resource group in the Azure portal.

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

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

Дополнительные сведения о ресурсах данных см. в статье "Создание ресурсов данных".

Дополнительные сведения о хранилищах данных см. в статье "Создание хранилищ данных".

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