Основные понятия материализации набора компонентов

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

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

Изучение материализации признаков

Пользовательский интерфейс заданий Материализации показывает состояние материализации данных в автономных и онлайн-хранилищах материализации, а также список заданий материализации.

Screenshot showing the feature set materialization jobs user interface.

В окне функции:

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

Состояние материализации данных и интервал данных

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

  • Завершение (зеленый) — успешное материализация данных
  • Неполный (красный) — одно или несколько отмененных или неудачных заданий материализации для этого интервала данных
  • Ожидание (синий) — выполняется одно или несколько заданий материализации для этого интервала данных.
  • Нет (серый) — задание материализации не было отправлено для этого интервала данных

При выполнении заданий материализации для набора компонентов они создают или объединяют интервалы данных:

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

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

В любое время набор функций может иметь не более 2000 интервалов данных. После достижения этого ограничения набор компонентов больше не может выполнять задания материализации. Затем пользователи должны создать новую версию набора компонентов с включенной материализацией. Для новой версии набора функций материализируйте функции в автономных и онлайн-магазинах с нуля.

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

Задания материализации данных

Перед выполнением задания материализации данных включите автономные и (или) онлайн-материализации данных на уровне набора компонентов.

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

# Turn on both offline and online materialization on the "accounts" featureset.

accounts_fset_config = fs_client._featuresets.get(name="accounts", version="1")

accounts_fset_config.materialization_settings = MaterializationSettings(
    offline_enabled=True,
    online_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,
    },
    schedule=None,
)

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

Задания материализации данных можно отправить в виде:

Предупреждение

Данные, уже материализованные в автономном режиме и /или онлайн-материализации, больше не будут использоваться, если материализация данных в автономном режиме отключена на уровне набора компонентов. Состояние материализации данных в автономном и /или онлайн-хранилище материализации будет сброшено 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)

После отправки запроса обратной заполнения создается новое задание материализации для каждого интервала данных с соответствующим состоянием материализации данных (неполный, полный или нет). Кроме того, соответствующие интервалы данных должны находиться в определенном окне компонентов. Если состояние материализации данных находится Pending в интервале данных, задание материализации не отправляется для этого интервала.

Время начала и время окончания окна компонента являются необязательными в запросе обратной заполнения:

  • Если время начала окна функции не указано, время начала определяется как время начала первого интервала данных, не имеющих состояния Noneматериализации данных.
  • Если время окончания окна функции не указано, время окончания определяется как время окончания последнего интервала данных, не имеющих состояния Noneматериализации данных.

Примечание.

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

В этом примере имеются следующие текущие значения интервала данных и состояния материализации:

Время начала Время завершения Состояние материализации данных
2023-04-01T04:00:00.000 2023-04-02T04:00:00.000 None
2023-04-02T04:00:00.000 2023-04-03T04:00:00.000 Incomplete
2023-04-03T04:00:00.000 2023-04-04T04:00:00.000 None
2023-04-04T04:00:00.000 2023-04-05T04:00:00.000 Complete
2023-04-05T04:00:00.000 2023-04-06T04:00:00.000 None

Этот запрос обратной заполнения имеет следующие значения:

  • Материализация данных data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]
  • Запуск окна компонента = 2023-04-02T12:00:00.000
  • Конец окна компонента = 2023-04-04T12:00:00.000

Он создает следующие задания материализации:

  • Задание 1: окно компонента процесса [2023-04-02T12:00:00.000, 2023-04-03T04:00:00.000)
  • Задание 2. Окно компонента процесса [2023-04-04T04:00:00.000, 2023-04-04T12:00:00.000)

Если оба задания успешно завершены, новые значения интервала данных и состояния материализации становятся следующими:

Время начала Время завершения Состояние материализации данных
2023-04-01T04:00:00.000 2023-04-02T04:00:00.000 None
2023-04-02T04:00:00.000 2023-04-02T12:00:00.000 Incomplete
2023-04-02T12:00:00.000 2023-04-03T04:00:00.000 Complete
2023-04-03T04:00:00.000 2023-04-04T04:00:00.000 None
2023-04-04T04:00:00.000 2023-04-05T04:00:00.000 Complete
2023-04-05T04:00:00.000 2023-04-06T04:00:00.000 None

Один новый интервал данных создается в день 2023-04-02, так как половина этого дня теперь имеет другое состояние материализации: Complete Хотя новое задание материализации выполнялось в течение половины дня 2023-04-04, интервал данных не изменяется (разделение), так как состояние материализации не изменилось.

