Руководство по отправке, доступу и просмотру данных в Машинное обучение Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python azure-ai-ml версии 2 (current)
Из этого руководства вы узнаете, как выполнить следующие задачи:
- Отправка данных в облачное хранилище
- Создание ресурса данных Машинное обучение Azure
- Доступ к данным в записной книжке для интерактивной разработки
- Создание новых версий ресурсов данных
Проект машинного обучения обычно начинается с анализа аналитических данных (EDA), предварительной обработки данных (очистки, проектирования признаков) и создания прототипов моделей Машинное обучение для проверки гипотез. Этот этап создания прототипов является очень интерактивным. Она позволяет разрабатывать в интегрированной среде разработки или записной книжке Jupyter с интерактивной консолью Python. В этом руководстве описаны эти идеи.
В этом видео показано, как приступить к работе в Студия машинного обучения Azure, чтобы выполнить действия, описанные в руководстве. В видео показано, как создать записную книжку, клонировать записную книжку, создать вычислительный экземпляр и скачать данные, необходимые для руководства. Действия также описаны в следующих разделах.
Необходимые компоненты
-
Чтобы использовать Машинное обучение Azure, вам нужна рабочая область. Если у вас нет ресурсов, выполните инструкции по созданию рабочей области и узнайте больше об использовании.
-
Войдите в студию и выберите рабочую область, если она еще не открыта.
-
Откройте или создайте записную книжку в рабочей области:
- Если вы хотите скопировать и вставить код в ячейки, создайте новую записную книжку.
- Кроме того, откройте учебники/начало работы с записными книжками/обзор-data.ipynb из раздела "Примеры " студии. Затем выберите "Клонировать", чтобы добавить записную книжку в файлы. Чтобы найти примеры записных книжек, ознакомьтесь с примерами записных книжек.
Установка ядра и открытие в Visual Studio Code (VS Code)
На верхней панели над открытой записной книжкой создайте вычислительный экземпляр, если у вас еще нет.
Если вычислительный экземпляр остановлен, нажмите кнопку "Пуск вычислений " и дождитесь, пока он не будет запущен.
Подождите, пока вычислительный экземпляр не будет запущен. Затем убедитесь, что ядро, найденное в правом верхнем углу, имеется
Python 3.10 - SDK v2
. В противном случае используйте раскрывающийся список для выбора этого ядра.Если вы не видите это ядро, убедитесь, что вычислительный экземпляр запущен. Если это так, нажмите кнопку "Обновить " в правом верхнем углу записной книжки.
Если вы видите баннер, который говорит, что необходимо пройти проверку подлинности, выберите "Проверка подлинности".
Вы можете запустить записную книжку здесь или открыть ее в VS Code для полной интегрированной среды разработки (IDE) с помощью Машинное обучение Azure ресурсов. Выберите "Открыть" в VS Code, а затем выберите вариант веб-приложения или рабочего стола. При запуске таким образом VS Code присоединяется к вычислительному экземпляру, ядру и файловой системе рабочей области.
Внимание
Остальная часть этого руководства содержит ячейки записной книжки учебника. Скопируйте и вставьте их в новую записную книжку или переключитесь на записную книжку, если она клонирована.
Скачивание данных, используемых в этом руководстве
Для приема данных обозреватель данных обрабатывает необработанные данные в этих форматах. В этом руководстве используется пример данных клиента кредитной карты в формате CSV. Действия, описанные в ресурсе Машинное обучение Azure. В этом ресурсе мы создадим локальную папку с предлагаемым именем данных непосредственно в папке, в которой находится эта записная книжка.
Примечание.
Это руководство зависит от данных, помещенных в папку ресурсов Машинное обучение Azure. В этом руководстве "локальный" означает расположение папки в этом Машинное обучение Azure ресурсе.
Выберите "Открыть терминал " под тремя точками, как показано на этом рисунке:
Откроется окно терминала на новой вкладке.
Убедитесь, что вы
cd
(измените каталог) в ту же папку, в которой находится эта записная книжка. Например, если записная книжка находится в папке с именем get-started-notebooks:cd get-started-notebooks # modify this to the path where your notebook is located
Введите эти команды в окне терминала, чтобы скопировать данные в вычислительный экземпляр:
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
Теперь можно закрыть окно терминала.
Дополнительные сведения о данных в репозитории UC Irvine Машинное обучение см. в этом ресурсе.
Создание дескриптора в рабочей области
Перед изучением кода вам потребуется способ ссылаться на рабочую область. Вы создадите ml_client
дескриптор для рабочей области. Затем вы используете ml_client
для управления ресурсами и заданиями.
В следующей ячейке введите идентификатор подписки, имя группы ресурсов и имя рабочей области. Вот как найти эти значения:
- На панели инструментов Студия машинного обучения Azure в правом верхнем углу выберите имя рабочей области.
- Скопируйте значение рабочей области, группы ресурсов и идентификатор подписки в код.
- Необходимо отдельно скопировать значения по одному, закрыть область и вставить, а затем перейти к следующей.
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>",
)
Примечание.
Создание MLClient не будет подключаться к рабочей области. Инициализация клиента отложена. Он ожидает в первый раз, когда он должен сделать звонок. Это происходит в следующей ячейке кода.
Отправка данных в облачное хранилище
Машинное обучение 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}")
Чтобы проверить отправленные данные, выберите "Данные " слева. Данные передаются и создается ресурс данных:
Эти данные называются кредитной картой, а на вкладке "Ресурсы данных" его можно увидеть в столбце "Имя ".
Хранилище данных Машинное обучение Azure — это ссылка на существующую учетную запись хранения в Azure. Хранилище данных предлагает следующие преимущества:
Распространенный и простой API для взаимодействия с различными типами хранилища
- Azure Data Lake Storage
- BLOB-объект
- Файлы
методы проверки подлинности и методы проверки подлинности.
Более простой способ обнаружения полезных хранилищ данных при работе с командой.
В скриптах можно скрыть сведения о подключении для доступа к данным на основе учетных данных (субъект-служба/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()
Дополнительные сведения о доступе к данным в записной книжке см . в разделе "Доступ к данным из облачного хранилища 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_card_clients.csv файле. CSV-файл, скачанный на предыдущем шаге. Отправленные данные содержат 23 пояснительные переменные и 1 переменные ответа, как показано ниже:
Имена столбцов | Тип переменной | Description |
---|---|---|
X1 | Объяснительный | Сумма данного кредита (NT доллар): она включает как индивидуальный потребительский кредит, так и их семью (дополнительный) кредит. |
X2 | Объяснительный | Пол (1 = мужчина; 2 = женщина). |
x3 | Объяснительный | Образование (1 = выпускная школа; 2 = университет; 3 = средняя школа; 4 = другие). |
x4 | Объяснительный | Семейное состояние (1 = женат; 2 = сингл; 3 = другие). |
x5 | Объяснительный | Возраст (годы). |
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))
Очистка ресурсов
Если вы планируете перейти к другим руководствам, перейдите к следующим шагам.
Остановка вычислительного экземпляра
Если вы не планируете использовать его сейчас, остановите вычислительный экземпляр:
- В студии в левой области навигации выберите "Вычисления".
- Из вкладок вверху выберите Вычислительные экземпляры.
- Выберите вычислительный экземпляр из списка.
- В верхней панели инструментов выберите Остановить.
Удаление всех ресурсов
Внимание
Созданные вами ресурсы могут использоваться в качестве необходимых компонентов при работе с другими руководствами по Машинному обучению Azure.
Если вы не планируете использовать созданные вами ресурсы, удалите их, чтобы с вас не взималась плата:
В портал Azure в поле поиска введите группы ресурсов и выберите его из результатов.
Выберите созданную группу ресурсов из списка.
На странице "Обзор" выберите "Удалить группу ресурсов".
Введите имя группы ресурсов. Затем выберите Удалить.
Следующие шаги
Дополнительные сведения о ресурсах данных см. в статье "Создание ресурсов данных".
Дополнительные сведения о хранилищах данных см. в статье "Создание хранилищ данных".
Перейдите к следующему руководству, чтобы узнать, как разработать скрипт обучения: