Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Машинное обучение Azure управляемое хранилище функций помогает обнаруживать, создавать и использовать функции. Функции служат соединительной тканью в жизненном цикле машинного обучения, начиная с этапа прототипирования, где вы экспериментируйте с различными функциями. Этот жизненный цикл продолжается на этапе операционализации, где вы развертываете модели и шаги вывода извлекают данные признаков. Дополнительные сведения об управляемом хранилище функций см. в разделе "Что такое управляемое хранилище компонентов"?
Это важно
Кэш Azure для Redis объявил о своем графике снятия с поддержки для всех конфигураций SKU. Мы рекомендуем переместить существующие экземпляры Кэш Azure для Redis в Azure Managed Redis сразу же.
Руководство по миграции:
- Переносите уровни Basic, Standard и Premium в Azure Managed Redis
- Перенесите корпоративный уровень на Azure Managed Redis.
Дополнительные сведения о выходе на пенсию:
В руководстве 1 показано, как создать спецификацию набора компонентов с пользовательскими преобразованиями, а затем использовать этот набор функций для создания обучающих данных, включения материализации и выполнения обратной заполнения. В руководстве 2 показано, как экспериментировать с функциями для повышения производительности модели, а затем обучить и зарегистрировать модель, использующую функции. В руководстве 3 показано, как включить повторяющуюся материализацию для transactions набора компонентов и запустить конвейер вывода пакетной службы. Руководство 4 показано, как включить онлайн-материализацию и запустить онлайн-вывод.
В этом руководстве вы узнаете, как это сделать
- Определите логику для загрузки данных из пользовательского источника данных.
- Настройте и зарегистрируйте набор компонентов для использования из этого пользовательского источника данных.
- Проверьте зарегистрированный набор компонентов.
Предварительные требования
Примечание.
В этом руководстве используется записная книжка Машинное обучение Azure с Serverless Spark Compute.
- Обязательно выполните учебники 1–4 в этой серии. В этом руководстве повторно используется хранилище компонентов и другие ресурсы, созданные в предыдущих руководствах.
Настройка
В этом руководстве используется основной пакет SDK для хранилища компонентов Python (azureml-featurestore). Пакет SDK Python используется для операций создания, чтения, обновления и удаления (CRUD) в хранилищах компонентов, наборах компонентов и сущностях хранилища компонентов.
Вам не нужно явно настраивать эти ресурсы для этого руководства, так как в инструкциях по настройке, приведенных здесь, файл conda.yml охватывает их.
Настройка записной книжки Машинное обучение Azure Spark
Вы можете создать новый ноутбук и пошагово выполнить инструкции в этом руководстве. Вы также можете открыть и запустить существующую записную книжку featurestore_sample/notebooks/sdk_only/5.Develop-feature-set-custom-source.ipynb. Держите это руководство открытым и регулярно обращайтесь к нему для получения ссылок на документацию и дополнительных пояснений.
В верхнем меню в раскрывающемся списке Compute выберите Serverless Spark Compute в разделе Машинное обучение Azure Serverless Spark.
Настройка сеанса:
- Выберите " Настройка сеанса " в верхней строке состояния
- Перейдите на вкладку Пакеты Python, выберите Загрузить Conda-файл
- Выберите Conda файл для загрузки
- Отправьте файл conda.yml , который вы добавили в учебнике 1.
- При необходимости увеличьте время ожидания сеанса (время простоя), чтобы избежать частого повторного выполнения предварительных требований.
Настройка корневого каталога для примеров
Эта ячейка кода настраивает корневой каталог для примеров. Для установки всех зависимостей и запуска сеанса Spark требуется около 10 минут.
import os
# Please update the dir to ./Users/{your_user_alias} (or any custom directory you uploaded the samples to).
# You can find the name from the directory structure in the left navigation panel.
root_dir = "./Users/<your_user_alias>/featurestore_sample"
if os.path.isdir(root_dir):
print("The folder exists.")
else:
print("The folder does not exist. Please create or fix the path")Инициализация клиента CRUD рабочей области хранилища компонентов
Инициализировать MLClient рабочую область хранилища компонентов, чтобы охватить операции создания, чтения, обновления и удаления (CRUD) в рабочей области хранилища компонентов.
from azure.ai.ml import MLClient
from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
# Feature store
featurestore_name = (
"<FEATURESTORE_NAME>" # use the same name that was used in the tutorial #1
)
featurestore_subscription_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
featurestore_resource_group_name = os.environ["AZUREML_ARM_RESOURCEGROUP"]
# Feature store ml client
fs_client = MLClient(
AzureMLOnBehalfOfCredential(),
featurestore_subscription_id,
featurestore_resource_group_name,
featurestore_name,
)Инициализация основного клиента пакета SDK для хранилища компонентов
Как упоминалось ранее, в этом руководстве используется основной пакет SDK для хранилища компонентов Python (azureml-featurestore). Этот инициализированный клиент SDK охватывает операции создания, чтения, обновления и удаления (CRUD) в хранилищах функций, наборах функций и сущностях хранилища функций.
from azureml.featurestore import FeatureStoreClient
from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
featurestore = FeatureStoreClient(
credential=AzureMLOnBehalfOfCredential(),
subscription_id=featurestore_subscription_id,
resource_group_name=featurestore_resource_group_name,
name=featurestore_name,
)Пользовательское определение источника
Вы можете определить собственную логику загрузки источника из любого хранилища данных, имеющего пользовательское определение источника. Реализуйте класс определяемой пользователем функции (UDF) исходного процессора (CustomSourceTransformer в этом руководстве) для использования этой функции. Этот класс должен определять функцию __init__(self, **kwargs) и process(self, start_time, end_time, **kwargs) функцию. Словарь kwargs предоставляется как часть определения спецификации набора компонентов. Затем это определение передается в UDF. Параметры start_time и end_time вычисляются и передаются в функцию UDF.
Это пример кода для класса UDF исходного процессора:
from datetime import datetime
class CustomSourceTransformer:
def __init__(self, **kwargs):
self.path = kwargs.get("source_path")
self.timestamp_column_name = kwargs.get("timestamp_column_name")
if not self.path:
raise Exception("`source_path` is not provided")
if not self.timestamp_column_name:
raise Exception("`timestamp_column_name` is not provided")
def process(
self, start_time: datetime, end_time: datetime, **kwargs
) -> "pyspark.sql.DataFrame":
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, lit, to_timestamp
spark = SparkSession.builder.getOrCreate()
df = spark.read.json(self.path)
if start_time:
df = df.filter(col(self.timestamp_column_name) >= to_timestamp(lit(start_time)))
if end_time:
df = df.filter(col(self.timestamp_column_name) < to_timestamp(lit(end_time)))
return df
Создайте спецификацию набора функций с настраиваемым источником и экспериментируйте с ним на локальном уровне
Теперь создайте спецификацию набора компонентов с пользовательским определением источника и используйте ее в среде разработки для экспериментов с набором компонентов. Записная книжка учебного пособия, подключенная к Serverless Spark Compute, служит средой разработки.
from azureml.featurestore import create_feature_set_spec
from azureml.featurestore.feature_source import CustomFeatureSource
from azureml.featurestore.contracts import (
SourceProcessCode,
TransformationCode,
Column,
ColumnType,
DateTimeOffset,
TimestampColumn,
)
transactions_source_process_code_path = (
root_dir
+ "/featurestore/featuresets/transactions_custom_source/source_process_code"
)
transactions_feature_transform_code_path = (
root_dir
+ "/featurestore/featuresets/transactions_custom_source/feature_process_code"
)
udf_featureset_spec = create_feature_set_spec(
source=CustomFeatureSource(
kwargs={
"source_path": "wasbs://data@azuremlexampledata.blob.core.windows.net/feature-store-prp/datasources/transactions-source-json/*.json",
"timestamp_column_name": "timestamp",
},
timestamp_column=TimestampColumn(name="timestamp"),
source_delay=DateTimeOffset(days=0, hours=0, minutes=20),
source_process_code=SourceProcessCode(
path=transactions_source_process_code_path,
process_class="source_process.CustomSourceTransformer",
),
),
feature_transformation=TransformationCode(
path=transactions_feature_transform_code_path,
transformer_class="transaction_transform.TransactionFeatureTransformer",
),
index_columns=[Column(name="accountID", type=ColumnType.string)],
source_lookback=DateTimeOffset(days=7, hours=0, minutes=0),
temporal_join_lookback=DateTimeOffset(days=1, hours=0, minutes=0),
infer_schema=True,
)
udf_featureset_spec
Затем определите окно компонента и отобразите значения признаков в этом окне.
from datetime import datetime
st = datetime(2023, 1, 1)
et = datetime(2023, 6, 1)
display(
udf_featureset_spec.to_spark_dataframe(
feature_window_start_date_time=st, feature_window_end_date_time=et
)
)Экспорт в виде спецификации набора компонентов
Чтобы зарегистрировать спецификацию набора компонентов в хранилище компонентов, сначала сохраните эту спецификацию в определенном формате. Просмотрите спецификацию созданного transactions_custom_source набора компонентов. Откройте этот файл из дерева файлов, чтобы просмотреть спецификацию: featurestore/featuresets/transactions_custom_source/spec/FeaturesetSpec.yaml
Спецификация содержит следующие элементы:
-
features: список функций и их типов данных. -
index_columns: ключи соединения, необходимые для доступа к значениям из набора компонентов.
Дополнительные сведения о спецификации см. в разделе "Основные сведения о сущностях верхнего уровня" в управляемом фиче-хранилище и ресурсах с YAML-схемой набора функций CLI (v2).
Сохраняемость спецификации набора компонентов обеспечивает еще одно преимущество: спецификация набора компонентов может управляться источником.
feature_spec_folder = (
root_dir + "/featurestore/featuresets/transactions_custom_source/spec"
)
udf_featureset_spec.dump(feature_spec_folder)Регистрация набора функций транзакции в хранилище компонентов
Используйте этот код для регистрации актива набора функций, загруженного из пользовательского источника данных в хранилище функций. Затем вы можете повторно использовать этот ресурс и легко поделиться им. Регистрация набора функций предоставляет управляемые функции, включая управление версиями и материализацию.
from azure.ai.ml.entities import FeatureSet, FeatureSetSpecification
transaction_fset_config = FeatureSet(
name="transactions_custom_source",
version="1",
description="transactions feature set loaded from custom source",
entities=["azureml:account:1"],
stage="Development",
specification=FeatureSetSpecification(path=feature_spec_folder),
tags={"data_type": "nonPII"},
)
poller = fs_client.feature_sets.begin_create_or_update(transaction_fset_config)
print(poller.result())
Получите зарегистрированный набор компонентов и распечатайте связанные сведения.
# Look up the feature set by providing name and version
transactions_fset_config = featurestore.feature_sets.get(
name="transactions_custom_source", version="1"
)
# Print feature set information
print(transactions_fset_config)Тестирование создания компонентов из зарегистрированного набора компонентов
to_spark_dataframe() Используйте функцию набора функций, чтобы протестировать генерацию функций из зарегистрированного набора функций и отобразить их.
print-txn-fset-sample-values
df = transactions_fset_config.to_spark_dataframe()
display(df)
Вы сможете успешно получить зарегистрированный набор компонентов в виде кадра данных Spark, а затем отобразить его. Теперь эти функции можно использовать для соединения между точками во времени с данными наблюдения и последующими шагами в конвейере машинного обучения.
Очистка
Если вы создали группу ресурсов для учебника, вы можете удалить эту группу ресурсов, которая удаляет все ресурсы, связанные с этим руководством. В противном случае можно удалить ресурсы по отдельности:
- Чтобы удалить хранилище компонентов, откройте группу ресурсов на портале Azure, выберите хранилище компонентов и удалите его.
- Назначаемое пользователем управляемое удостоверение (UAI), назначенное рабочей области хранилища компонентов, не удаляется при удалении хранилища компонентов. Чтобы удалить UAI, следуйте этим инструкциям.
- Чтобы удалить автономное хранилище типа учетной записи хранения, откройте группу ресурсов на портале Azure, выберите созданное хранилище и удалите его.
- Чтобы удалить экземпляр Кэш Azure для Redis, откройте группу ресурсов на портале Azure, выберите созданный экземпляр и удалите его.