Создание ресурса данных
Как специалист по обработке и анализу данных, вы хотите сосредоточиться на обучении моделей машинного обучения. Хотя вам нужен доступ к данным в качестве входных данных для модели машинного обучения, вы не хотите беспокоиться о том, как получить доступ. Чтобы упростить доступ к данным, с которыми вы хотите работать, можно использовать ресурсы данных.
Общие сведения о ресурсах данных
В Машинное обучение Azure ресурсы данных ссылаются на то, где хранятся данные, как получить доступ и любые другие соответствующие метаданные. Вы можете создать ресурсы данных, чтобы получить доступ к данным в хранилищах данных, службах хранилища Azure, общедоступных URL-адресах или данных, хранящихся на локальном устройстве.
Преимущества использования ресурсов данных:
- Вы можете предоставлять общий доступ к данным и повторно использовать их другим членам команды, чтобы не запоминать расположения файлов.
- Вы можете легко получить доступ к данным во время обучения модели (для любого поддерживаемого типа вычислений), не беспокоясь о строках подключения или путях к данным.
- Вы можете версии метаданных ресурса данных.
Существует три основных типа ресурсов данных, которые можно использовать:
- URI-файл: указывает на определенный файл.
- Папка URI: указывает на папку.
- MLTable: указывает на папку или файл и включает схему для чтения в виде табличных данных.
Примечание.
URI обозначает универсальный идентификатор ресурса и обозначает расположение хранилища на локальном компьютере, BLOB-объекте Azure или Data Lake Storage, общедоступном расположении https или даже подключенном хранилище данных.
Когда следует использовать ресурсы данных
Ресурсы данных наиболее полезны при выполнении задач машинного обучения в качестве заданий Машинное обучение Azure. В качестве задания можно запустить скрипт Python, который принимает входные данные и создает выходные данные. Ресурс данных можно проанализировать как входные, так и выходные данные задания Машинное обучение Azure.
Давайте рассмотрим каждый из типов ресурсов данных, как создать их и как использовать ресурс данных в задании.
Создание ресурса данных файла URI
Ресурс данных файла URI указывает на определенный файл. Машинное обучение Azure сохраняет только путь к файлу, что означает, что можно указать любой тип файла. При использовании ресурса данных укажите способ чтения данных, который зависит от типа данных, к которым вы подключаетесь.
Поддерживаемые пути, которые можно использовать при создании ресурса данных файлов URI:
- Местный:
./<path>
- Хранилище BLOB-объектов Azure:
wasbs://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
- Azure Data Lake Storage (2-го поколения):
abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>
- Хранилище данных:
azureml://datastores/<datastore_name>/paths/<folder>/<file>
Внимание
Когда вы создаете ресурс данных и указываете на файл или папку, хранящиеся на локальном устройстве, копия файла или папки будет отправлена в хранилище workspaceblobstore
данных по умолчанию. Файл или папку можно найти в папке LocalUpload
. Отправив копию, вы по-прежнему сможете получить доступ к данным из рабочей области Машинное обучение Azure, даже если локальное устройство, на котором хранятся данные, недоступны.
Чтобы создать ресурс данных файлов URI, можно использовать следующий код:
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
my_path = '<supported-path>'
my_data = Data(
path=my_path,
type=AssetTypes.URI_FILE,
description="<description>",
name="<name>",
version="<version>"
)
ml_client.data.create_or_update(my_data)
При анализе ресурса данных URI в качестве входных данных в задании Машинное обучение Azure необходимо сначала считывать данные, прежде чем работать с ним.
Представьте, что вы создаете скрипт Python, который вы хотите запустить в качестве задания, и вы задаете значение входного параметра input_data
для ресурса URI файлового ресурса (который указывает на CSV-файл). Данные можно считывать, включив следующий код в скрипт Python:
import argparse
import pandas as pd
parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()
df = pd.read_csv(args.input_data)
print(df.head(10))
Если ресурс данных URI указывает на другой тип файла, необходимо использовать соответствующий код Python для чтения данных. Например, если вместо CSV-файлов вы работаете с JSON-файлами, вместо этого будет использоваться pd.read_json()
.
Создание ресурса данных папки URI
Ресурс данных папки URI указывает на определенную папку. Он работает аналогично ресурсу данных файла URI и поддерживает те же пути.
Чтобы создать ресурс данных папки URI с помощью пакета SDK для Python, можно использовать следующий код:
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
my_path = '<supported-path>'
my_data = Data(
path=my_path,
type=AssetTypes.URI_FOLDER,
description="<description>",
name="<name>",
version='<version>'
)
ml_client.data.create_or_update(my_data)
При анализе ресурса данных папки URI в качестве входных данных в задании Машинное обучение Azure необходимо сначала считывать данные, прежде чем работать с ним.
Представьте, что вы создаете скрипт Python, который вы хотите запустить в качестве задания, и вы задаете значение входного параметра input_data
для ресурса (URI) в качестве ресурса данных папки URI (который указывает на несколько CSV-файлов). Вы можете прочитать все CSV-файлы в папке и объединить их, включив следующий код в скрипт Python:
import argparse
import glob
import pandas as pd
parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()
data_path = args.input_data
all_files = glob.glob(data_path + "/*.csv")
df = pd.concat((pd.read_csv(f) for f in all_files), sort=False)
В зависимости от типа данных, с которыми вы работаете, код, используемый для чтения файлов, может измениться.
Создание ресурса данных MLTable
Ресурс данных MLTable позволяет указывать на табличные данные. При создании ресурса данных MLTable необходимо указать определение схемы для чтения данных. Так как схема уже определена и хранится в ресурсе данных, вам не нужно указывать, как считывать данные при его использовании.
Поэтому вы хотите использовать ресурс данных MLTable, если схема данных является сложной или часто изменяется. Вместо изменения того, как считывать данные в каждом скрипте, использующего данные, необходимо только изменить его в самом ресурсе данных.
При определении схемы при создании ресурса данных MLTable можно также указать только подмножество данных.
Для некоторых функций в Машинное обучение Azure, таких как автоматизированные Машинное обучение, необходимо использовать ресурс данных MLTable, так как Машинное обучение Azure необходимо знать, как считывать данные.
Чтобы определить схему, можно включить файл MLTable в ту же папку, что и данные, которые требуется прочитать. Файл MLTable содержит путь, указывающий на данные, которые требуется прочитать, и как считывать данные:
type: mltable
paths:
- pattern: ./*.txt
transformations:
- read_delimited:
delimiter: ','
encoding: ascii
header: all_files_same_headers
Совет
Дополнительные сведения о создании файла MLTable и о том, какие преобразования можно включить.
Чтобы создать ресурс данных MLTable с помощью пакета SDK для Python, можно использовать следующий код:
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
my_path = '<path-including-mltable-file>'
my_data = Data(
path=my_path,
type=AssetTypes.MLTABLE,
description="<description>",
name="<name>",
version='<version>'
)
ml_client.data.create_or_update(my_data)
При анализе ресурса данных MLTable в качестве входных данных в скрипт Python, который вы хотите запустить в качестве задания Машинное обучение Azure, можно включить следующий код для чтения данных:
import argparse
import mltable
import pandas
parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()
tbl = mltable.load(args.input_data)
df = tbl.to_pandas_dataframe()
print(df.head(10))
Распространенный подход — преобразование табличных данных в кадр данных Pandas. Однако вы также можете преобразовать данные в кадр данных Spark, если это подходит для рабочей нагрузки лучше.