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


Руководство 1: Разработка и регистрация набора функций с помощью управляемого хранилища функций.

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

Вы можете использовать управляемое хранилище функций в Azure Machine Learning для обнаружения, создания и операционализации функций. Жизненный цикл машинного обучения включает этап прототипа, где вы экспериментируйте с различными функциями. Она также включает этап операционизации, в котором модели развертываются и выполняются этапы извлечения данных признаков. Функции служат соединительной тканью в жизненном цикле машинного обучения. Дополнительные сведения о базовых понятиях хранилище управляемых функций см. в статье "Что такое хранилище управляемых функций?" и общие сведения о сущностях верхнего уровня в хранилище управляемых функций ресурсах.

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

Без материализации запрос набора функций применяет преобразования к источнику на лету, чтобы вычислить компоненты, прежде чем он возвращает значения. Этот процесс хорошо подходит для этапа прототипа. Однако для операций обучения и вывода в рабочей среде рекомендуется материализовать функции для повышения надежности и доступности.

Это руководство является первой частью серии учебников хранилище управляемых функций. Здесь вы узнаете, как:

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

В этой серии учебников есть два трека:

  • Трек, состоящий только из SDK, использует только Python SDK. Выберите этот трек для чистой разработки и развертывания на основе Python.
  • Пакет SDK и инструмент CLI используют SDK для Python исключительно для разработки и тестирования наборов функций, а интерфейс командной строки применяется для операций CRUD (создание, чтение, обновление и удаление). Эта дорожка полезна в сценариях непрерывной интеграции и непрерывной доставки (CI/CD) или GitOps, где предпочтителен интерфейс командной строки или YAML.

Предварительные требования

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

  • Рабочая область Машинного обучения Azure. Для получения дополнительной информации о создании рабочей области посетите Краткое руководство: создание ресурсов рабочей области.

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

    Если вы решили использовать новую группу ресурсов для этого руководства, вы можете легко удалить все ресурсы, удалив группу ресурсов.

Подготовка окружения для записной книжки

В этом руководстве используется записная книжка Spark Машинное обучение Azure для разработки.

  1. В среде Студия машинного обучения Azure выберите записные книжки на левой панели и перейдите на вкладку "Примеры".

  2. Перейдите к каталогу featurestore_sample (выберите примеры>>>), а затем нажмите кнопку >

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

  3. Откроется панель выбора целевого каталога . Выберите каталог "Пользователи", а затем выберите имя пользователя и нажмите кнопку "Клонировать".

    Снимок экрана, показывающий выбор расположения целевого каталога в Azure Machine Learning Studio для примера ресурса.

  4. Чтобы настроить среду записной книжки, необходимо загрузить файл conda.yml.

    1. Выберите записные книжки на левой панели и перейдите на вкладку "Файлы ".
    2. Перейдите в каталог env (выберите Users>your_user_name>featurestore_sample>project>env), а затем выберите файл conda.yml.
    3. Выберите Скачать.

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

    1. Выберите Бессерверную вычислительную платформу Spark в выпадающем меню Compute, находящемся в верхнем меню навигации. Эта операция может занять от одного до двух минут. Дождитесь, пока в верхней части строки состояния отобразится Настройка сеанса.
    2. Выберите " Настройка сеанса " в верхней строке состояния.
    3. Выберите пакеты Python.
    4. Выберите Загрузить файлы conda
    5. Выберите файл, скачанный conda.yml на локальном устройстве.
    6. (Необязательно) Увеличьте время ожидания сеанса (время простоя в минутах), чтобы сократить время запуска бессерверного кластера Spark.
  5. В среде Машинное обучение Azure откройте записную книжку и выберите пункт "Настройка сеанса".

    Снимок экрана, показывающий выбор вариантов для настройки сеанса работы с блокнотом.

  6. На панели "Настройка сеанса" выберите пакеты Python.

  7. Отправьте файл Conda:

    1. На вкладке "Пакеты Python" выберите "Отправить файл Conda".
    2. Перейдите к каталогу, на котором размещен файл Conda.
    3. Выберите conda.yml и нажмите кнопку "Открыть".

    Снимок экрана: каталог, на котором размещен файл Conda.

  8. Выберите Применить.

    Снимок экрана, демонстрирующий загрузку файла Conda.

Запуск сеанса Spark

# Run this cell to start the spark session (any code block will start the session ). This can take around 10 mins.
print("start spark session")

Настройка корневого каталога для примеров

import os

# Please update <your_user_alias> below (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")

Настройка CLI

Неприменимо.

Примечание.

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

