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


Использование пользовательских метрик с мониторингом Databricks Lakehouse

Важно

Эта функция доступна в общедоступной предварительной версии.

На этой странице описывается создание пользовательской метрики в databricks Lakehouse Monitoring. Помимо автоматически вычисляемой статистики анализа и смещения можно создавать пользовательские метрики. Например, может потребоваться отслеживать средневзвешовое среднее значение, которое фиксирует некоторые аспекты бизнес-логики, или использовать пользовательскую оценку качества модели. Вы также можете создавать пользовательские метрики смещения, которые отслеживают изменения значений в основной таблице (по сравнению с базовым показателем или предыдущим временем).

Дополнительные сведения об использовании API см. в databricks.lakehouse_monitoring.Metricсправочнике по API.

Типы пользовательских метрик

Мониторинг Databricks Lakehouse включает следующие типы пользовательских метрик:

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

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

Параметры пользовательских метрик

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

Параметр Описание
type Один из aggregate, derivedили drift.
name Имя столбца для пользовательской метрики в таблицах метрик.
input_columns Список имен столбцов во входной таблице, для которые должна быть вычислена метрика. Чтобы указать, что в вычислении используется несколько столбцов, используйте :table. См. примеры в этой статье.
definition Шаблон Jinja для выражения SQL, указывающего способ вычисления метрики. См . раздел Создание metric_definition.
output_data_type Тип данных Spark выходных данных метрики.

Создать definition

Параметр definition должен быть одним строковым выражением в виде шаблона Jinja. Он не может содержать соединения или вложенные запросы. Для создания сложных определений можно использовать вспомогательные функции Python.

В следующей таблице перечислены параметры, которые можно использовать для создания шаблона SQL Jinja, чтобы указать способ вычисления метрики.

Параметр Описание
{{input_column}} Столбец, используемый для вычисления пользовательской метрики.
{{prediction_col}} Столбец, содержащий прогнозы модели машинного обучения. Используется с анализом InferenceLog .
{{label_col}} Столбец, содержащий метки истинности модели машинного обучения. Используется с анализом InferenceLog .
{{current_df}} Для смещения по сравнению с предыдущим временным окном. Данные из предыдущего временного окна.
{{base_df}} Для смещения по сравнению с таблицей базовых показателей. Базовые данные.

Пример статистической метрики

В следующем примере вычисляется среднее значение квадрата значений в столбце и применяется к столбцам f1 и f2. Выходные данные сохраняются в виде нового столбца в таблице метрик профиля и отображаются в строках анализа, соответствующих столбцам f1 и f2. Соответствующие имена столбцов заменяются параметром {{input_column}}Jinja .

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="aggregate",
  name="squared_avg",
  input_columns=["f1", "f2"],
  definition="avg(`{{input_column}}`*`{{input_column}}`)",
  output_data_type=T.DoubleType()
  )

В следующем коде определяется пользовательская метрика, которая вычисляет среднее значение разницы между столбцами f1 и f2. В этом примере показано использование [":table"] в параметре input_columns , чтобы указать, что в вычислении используется несколько столбцов из таблицы.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="aggregate",
  name="avg_diff_f1_f2",
  input_columns=[":table"],
  definition="avg(f1 - f2)",
  output_data_type=T.DoubleType())

В этом примере вычисляется взвешительная оценка качества модели. Для наблюдений critical , где столбец равен , назначается Trueболее тяжелый штраф, если прогнозируемое значение для этой строки не соответствует истине основания. Так как он определен в необработанных столбцах (prediction и label), он определяется как агрегатная метрика. Столбец :table указывает, что эта метрика вычисляется из нескольких столбцов. Параметры {{prediction_col}} Jinja и {{label_col}} заменяются именем столбцов меток прогноза и меток истинности для монитора.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="aggregate",
  name="weighted_error",
  input_columns=[":table"],
  definition="""avg(CASE
    WHEN {{prediction_col}} = {{label_col}} THEN 0
    WHEN {{prediction_col}} != {{label_col}} AND critical=TRUE THEN 2
    ELSE 1 END)""",
  output_data_type=T.DoubleType()
)

Пример производной метрики

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

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="derived",
  name="root_mean_square",
  input_columns=["f1", "f2"],
  definition="sqrt(squared_avg)",
  output_data_type=T.DoubleType())

Пример метрик смещения

Следующий код определяет метрику смещения, которая отслеживает изменения в метрике, определенной weighted_error ранее в этом разделе. Параметры {{current_df}} и {{base_df}} позволяют метрику ссылаться на weighted_error значения из текущего окна и окна сравнения. Окно сравнения может быть либо базовыми данными, либо данными из предыдущего временного окна. Метрики смещения сохраняются в таблице метрик смещения.

from databricks import lakehouse_monitoring as lm
from pyspark.sql import types as T

lm.Metric(
  type="drift",
  name="error_rate_delta",
  input_columns=[":table"],
  definition="{{current_df}}.weighted_error - {{base_df}}.weighted_error",
  output_data_type=T.DoubleType()
)