Руководство 3. Включение повторяющейся материализации и выполнение пакетного вывода
В этом руководстве показано, как функции легко интегрируют все этапы жизненного цикла машинного обучения: прототип, обучение и эксплуатацию.
В первом руководстве показано, как создать спецификацию набора компонентов с пользовательскими преобразованиями. Затем он показал, как использовать этот набор функций для создания обучающих данных, включения материализации и выполнения обратной заполнения. Во втором руководстве показано, как включить материализацию и выполнить обратную заполнение. Он также показал, как экспериментировать с функциями, как способ повышения производительности модели.
В этом учебнике объясняется, как выполнить такие задачи:
- Включите повторяющуюся материализацию для
transactions
набора компонентов. - Запустите конвейер пакетного вывода в зарегистрированной модели.
Необходимые компоненты
Прежде чем продолжить работу с этим руководством, обязательно выполните первые и второй учебники в серии.
Настройка
Настройте записную книжку Машинное обучение Azure Spark.
Чтобы запустить это руководство, можно создать новую записную книжку и выполнить инструкции, пошаговые инструкции. Вы также можете открыть и запустить существующую записную книжку с именем 3. Включение повторяющейся материализации и выполнение пакетного вывода. Эту записную книжку и все записные книжки в этой серии можно найти в каталоге featurestore_sample/notebooks . Вы можете выбрать sdk_only или sdk_and_cli. Оставьте это руководство открытым и ознакомьтесь с ним по ссылкам документации и дополнительным пояснениям.
В раскрывающемся списке вычислений в верхней навигации выберите бессерверные вычисления Spark в разделе Машинное обучение Azure Бессерверный Spark.
Настройка сеанса:
- Выберите " Настройка сеанса " в верхней строке состояния.
- Перейдите на вкладку "Пакеты Python".
- Выберите "Отправить файл conda".
azureml-examples/sdk/python/featurestore-sample/project/env/online.yml
Выберите файл на локальном компьютере.- При необходимости увеличьте время ожидания сеанса (время простоя), чтобы избежать частого повторного выполнения предварительных требований.
Запустите сеанс 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 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 nav 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 рабочей области проекта (создание, чтение, обновление и удаление).
Записная книжка учебника выполняется из этой текущей рабочей области.
### Initialize the MLClient of this project workspace import os from azure.ai.ml import MLClient from azure.ai.ml.identity import AzureMLOnBehalfOfCredential project_ws_sub_id = os.environ["AZUREML_ARM_SUBSCRIPTION"] project_ws_rg = os.environ["AZUREML_ARM_RESOURCEGROUP"] project_ws_name = os.environ["AZUREML_ARM_WORKSPACE_NAME"] # connect to the project workspace ws_client = MLClient( AzureMLOnBehalfOfCredential(), project_ws_sub_id, project_ws_rg, project_ws_name )
Инициализация переменных хранилища компонентов.
Чтобы отразить то, что вы создали в первом руководстве, обязательно обновите
featurestore_name
значение.from azure.ai.ml import MLClient from azure.ai.ml.identity import AzureMLOnBehalfOfCredential # feature store featurestore_name = ( "<FEATURESTORE_NAME>" # use the same name from part #1 of the tutorial ) 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 для хранилища компонентов.
# 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, )
Включение повторяющейся материализации в наборе функций транзакций
Во втором руководстве вы включили материализацию и выполнили обратную заполнение в наборе transactions
компонентов. Обратная заполнение — это однократная операция, которая вычисляет и помещает значения признаков в хранилище материализации.
Чтобы справиться с выводом модели в рабочей среде, может потребоваться настроить повторяющиеся задания материализации, чтобы сохранить хранилище материализации в актуальном состоянии. Эти задания выполняются в пользовательских расписаниях. Расписание повторяющихся заданий работает таким образом:
Значения интервала и частоты определяют окно. Например, следующие значения определяют трехчасовое окно:
interval
=3
frequency
=Hour
Первое окно начинается со значения, определенного
start_time
вRecurrenceTrigger
, и т. д.Первое повторяющееся задание отправляется в начале следующего окна после времени обновления.
Позже повторяющиеся задания отправляются в каждом окне после первого задания.
Как описано в предыдущих руководствах, после материализации данных (обратная заполнение или повторяющаяся материализация) функция использует материализованные данные по умолчанию.
from datetime import datetime
from azure.ai.ml.entities import RecurrenceTrigger
transactions_fset_config = fs_client.feature_sets.get(name="transactions", version="1")
# create a schedule that runs the materialization job every 3 hours
transactions_fset_config.materialization_settings.schedule = RecurrenceTrigger(
interval=3, frequency="Hour", start_time=datetime(2023, 4, 15, 0, 4, 10, 0)
)
fs_poller = fs_client.feature_sets.begin_create_or_update(transactions_fset_config)
print(fs_poller.result())
(Необязательно) Сохранение ФАЙЛА YAML для ресурса набора компонентов
Для сохранения YAML-файла используются обновленные параметры.
## uncomment and run
# transactions_fset_config.dump(root_dir + "/featurestore/featuresets/transactions/featureset_asset_offline_enabled_with_schedule.yaml")
Запуск конвейера вывода пакетной службы
Вывод пакета состоит из следующих действий:
Вы используете тот же встроенный компонент извлечения компонентов для получения компонентов, используемых в конвейере обучения (в третьем руководстве). Для обучения конвейера вы предоставили спецификацию извлечения компонентов в качестве входных данных компонента. Для вывода пакетной службы вы передаете зарегистрированную модель в качестве входных данных. Компонент ищет спецификацию извлечения признаков в артефакте модели.
Кроме того, для обучения данные наблюдения имели целевую переменную. Однако данные наблюдения за выводом пакетной службы не имеют целевой переменной. Шаг извлечения признаков объединяет данные наблюдения с функциями и выводит данные для пакетного вывода.
Конвейер использует входные данные пакетного вывода из предыдущего шага, выполняет вывод модели и добавляет прогнозируемое значение в качестве выходных данных.
Примечание.
В этом примере используется задание для вывода пакетной службы. Вы также можете использовать пакетные конечные точки в Машинное обучение Azure.
from azure.ai.ml import load_job # will be used later # set the batch inference pipeline path batch_inference_pipeline_path = ( root_dir + "/project/fraud_model/pipelines/batch_inference_pipeline.yaml" ) batch_inference_pipeline_definition = load_job(source=batch_inference_pipeline_path) # run the training pipeline batch_inference_pipeline_job = ws_client.jobs.create_or_update( batch_inference_pipeline_definition ) # stream the run logs ws_client.jobs.stream(batch_inference_pipeline_job.name)
Проверка выходных данных для пакетного вывода
В представлении конвейера:
Выберите
inference_step
карточкуoutputs
.Data
Скопируйте значение поля. Оно будет выглядеть примерно так —azureml_995abbc2-3171-461e-8214-c3c5d17ede83_output_data_data_with_prediction:1
.Вставьте значение поля в следующую
Data
ячейку с отдельными значениями имени и версии. Последний символ — это версия, предшествуемая двоеточием (:
).Обратите внимание на
predict_is_fraud
столбец, созданный конвейером вывода пакета.В выходных данных конвейера вывода пакетной службы (/project/fraud_mode/pipelines/batch_inference_pipeline.yaml) система создала неуправляемый ресурс данных с GUID в качестве значения имени и
1
в качестве значения версии. Это произошло, так как вы не предоставилиname
илиversion
значения дляinference_step
outputs
. В этой ячейке вы наследуете и отобразите путь к данным из ресурса.inf_data_output = ws_client.data.get( name="azureml_1c106662-aa5e-4354-b5f9-57c1b0fdb3a7_output_data_data_with_prediction", version="1", ) inf_output_df = spark.read.parquet(inf_data_output.path + "data/*.parquet") display(inf_output_df.head(5))
Очистка
В пятом руководстве серии описывается удаление ресурсов.
Следующие шаги
- Узнайте о концепциях хранилища функций и сущностях верхнего уровня в хранилище управляемых функций.
- Узнайте о удостоверении и управлении доступом для хранилище управляемых функций.
- Просмотрите руководство по устранению неполадок для хранилище управляемых функций.
- Просмотрите ссылку YAML.