Использование пользовательских метрик с мониторингом 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()
)