Если пользователь выполняет запрос обратной заполнения только с материализацией data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]данных, не устанавливая время начала и окончания окна компонентов, запрос использует значение по умолчанию этих параметров, упоминание ранее в этом разделе, и создает следующие задания:

  • Задание 1: окно компонента процесса [2023-04-02T04:00:00.000, 2023-04-03T04:00:00.000)
  • Задание 2. Окно компонента процесса [2023-04-04T04:00:00.000, 2023-04-05T04:00:00.000)

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

Обратная заполнение данных по идентификатору задания

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

  • Перейдите к пользовательскому интерфейсу заданий Материализации набора компонентов
  • Выберите отображаемое имя определенного задания с значением состояния сбоя
  • На странице "Обзор задания" найдите соответствующее значение идентификатора задания в свойстве 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)

Вы можете отправить задание обратной заполнения с идентификатором задания неудачной или отмененной материализации. В этом случае состояние данных окна функций для исходного задания Incompleteматериализации завершилось сбоем или отменено. Если это условие не выполнено, задание обратной заполнения по идентификатору приводит к ошибке пользователя. Например, сбой задания материализации может иметь значение времени 2023-04-01T04:00:00.000 начала окна функции и значение времени окончания2023-04-09T04:00:00.000. Задание обратной заполнения, отправленное с помощью идентификатора этого неудачного задания, успешно выполняется Incompleteтолько в том случае, если состояние данных везде, в диапазоне 2023-04-01T04:00:00.0002023-04-09T04:00:00.000времени и в диапазоне времени.

Руководство и рекомендации

Установка правильного source_delay и периодического расписания

Свойство source_delay для исходных данных указывает задержку между временем приобретения готовых к использованию данных по сравнению с временем создания данных события. Событие, которое произошло во время приземлиться в исходной таблице данных во время tt + x, из-за задержки конвейера данных вышестоящий. Значением x является задержка источника.

Illustration that shows the source_delay concept.

Для правильной настройки учетные записи расписания заданий повторяющейся материализации для задержки. Повторяющееся задание создает функции для [schedule_trigger_time - source_delay - schedule_interval, schedule_trigger_time - source_delay) периода времени.

materialization_settings:
  schedule:
    type: recurrence
    interval: 1
    frequency: Day
    start_time: "2023-04-15T04:00:00.000"

В этом примере определяется ежедневное задание, которое активируется в 4:00, начиная с 4.15.2023. source_delay В зависимости от параметра выполнение задания 5.1.2023 создает функции в разных периодах времени:

  • source_delay=0 создает значения признаков в окне [2023-04-30T04:00:00.000, 2023-05-01T04:00:00.000)
  • source_delay=2hours создает значения признаков в окне [2023-04-30T02:00:00.000, 2023-05-01T02:00:00.000)
  • source_delay=4hours создает значения признаков в окне [2023-04-30T00:00:00.000, 2023-05-01T00:00:00.000)

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

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

Состояние материализации данных в автономном и /или интернет-хранилище материализации сбрасывается, если автономное и /или онлайн-материализация отключена в наборе компонентов. Сброс отрисовывает материализованные данные, непригодные для использования. Если в наборе компонентов включена автономная и (или) онлайн-материализация, пользователи должны повторно отправить свои задания материализации.

Загрузка данных через Интернет

Загрузка данных в Сети применима только в том случае, если успешно завершены задания автономной материализации. Если для набора компонентов изначально включена только автономная материализация, а веб-материализация включена позже, то:

  • Состояние материализации данных по умолчанию в интернет-магазине None

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

    Время начала Время завершения Состояние автономных данных Состояние данных в Сети Загрузка данных через Интернет
    2023-04-01T04:00:00.000 2023-04-02T04:00:00.000 None None No
    2023-04-02T04:00:00.000 2023-04-03T04:00:00.000 Incomplete None No
    2023-04-03T04:00:00.000 2023-04-04T04:00:00.000 Pending None Задание материализации не отправлено
    2023-04-04T04:00:00.000 2023-04-05T04:00:00.000 Complete None Да

Устранение ошибок и изменений исходных данных

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

Запрос материализации для обновления данных компонента следует отправлять только в том случае, если окно компонента не содержит интервал данных с состоянием Pending данных.

Заполнение пробелов

В хранилище материализации материализованные данные могут иметь пробелы, так как:

  • Задание материализации никогда не было отправлено для окна компонента
  • Задания материализации, отправленные для окна компонентов, завершились сбоем или были отменены

В этом случае отправьте запрос материализации в окне функции, чтобы data_status=[DataAvailabilityStatus.NONE,DataAvailabilityStatus.Incomplete] заполнить пробелы. Один запрос материализации заполняет все пробелы в окне функций.

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