В этом руководстве используются два пакета SDK:

  • Пакет SDK CRUD для хранилища компонентов

    Вы используете тот же MLClient пакет SDK (имя azure-ai-mlпакета), который используется в рабочей области Машинное обучение Azure. Хранилище функций реализуется как тип рабочей области. В результате этот пакет SDK используется для операций CRUD для хранилищ компонентов, наборов компонентов и сущностей хранилища компонентов.

  • Основной пакет SDK для хранилища компонентов

    Этот пакет SDK (azureml-featurestore) предназначен для разработки и использования набора компонентов. Далее в этом руководстве описаны следующие операции:

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

В этом руководстве не требуется явная установка этих пакетов SDK, так как предыдущие conda.yml инструкции охватывают этот шаг.

Создание минимального хранилища функций

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

    # We use the subscription, resource group, region of this active project workspace.
    # You can optionally replace them to create the resources in a different subsciprtion/resource group, or use existing resources.
    import os
    
    featurestore_name = "<FEATURESTORE_NAME>"
    featurestore_location = "eastus"
    featurestore_subscription_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
    featurestore_resource_group_name = os.environ["AZUREML_ARM_RESOURCEGROUP"]
  2. Создайте хранилище компонентов.

    from azure.ai.ml import MLClient
    from azure.ai.ml.entities import (
        FeatureStore,
        FeatureStoreEntity,
        FeatureSet,
    )
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    ml_client = MLClient(
        AzureMLOnBehalfOfCredential(),
        subscription_id=featurestore_subscription_id,
        resource_group_name=featurestore_resource_group_name,
    )
    
    
    fs = FeatureStore(name=featurestore_name, location=featurestore_location)
    # wait for feature store creation
    fs_poller = ml_client.feature_stores.begin_create(fs)
    print(fs_poller.result())
  3. Инициализация основного клиента SDK для хранилища признаков в Microsoft Azure Machine Learning.

    Как описано ранее в этом руководстве, основной клиент sdk для хранилища компонентов используется для разработки и использования функций.

    # feature store client
    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,
    )
  4. Предоставьте роль "Машинное обучение Azure Специалист по обработке и анализу данных" в хранилище компонентов идентификатору пользователя. Получите значение идентификатора объекта Microsoft Entra из портала Azure, как описано в Найти идентификатор объекта пользователя.

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

    Дополнительные сведения об управлении доступом см. в разделе «Управление доступом для управляемого хранилища функций» ресурса.

    your_aad_objectid = "<USER_AAD_OBJECTID>"
    
    !az role assignment create --role "AzureML Data Scientist" --assignee-object-id $your_aad_objectid --assignee-principal-type User --scope $feature_store_arm_id

