O Vertex AI Feature Store permite-lhe agendar e executar tarefas de monitorização de funcionalidades para monitorizar dados de funcionalidades, obter estatísticas de funcionalidades e detetar a deriva de funcionalidades. Só pode monitorizar dados de funcionalidades se tiver registado a origem de dados de funcionalidades no registo de funcionalidades.
Para monitorizar os dados de funcionalidades, pode criar o recurso FeatureMonitor
num recurso FeatureGroup
. Ao criar o recurso FeatureMonitor
, pode configurar a programação de monitorização para executar periodicamente tarefas de monitorização nos dados das funcionalidades. Em alternativa, pode executar uma tarefa de monitorização de funcionalidades manualmente para monitorizar os dados das funcionalidades fora da programação de monitorização.
Para cada tarefa de monitorização executada, o Vertex AI Feature Store
gera um recurso FeatureMonitorJob
, que pode obter para ver as
estatísticas das caraterísticas e as informações sobre a variação detetada nos dados das caraterísticas.
Antes de começar
Antes de monitorizar funcionalidades com o Vertex AI Feature Store, conclua os pré-requisitos indicados nesta secção.
Registe a origem de dados de funcionalidades
Registe a sua origem de dados de caraterísticas do BigQuery no Feature Registry criando grupos de caraterísticas e caraterísticas. Os recursos FeatureMonitor
usados para obter e monitorizar estatísticas de funcionalidades estão associados a grupos de funcionalidades.
Autentique-se no Vertex AI
Autentique o Vertex AI, a menos que já o tenha feito.
Select the tab for how you plan to use the samples on this page:
Python
Para usar os Python exemplos nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as Credenciais predefinidas da aplicação com as suas credenciais de utilizador.
Instale a CLI Google Cloud.
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para mais informações, consulte Set up authentication for a local development environment.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud.
Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.
Crie um monitor de funcionalidades com um agendamento de monitorização
Para obter e monitorizar estatísticas de funcionalidades, crie um recurso FeatureMonitor
que especifique a agenda para executar periodicamente tarefas de monitorização de funcionalidades e obter estatísticas de funcionalidades para as funcionalidades registadas no grupo de funcionalidades.
Use os exemplos seguintes para criar um recurso FeatureMonitor
. Para configurar vários horários para o mesmo grupo de funcionalidades, tem de criar vários recursos FeatureMonitor
.
REST
Para criar um recurso FeatureMonitor
e agendar tarefas de monitorização de funcionalidades, envie um pedido POST
através do método
featureMonitors.create.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde quer criar a monitorização de funcionalidades, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades onde configurou a monitorização de funcionalidades.
- FEATURE_MONITOR_NAME: um nome para o novo monitor de funcionalidades que quer criar.
- FEATURE_ID_1 e FEATURE_ID_2: os IDs das funcionalidades que quer monitorizar.
- DRIFT_THRESHOLD_1 e DRIFT_THRESHOLD_2: limites de desvio para cada funcionalidade
incluída na monitorização de funcionalidades. O limite de desvio é usado para detetar anomalias, como o desvio de funcionalidades. Introduza um valor no intervalo
[0, 1)
. Se não introduzir um valor, o limite é definido como0.3
por predefinição.
O Vertex AI Feature Store compara as capturas de ecrã de execuções consecutivas de tarefas de monitorização de caraterísticas e calcula as variações usando a função ML.TFDV_VALIDATE no BigQuery. Para classificar anomalias, a distância L-infinity é usada para funcionalidades categóricas e a divergência de Jensen-Shannon é usada para funcionalidades numéricas. - CRON: expressão de agendamento cron que representa a frequência de execução da tarefa de monitorização de funcionalidades. Para mais informações, consulte cron.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME
Corpo JSON do pedido:
{ "feature_selection_config": { "feature_configs": [ {"feature_id":"FEATURE_ID_1", "drift_threshold": "DRIFT_THRESHOLD_1" }, {"feature_id":"FEATURE_ID_2", "drift_threshold": "DRIFT_THRESHOLD_2" } ], }, "schedule_config": { "cron": "CRON" } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome request.json
,
e execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureMonitorOperationMetadata", "genericMetadata": { "createTime": "2024-12-15T19:35:03.975958Z", "updateTime": "2024-12-15T19:35:03.975958Z" } } }
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
def create_feature_monitor_sample(
project: str,
location: str,
existing_feature_group_id: str,
feature_monitor_id: str,
feature_selection_configs: List[Tuple[str, float]]
schedule_config: str # Cron string. For example, "0 * * * *" indicates hourly execution.
):
aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = feature_store.FeatureGroup("FEATUREGROUP_NAME")
feature_monitor = feature_group.create_feature_monitor(
name= "FEATURE_MONITOR_NAME",
feature_selection_configs=[("FEATURE_ID_1", DRIFT_THRESHOLD_1),("FEATURE_ID_2", DRIFT_THRESHOLD_2)],
schedule_config="CRON"
)
Substitua o seguinte:
- LOCATION_ID: região onde quer criar a monitorização de funcionalidades, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades onde configurou a monitorização de funcionalidades.
- FEATURE_MONITOR_NAME: um nome para o novo monitor de funcionalidades que quer criar.
- FEATURE_ID_1 e FEATURE_ID_2: os IDs das funcionalidades que quer monitorizar.
- DRIFT_THRESHOLD_1 e DRIFT_THRESHOLD_2: limites de desvio para cada funcionalidade
incluída na monitorização de funcionalidades. O limite de desvio é usado para detetar
o desvio de funcionalidades. Introduza um valor entre
0
e1
. Se não introduzir um valor, o limite é definido como0.3
por predefinição.
O Vertex AI Feature Store compara a captura instantânea de dados da tarefa de monitorização de funcionalidades atual com a captura instantânea de dados durante a tarefa de monitorização de funcionalidades anterior. Tenha em atenção que, para calcular o desvio da distribuição, o Vertex AI Feature Store usa a função ML.TFDV_VALIDATE no BigQuery.
Para a métrica usada para comparar estatísticas, a distância L-infinity é usada para caraterísticas categóricas e a divergência de Jensen-Shannon é usada para caraterísticas numéricas. - CRON: expressão de agendamento cron que representa a frequência de execução da tarefa de monitorização de funcionalidades. Para mais informações, consulte cron.
Execute uma tarefa de monitorização de funcionalidades manualmente
Pode ignorar a espera entre tarefas de monitorização de funcionalidades agendadas consecutivas e executar manualmente uma tarefa de monitorização de funcionalidades. Isto é útil se quiser obter informações de monitorização e detetar anomalias nos dados das funcionalidades imediatamente, em vez de esperar pela execução da tarefa de monitorização agendada seguinte.
REST
Para executar manualmente uma tarefa de monitorização de funcionalidades criando um recurso FeatureMonitorJob
, envie um pedido POST
através do método featureMonitorJobs.create.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde quer executar a tarefa de monitorização de funcionalidades, como
us-central1
. - FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - PROJECT_ID: o ID do seu projeto.
- FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual quer executar a tarefa de monitorização de funcionalidades.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" }
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME}")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_job = feature_monitor.create_feature_monitor_job()
Substitua o seguinte:
- LOCATION_ID: região onde quer executar a tarefa de monitorização de funcionalidades, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual quer executar a tarefa de monitorização de funcionalidades.
Recupere estatísticas de funcionalidades de uma tarefa de monitorização
Pode obter estatísticas de funcionalidades para todas as funcionalidades num trabalho de monitorização de funcionalidades
obtendo o recurso FeatureMonitorJob
através do ID do trabalho de monitorização de funcionalidades
gerado durante a execução do trabalho de monitorização de funcionalidades. Também pode obter
estatísticas de funcionalidades para um recurso específico da tarefa de monitorização mais recente.
Apresentar tarefas de monitorização de funcionalidades
Os exemplos seguintes mostram como obter uma lista de todos os recursos FeatureMonitorJob
criados para um determinado recurso FeatureMonitor
.
REST
Para obter uma lista de recursos FeatureMonitorJob
para um recurso FeatureMonitor
especificado, envie um pedido GET
através do método
featureMonitorJobs.list.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde o recurso
Feature
está localizado, comous-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual quer listar as tarefas de monitorização de funcionalidades.
Método HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "featureMonitorJobs": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_1", "createTime": "2024-12-18T19:18:18.077161Z", "finalStatus": {}, "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_name_1", "driftThreshold": 0.2 }, { "featureId": "feature_name_2", "driftThreshold": 0.2 } ] } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_2", "createTime": "2024-12-19T19:18:30.859921Z", "finalStatus": {}, "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_name_1", "driftThreshold": 0.2 }, { "featureId": "feature_name_2", "driftThreshold": 0.2 } ] } } ] }
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_jobs = feature_monitor.list_feature_monitor_jobs()
Substitua o seguinte:
- LOCATION_ID: região onde o recurso
Feature
está localizado, comous-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual quer listar as tarefas de monitorização de funcionalidades.
Veja estatísticas de funcionalidades de uma tarefa de monitorização
Os exemplos seguintes mostram como ver as estatísticas das funcionalidades de todas as funcionalidades numa tarefa de monitorização de funcionalidades. Para cada funcionalidade, as estatísticas e as anomalias são apresentadas no formato FeatureNameStatistics
.
REST
Para ver as estatísticas das funcionalidades de uma tarefa de monitorização através da obtenção de um recurso FeatureMonitorJob
, envie um pedido GET
através do método featureMonitorJobs.get.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde a tarefa de monitorização de funcionalidades foi executada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual a tarefa de monitorização de funcionalidades foi executada. - FEATURE_MONITOR_JOB_ID: o ID do recurso FeatureMonitorJob que quer obter.
Método HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID", "createTime": "2024-12-19T19:18:18.077161Z", "finalStatus": {}, "jobSummary": { "featureStatsAndAnomalies": [ { "featureId": "feature_id_1", "featureStats": { "name": "feature_name_1", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "6", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 } ], "type": "QUANTILES" }, "totNumValues": "6" }, "unique": "2", "topValues": [ { "value": "59", "frequency": 2 }, { "value": "19", "frequency": 1 } ], "avgLength": 2, "rankHistogram": { "buckets": [ { "label": "59", "sampleCount": 2 }, { "lowRank": "1", "highRank": "1", "label": "19", "sampleCount": 1 } ] } } }, "statsTime": "2024-12-19T19:18:18.077161Z", "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID", "featureMonitorId": "FEATURE_MONITOR_NAME" }, { "featureId": "feature_id_2", "featureStats": { "name": "feature_name_1", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "6", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.6 } ], "type": "QUANTILES" }, "totNumValues": "6" }, "unique": "2", "topValues": [ { "value": "59", "frequency": 2 }, { "value": "19", "frequency": 1 } ], "avgLength": 2, "rankHistogram": { "buckets": [ { "label": "59", "sampleCount": 2 }, { "lowRank": "1", "highRank": "1", "label": "19", "sampleCount": 1 } ] } } }, "statsTime": "2024-12-19T19:18:18.077161Z", "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID", "featureMonitorId": "FEATURE_MONITOR_NAME" } ] }, "driftBaseFeatureMonitorJobId": "2250003330000300000", "driftBaseSnapshotTime": "2024-12-12T16:00:01.211686Z", "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_id_1", "driftThreshold": 0.2 }, { "featureId": "feature_id_2", "driftThreshold": 0.2 } ] }, "triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND" }
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")
# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)
Substitua o seguinte:
- LOCATION_ID: região onde a tarefa de monitorização de funcionalidades foi executada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual a tarefa de monitorização de funcionalidades foi executada. - FEATURE_MONITOR_JOB_ID: o ID do recurso
FeatureMonitorJob
que quer obter.
Veja as estatísticas de funcionalidades de uma funcionalidade
Pode obter as estatísticas de funcionalidades de uma funcionalidade específica dos trabalhos de monitorização de funcionalidades executados mais recentemente. Para tal, obtenha os detalhes das funcionalidades e especifique o número de trabalhos de monitorização dos quais quer obter as estatísticas. As estatísticas e as anomalias são apresentadas no formato FeatureNameStatistics
.
Os exemplos seguintes mostram como ver as estatísticas de funcionalidades de uma funcionalidade específica de um número especificado de tarefas de monitorização de funcionalidades recentes.
REST
Para ver as estatísticas de funcionalidades de uma funcionalidade específica num recurso Feature
, envie um pedido GET
através do método features.get e especifique o número de tarefas de monitorização a partir das quais pretende obter as estatísticas.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde a tarefa de monitorização de funcionalidades foi executada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de elementos que contém o elemento.
- FEATURE_NAME: o nome do recurso
Feature
para o qual quer obter as estatísticas de funcionalidades. - LATEST_STATS_COUNT: o número de tarefas de monitorização mais recentes a partir das quais obter as estatísticas das funcionalidades.
Método HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME", "createTime": "2024-12-19T21:17:23.373559Z", "updateTime": "2024-12-19T21:17:23.373559Z", "etag": "sample_etag", "featureStatsAndAnomaly": [ { "featureStats": { "name": "FEATURE_NAME", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "4", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.4 } ], "type": "QUANTILES" }, "totNumValues": "4" }, "unique": "4", "topValues": [ { "value": "feature_value_1", "frequency": 1 }, { "value": "feature_value_2", "frequency": 1 }, { "value": "feature_value_3", "frequency": 1 }, { "value": "feature_value_4", "frequency": 1 } ], "avgLength": 4, "rankHistogram": { "buckets": [ { "label": "label_1", "sampleCount": 1 }, { "lowRank": "1", "highRank": "1", "label": "label_2", "sampleCount": 1 }, { "lowRank": "2", "highRank": "2", "label": "label_3", "sampleCount": 1 }, { "lowRank": "3", "highRank": "3", "label": "label_4", "sampleCount": 1 } ] } } }, "driftDetectionThreshold": 0.1, "statsTime": "2024-12-19T22:00:02.734796Z", "featureMonitorJobId": "feature_monitor_job_id_1", "featureMonitorId": "feature_monitor_name_1" } ], "versionColumnName": "version_column_name" }
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_stats_and_anomalies = feature_group.get_feature("FEATURE_NAME", latest_stats_count=LATEST_STATS_COUNT)
print(feature_stats_and_anomalies)
Substitua o seguinte:
- LOCATION_ID: região onde a tarefa de monitorização de funcionalidades foi executada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_NAME: o nome da funcionalidade para a qual quer obter as estatísticas da funcionalidade.
- LATEST_STATS_COUNT: o número de tarefas de monitorização mais recentes a partir das quais obter as estatísticas das funcionalidades.
Exemplo de utilização: use a monitorização de funcionalidades para detetar a deriva de funcionalidades
Pode usar a monitorização de funcionalidades para detetar uma anomalia nos dados das funcionalidades denominada desvio de funcionalidades. Uma deriva é uma alteração significativa e imprevista aos dados de caraterísticas no BigQuery ao longo do tempo. O Vertex AI Feature Store ajuda a identificar a variação de caraterísticas comparando a imagem instantânea no momento em que a tarefa de monitorização é executada com a imagem instantânea de dados durante a execução da tarefa de monitorização anterior.
Para qualquer funcionalidade incluída na monitorização de funcionalidades, se a diferença entre as duas capturas exceder o limite especificado no parâmetro drift_threshold
, o Vertex AI Feature Store identifica uma deriva de funcionalidades e devolve as seguintes informações no recurso FeatureMonitorJob
:
O parâmetro
driftDetected
está definido comotrue
.O desvio de distribuição entre as duas capturas de ecrã. Para as caraterísticas numéricas, o Vertex AI Feature Store calcula este valor através da divergência de Jensen-Shannon. Para funcionalidades categóricas, o Vertex AI Feature Store calcula este valor através da distância L-infinity.
O limite que foi excedido pelo desvio de distribuição.
Os exemplos seguintes mostram como obter um recurso FeatureMonitorJob
e verificar se foi detetada uma variação.
REST
Para obter um recurso FeatureMonitorJob
, envie um pedido GET
através do método featureMonitorJobs.get.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde a tarefa de monitorização de funcionalidades foi executada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual a tarefa de monitorização de funcionalidades foi executada. - FEATURE_MONITOR_JOB_ID: o ID do recurso
FeatureMonitorJob
que quer obter.
Método HTTP e URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID", "createTime": "2024-12-14T19:45:30.026522Z", "finalStatus": {}, "jobSummary": { "featureStatsAndAnomalies": [ { "featureId": "feature_id_1", "featureStats": { "name": "feature_name_1", "type": "STRING", "stringStats": { "commonStats": { "numNonMissing": "3", "minNumValues": "1", "maxNumValues": "1", "avgNumValues": 1, "numValuesHistogram": { "buckets": [ { "lowValue": 1, "highValue": 1, "sampleCount": 0.9 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.9 }, { "lowValue": 1, "highValue": 1, "sampleCount": 0.9 } ], "type": "QUANTILES" }, "totNumValues": "3" }, "unique": "3", "topValues": [ { "value": "sample_value_1", "frequency": 1 }, { "value": "sample_value_2", "frequency": 1 }, { "value": "sample_value_3", "frequency": 1 } ], "avgLength": 3, "rankHistogram": { "buckets": [ { "label": "sample_label_1", "sampleCount": 1 }, { "lowRank": "1", "highRank": "1", "label": "sample_label_2", "sampleCount": 1 }, { "lowRank": "2", "highRank": "3", "label": "sample_label_3", "sampleCount": 1 } ] } } }, "distributionDeviation": 0.1388880008888000, "driftDetectionThreshold": 0.1, "driftDetected": true, "statsTime": "2024-12-15T19:45:37.026522Z", "featureMonitorJobId": "FEATURE_MONITOR_JOB_ID", "featureMonitorId": "FEATURE_MONITOR_NAME" } ] }, "driftBaseFeatureMonitorJobId": "2250003330000300000", "driftBaseSnapshotTime": "2024-12-12T18:18:18.077161Z", "description": "sample_feature_monitor_job_description", "featureSelectionConfig": { "featureConfigs": [ { "featureId": "feature_name", "driftThreshold": 0.1 } ] }, "triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND" }
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.
Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")
# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)
# Check whether drifts are detected
for feature_stats_and_anomalies in feature_monitor_job.feature_stats_and_anomalies:
print("feature: ", feature_stats_and_anomalies.feature_id)
print("distribution deviation: ", feature_stats_and_anomalies.distribution_deviation)
print("drift detected: ", feature_stats_and_anomalies.drift_detected)
Substitua o seguinte:
- LOCATION_ID: região onde a tarefa de monitorização de funcionalidades foi executada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREGROUP_NAME: o nome do grupo de funcionalidades que contém o recurso
FeatureMonitor
. - FEATURE_MONITOR_NAME: o nome do recurso
FeatureMonitor
para o qual a tarefa de monitorização de funcionalidades foi executada. - FEATURE_MONITOR_JOB_ID: o ID do recurso
FeatureMonitorJob
que quer obter.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-19 UTC.