Używanie metryk niestandardowych z monitorowaniem usługi Databricks Lakehouse
Na tej stronie opisano sposób tworzenia niestandardowej metryki w usłudze Databricks Lakehouse Monitoring. Oprócz statystyk analizy i dryfu, które są automatycznie obliczane, można utworzyć metryki niestandardowe. Możesz na przykład śledzić ważoną średnią, która przechwytuje pewien aspekt logiki biznesowej lub użyj niestandardowego wskaźnika jakości modelu. Można również utworzyć niestandardowe metryki dryfu, które śledzą zmiany wartości w tabeli podstawowej (w porównaniu z punktem odniesienia lub poprzednim przedziałem czasu).
Aby uzyskać więcej informacji na temat korzystania z interfejsu API, zobacz dokumentację interfejsu MonitorMetric
API.
Typy metryk niestandardowych
Monitorowanie usługi Databricks Lakehouse obejmuje następujące typy metryk niestandardowych:
- Agregowanie metryk, które są obliczane na podstawie kolumn w tabeli podstawowej. Zagregowane metryki są przechowywane w tabeli metryk profilu.
- Pochodne metryki, które są obliczane na podstawie wcześniej obliczonych zagregowanych metryk i nie używają bezpośrednio danych z tabeli podstawowej. Pochodne metryki są przechowywane w tabeli metryk profilu.
- Metryki dryfu, które porównują wcześniej obliczone zagregowane lub pochodne metryki z dwóch różnych okien czasowych lub między tabelą podstawową a tabelą bazową. Metryki dryfu są przechowywane w tabeli metryk dryfu.
Używanie metryk pochodnych i dryfu, jeśli to możliwe, minimalizuje ponowną kompilację w pełnej tabeli podstawowej. Tylko agregowanie danych dostępu do metryk z tabeli podstawowej. Metryki pochodne i dryfu można następnie obliczać bezpośrednio z zagregowanych wartości metryk.
Parametry metryk niestandardowych
Aby zdefiniować metrykę niestandardową , należy utworzyć szablon Jinja dla wyrażenia kolumny SQL. W tabelach w tej sekcji opisano parametry definiujące metryki oraz parametry używane w szablonie Jinja.
Parametr | Opis |
---|---|
type |
MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE Jeden z , MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED lub MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT . |
name |
Nazwa kolumny dla metryki niestandardowej w tabelach metryk. |
input_columns |
Lista nazw kolumn w tabeli wejściowej, dla których powinna zostać obliczona metryka. Aby wskazać, że w obliczeniach jest używana więcej niż jedna kolumna, użyj polecenia :table . Zapoznaj się z przykładami w tym artykule. |
definition |
Szablon Jinja dla wyrażenia SQL, który określa sposób obliczania metryki. Zobacz Tworzenie definicji. |
output_data_type |
Typ danych platformy Spark danych wyjściowych metryki w formacie ciągu JSON. |
Tworzyć definition
Parametr definition
musi być pojedynczym wyrażeniem ciągu w postaci szablonu Jinja. Nie może zawierać sprzężeń ani podzapytania.
W poniższej tabeli wymieniono parametry, których można użyć do utworzenia szablonu SQL Jinja, aby określić sposób obliczania metryki.
Parametr | Opis |
---|---|
{{input_column}} |
Kolumna używana do obliczania metryki niestandardowej. |
{{prediction_col}} |
Kolumna przechowując przewidywania modelu uczenia maszynowego. Używany z analizą InferenceLog . |
{{label_col}} |
Kolumna zawierająca etykiety podstaw modelu uczenia maszynowego. Używany z analizą InferenceLog . |
{{current_df}} |
W przypadku dryfu w porównaniu z poprzednim przedziałem czasu. Dane z poprzedniego przedziału czasu. |
{{base_df}} |
W przypadku dryfu w porównaniu z tabelą odniesienia. Dane linii bazowej. |
Przykład agregacji metryki
Poniższy przykład oblicza średnią kwadratu wartości w kolumnie i jest stosowany do kolumn f1
i f2
. Dane wyjściowe są zapisywane jako nowa kolumna w tabeli metryk profilu i są wyświetlane w wierszach analizy odpowiadających kolumnom f1
i f2
. Odpowiednie nazwy kolumn są zastępowane parametrem {{input_column}}
Jinja .
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="squared_avg",
input_columns=["f1", "f2"],
definition="avg(`{{input_column}}`*`{{input_column}}`)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
Poniższy kod definiuje niestandardową metrykę, która oblicza średnią różnicy między kolumnami f1
i f2
. W tym przykładzie pokazano użycie elementu [":table"]
w parametrze input_columns
w celu wskazania, że w obliczeniach jest używana więcej niż jedna kolumna z tabeli.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_AGGREGATE,
name="avg_diff_f1_f2",
input_columns=[":table"],
definition="avg(f1 - f2)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
W tym przykładzie obliczana jest ważona ocena jakości modelu. W przypadku obserwacji, w których kolumna critical
to , przypisywana jest True
ostrza spora kara, gdy przewidywana wartość tego wiersza nie jest zgodna z prawem podstawy. Ponieważ jest ona zdefiniowana w nieprzetworzonych kolumnach (prediction
i label
), jest zdefiniowana jako metryka agregacji. Kolumna :table
wskazuje, że ta metryka jest obliczana z wielu kolumn. Parametry {{prediction_col}}
Jinja i {{label_col}}
są zastępowane nazwą kolumn prediction i ground truth label dla monitora.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_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.StructField("output", T.DoubleType()).json(),
)
Przykład metryki pochodnej
Poniższy kod definiuje niestandardową metrykę, która oblicza pierwiastek squared_avg
kwadratowy metryki zdefiniowanej wcześniej w tej sekcji. Ponieważ jest to metryka pochodna, nie odwołuje się do podstawowych danych tabeli i zamiast tego jest definiowana pod względem squared_avg
metryki zagregowanej. Dane wyjściowe są zapisywane jako nowa kolumna w tabeli metryk profilu.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_DERIVED,
name="root_mean_square",
input_columns=["f1", "f2"],
definition="sqrt(squared_avg)",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)
Przykład metryk dryfu
Poniższy kod definiuje metrykę dryfu, która śledzi zmianę metryki zdefiniowanej weighted_error
wcześniej w tej sekcji. Parametry {{current_df}}
i {{base_df}}
umożliwiają metryce odwołanie weighted_error
do wartości z bieżącego okna i okna porównania. Okno porównania może być danymi odniesienia lub danymi z poprzedniego przedziału czasu. Metryki dryfu są zapisywane w tabeli metryk dryfu.
from databricks.sdk.service.catalog import MonitorMetric, MonitorMetricType
from pyspark.sql import types as T
MonitorMetric(
type=MonitorMetricType.CUSTOM_METRIC_TYPE_DRIFT,
name="error_rate_delta",
input_columns=[":table"],
definition="{{current_df}}.weighted_error - {{base_df}}.weighted_error",
output_data_type=T.StructField("output", T.DoubleType()).json(),
)