Прототип и разработка набора компонентов

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

  1. Изучите исходные transactions данные.

    Эта записная книжка использует образцы данных, размещенных в общедоступном контейнере для хранения BLOB. Его можно считывать в Spark только через wasbs драйвер. При создании наборов компонентов с помощью собственных исходных данных размещайте их в учетной записи Azure Data Lake Storage 2-го поколения и используйте abfss драйвер в пути к данным.

    # remove the "." in the roor directory path as we need to generate absolute path to read from spark
    transactions_source_data_path = "wasbs://[email protected]/feature-store-prp/datasources/transactions-source/*.parquet"
    transactions_src_df = spark.read.parquet(transactions_source_data_path)
    
    display(transactions_src_df.head(5))
    # Note: display(training_df.head(5)) displays the timestamp column in a different format. You can can call transactions_src_df.show() to see correctly formatted value
  2. Локально разработайте набор функций.

    Спецификация набора компонентов — это автономное определение набора компонентов, которое можно локально разрабатывать и тестировать. Здесь вы создадите следующие статистические функции скользящего окна:

    • transactions three-day count
    • transactions amount three-day avg
    • transactions amount three-day sum
    • transactions seven-day count
    • transactions amount seven-day avg
    • transactions amount seven-day sum

    Просмотрите файл кода преобразования признаков: featurestore/featuresets/transactions/transformation_code/transaction_transform.py. Обратите внимание на последовательное агрегирование, определенное для функций. Это преобразователь Spark.

    Дополнительные сведения о наборе функций и преобразованиях см. в ресурсе "Что такое хранилище управляемых функций?".

    from azureml.featurestore import create_feature_set_spec
    from azureml.featurestore.contracts import (
        DateTimeOffset,
        TransformationCode,
        Column,
        ColumnType,
        SourceType,
        TimestampColumn,
    )
    from azureml.featurestore.feature_source import ParquetFeatureSource
    
    transactions_featureset_code_path = (
        root_dir + "/featurestore/featuresets/transactions/transformation_code"
    )
    
    transactions_featureset_spec = create_feature_set_spec(
        source=ParquetFeatureSource(
            path="wasbs://[email protected]/feature-store-prp/datasources/transactions-source/*.parquet",
            timestamp_column=TimestampColumn(name="timestamp"),
            source_delay=DateTimeOffset(days=0, hours=0, minutes=20),
        ),
        feature_transformation=TransformationCode(
            path=transactions_featureset_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,
    )
  3. Экспорт в виде спецификации набора компонентов.

    Чтобы зарегистрировать спецификацию набора компонентов в хранилище компонентов, необходимо сохранить эту спецификацию в определенном формате.

    Просмотрите спецификацию сгенерированного transactions набора функций. Откройте этот файл из дерева папок, чтобы просмотреть спецификацию featurestore/featuresets/accounts/spec/FeaturesetSpec.yaml.

    Спецификация содержит следующие элементы:

    • source: ссылка на ресурс хранилища. В данном случае это паркетный файл в ресурсе хранилища BLOB.
    • features: список функций и их типов данных. Если вы предоставляете код преобразования, код должен вернуть DataFrame, который отображает функции и типы данных.
    • index_columns: ключи соединения, необходимые для доступа к значениям из набора компонентов.

    Дополнительные сведения о спецификации см. в статье "Основные сведения о сущностях верхнего уровня" в хранилище управляемых функций и cli (версии 2) с набором ресурсов схемы YAML.

    Сохранение спецификации набора функций дает еще одно преимущество: спецификация набора функций поддерживает контроль версий.

    import os
    
    # Create a new folder to dump the feature set specification.
    transactions_featureset_spec_folder = (
        root_dir + "/featurestore/featuresets/transactions/spec"
    )
    
    # Check if the folder exists, create one if it does not exist.
    if not os.path.exists(transactions_featureset_spec_folder):
        os.makedirs(transactions_featureset_spec_folder)
    
    transactions_featureset_spec.dump(transactions_featureset_spec_folder, overwrite=True)

Регистрация сущности хранилища компонентов

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

  1. Инициализировать клиент CRUD хранилища компонентов.

    Как описано ранее в этом руководстве, MLClient используется для создания, чтения, обновления и удаления ресурса хранилища компонентов. Пример ячейки кода записной книжки, показанный здесь, ищет хранилище компонентов, созданное на предыдущем шаге. Здесь нельзя повторно использовать то же ml_client значение, которое использовалось ранее в этом руководстве, так как это значение распространяется на уровне группы ресурсов. Правильная определение области является необходимым условием для создания хранилища компонентов.

    В этом примере кода клиент ограничен на уровне фича-стора.

    # MLClient for feature store.
    fs_client = MLClient(
        AzureMLOnBehalfOfCredential(),
        featurestore_subscription_id,
        featurestore_resource_group_name,
        featurestore_name,
    )
  2. account Зарегистрируйте сущность в хранилище компонентов.

    Создайте сущность account с ключом соединения accountID типа string.

    from azure.ai.ml.entities import DataColumn, DataColumnType
    
    account_entity_config = FeatureStoreEntity(
        name="account",
        version="1",
        index_columns=[DataColumn(name="accountID", type=DataColumnType.STRING)],
        stage="Development",
        description="This entity represents user account index key accountID.",
        tags={"data_typ": "nonPII"},
    )
    
    poller = fs_client.feature_store_entities.begin_create_or_update(account_entity_config)
    print(poller.result())

Регистрация набора функций транзакции в хранилище компонентов

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

from azure.ai.ml.entities import FeatureSetSpecification

transaction_fset_config = FeatureSet(
    name="transactions",
    version="1",
    description="7-day and 3-day rolling aggregation of transactions featureset",
    entities=[f"azureml:account:1"],
    stage="Development",
    specification=FeatureSetSpecification(path=transactions_featureset_spec_folder),
    tags={"data_type": "nonPII"},
)

poller = fs_client.feature_sets.begin_create_or_update(transaction_fset_config)
print(poller.result())

Изучение пользовательского интерфейса хранилища компонентов

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

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

Предоставьте вашему пользовательскому аккаунту роль чтения данных BLOB-объектов в автономном хранилище.

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

  1. Получите значение идентификатора объекта Microsoft Entra из портала Azure, как описано в Найти идентификатор объекта пользователя.

  2. Получение сведений об автономном хранилище материализации на странице Обзор в пользовательском интерфейсе Хранилища признаков. Значения для идентификатора подписки учетной записи хранения, имени группы ресурсов хранения и имени учетной записи хранения для автономного хранилища материализации можно найти в карточке автономного хранилища материализации.

    Скриншот с информацией об учетной записи оффлайн-магазина на странице Обзора feature store.

    Дополнительные сведения об управлении доступом см. в ресурсе Управление доступом для хранилища управляемых функций.

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

    # This utility function is created for ease of use in the docs tutorials. It uses standard azure API's.
    # You can optionally inspect it `featurestore/setup/setup_storage_uai.py`.
    import sys
    
    sys.path.insert(0, root_dir + "/featurestore/setup")
    from setup_storage_uai import grant_user_aad_storage_data_reader_role
    
    your_aad_objectid = "<USER_AAD_OBJECTID>"
    storage_subscription_id = "<SUBSCRIPTION_ID>"
    storage_resource_group_name = "<RESOURCE_GROUP>"
    storage_account_name = "<STORAGE_ACCOUNT_NAME>"
    
    grant_user_aad_storage_data_reader_role(
        AzureMLOnBehalfOfCredential(),
        your_aad_objectid,
        storage_subscription_id,
        storage_resource_group_name,
        storage_account_name,
    )

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

  1. Загрузка данных наблюдения.

    Данные наблюдения обычно включают основные данные, используемые для обучения и вывода. Эти данные присоединяются к данным компонента для создания полного ресурса данных обучения.

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

    observation_data_path = "wasbs://[email protected]/feature-store-prp/observation_data/train/*.parquet"
    observation_data_df = spark.read.parquet(observation_data_path)
    obs_data_timestamp_column = "timestamp"
    
    display(observation_data_df)
    # Note: the timestamp column is displayed in a different format. Optionally, you can can call training_df.show() to see correctly formatted value
  2. Получите зарегистрированный набор компонентов и перечислите его функции.

    # Look up the featureset by providing a name and a version.
    transactions_featureset = featurestore.feature_sets.get("transactions", "1")
    # List its features.
    transactions_featureset.features
    # Print sample values.
    display(transactions_featureset.to_spark_dataframe().head(5))
  3. Выберите компоненты, которые становятся частью обучающих данных. Затем используйте пакет SDK для хранилища компонентов для создания обучающих данных.

    from azureml.featurestore import get_offline_features
    
    # You can select features in pythonic way.
    features = [
        transactions_featureset.get_feature("transaction_amount_7d_sum"),
        transactions_featureset.get_feature("transaction_amount_7d_avg"),
    ]
    
    # You can also specify features in string form: featureset:version:feature.
    more_features = [
        f"transactions:1:transaction_3d_count",
        f"transactions:1:transaction_amount_3d_avg",
    ]
    
    more_features = featurestore.resolve_feature_uri(more_features)
    features.extend(more_features)
    
    # Generate training dataframe by using feature data and observation data.
    training_df = get_offline_features(
        features=features,
        observation_data=observation_data_df,
        timestamp_column=obs_data_timestamp_column,
    )
    
    # Ignore the message that says feature set is not materialized (materialization is optional). We will enable materialization in the subsequent part of the tutorial.
    display(training_df)
    # Note: the timestamp column is displayed in a different format. Optionally, you can can call training_df.show() to see correctly formatted value

    Соединение на определенный момент времени добавляет функции в обучающие данные.

Включение автономной материализации в наборе функций transactions

После включения материализации набора функций можно выполнить обратное заполнение. Можно также запланировать повторяющиеся процессы материализации. Для получения дополнительной информации посетите третье руководство из этой серии.

Задайте spark.sql.shuffle.partitions в yaml-файле в соответствии с размером данных компонента

Конфигурация spark.sql.shuffle.partitions Spark — это необязательный параметр, который может повлиять на количество создаваемых файлов parquet (в день), когда набор функций материализуется в офлайн-хранилище. Значение по умолчанию этого параметра — 200. Рекомендуется избегать создания множества небольших файлов паркет. Если извлечение функций в режиме офлайн становится медленным после материализации набора фич, откройте соответствующую папку в автономном хранилище, чтобы проверить, связана ли проблема с слишком большим количеством небольших файлов parquet в течение дня и соответствующим образом измените значение этого параметра.

Примечание.

Образец данных, используемых в этой записной книжке, небольшой. Поэтому этот параметр имеет значение 1 в файле featureset_asset_offline_enabled.yaml.

from azure.ai.ml.entities import (
    MaterializationSettings,
    MaterializationComputeResource,
)

transactions_fset_config = fs_client._featuresets.get(name="transactions", version="1")

transactions_fset_config.materialization_settings = MaterializationSettings(
    offline_enabled=True,
    resource=MaterializationComputeResource(instance_type="standard_e8s_v3"),
    spark_configuration={
        "spark.driver.cores": 4,
        "spark.driver.memory": "36g",
        "spark.executor.cores": 4,
        "spark.executor.memory": "36g",
        "spark.executor.instances": 2,
        "spark.sql.shuffle.partitions": 1,
    },
    schedule=None,
)

fs_poller = fs_client.feature_sets.begin_create_or_update(transactions_fset_config)
print(fs_poller.result())

Вы также можете сохранить ресурс набора функций в качестве ресурса YAML.

## uncomment to run
transactions_fset_config.dump(
    root_dir
    + "/featurestore/featuresets/transactions/featureset_asset_offline_enabled.yaml"
)

Заполнение данных для transactions набора компонентов

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

Примечание.

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

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

from datetime import datetime
from azure.ai.ml.entities import DataAvailabilityStatus

st = datetime(2022, 1, 1, 0, 0, 0, 0)
et = datetime(2023, 6, 30, 0, 0, 0, 0)

poller = fs_client.feature_sets.begin_backfill(
    name="transactions",
    version="1",
    feature_window_start_time=st,
    feature_window_end_time=et,
    data_status=[DataAvailabilityStatus.NONE],
)
print(poller.result().job_ids)
# Get the job URL, and stream the job logs.
fs_client.jobs.stream(poller.result().job_ids[0])

Совет

  • Столбец timestamp должен соответствовать формату yyyy-MM-ddTHH:mm:ss.fffZ.
  • Гранулярность feature_window_start_time и feature_window_end_time ограничена секундами. Все миллисекунда, предоставленные в объекте datetime , будут игнорироваться.
  • Задание материализации будет отправлено только в том случае, если данные в оконце функции совпадают с data_status, заданным при отправке задания на обратную закачку.

Печать примеров данных из набора компонентов. Выходные данные показывают, что данные были получены из хранилища материализации. Метод get_offline_features() извлек данные обучения и вывода. Он также использует хранилище материализации по умолчанию.

# Look up the feature set by providing a name and a version and display few records.
transactions_featureset = featurestore.feature_sets.get("transactions", "1")
display(transactions_featureset.to_spark_dataframe().head(5))

Дальнейшее изучение автономной материализации возможностей

Вы можете изучить статус материализации признаков для набора признаков в интерфейсе заданий Материализации.

  1. Откройте глобальную целевую страницу Машинного обучения Azure.

  2. Выберите хранилища компонентов на левой панели.

  3. В списке доступных хранилищ компонентов выберите хранилище компонентов, для которого вы выполнили обратную заполнение.

  4. Выберите вкладку Задания по материализации.

    Снимок экрана: пользовательский интерфейс заданий Материализации набора компонентов.

  • Состояние материализации данных может быть

    • Завершено (зеленый)
    • Неполный (красный)
    • В ожидании (синий)
    • Нет (серый)
  • Интервал данных представляет собой непрерывную часть данных с одинаковым состоянием материализации данных. Например, предыдущий моментальный снимок имеет 16 интервалов данных в автономном хранилище материализации.

  • Данные могут содержать не более 2000 интервалов данных. Если данные содержат более 2000 интервалов данных, создайте новую версию набора компонентов.

  • Вы можете указать список из более чем одного состояния данных (например, ["None", "Incomplete"]) в одном задании на заполнение пропусков.

  • Во время резервной заполнения задание материализации отправляется для каждого интервала данных, который находится в определенном окне компонента.

  • Если задание материализации ожидается или задание выполняется для интервала данных, который еще не заполнен, новое задание не подается для этого интервала данных.

  • Вы можете повторить неудачное задание материализации.

    Примечание.

    Чтобы получить идентификатор задания материализации, завершённого с ошибкой:

    • Перейдите к пользовательскому интерфейсу заданий Материализации набора компонентов.
    • Выберите отображаемое имя определенного задания с состояниемсбоя.
    • Найдите идентификатор задания в свойстве Name, найденном на странице обзора задания. Он начинается с Featurestore-Materialization-.

poller = fs_client.feature_sets.begin_backfill(
    name="transactions",
    version=version,
    job_id="<JOB_ID_OF_FAILED_MATERIALIZATION_JOB>",
)
print(poller.result().job_ids)

Обновление автономного хранилища материализации

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

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

Очистка

В пятом руководстве серии описывается удаление ресурсов.

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