如何在 Vertex AI 中构建容器日志?

Posted

技术标签:

【中文标题】如何在 Vertex AI 中构建容器日志?【英文标题】:How to structure container logs in Vertex AI? 【发布时间】:2021-10-23 19:26:23 【问题描述】:

我在 Vertex AI 中有一个模型,从日志看来 Vertex AI 已将日志摄取到 jsonPayload 字段中的 message 字段中,但我想构造 jsonPayload 字段,以便每个键message 将是jsonPayload 中的一个字段,即:展平/提取message

【问题讨论】:

能否按照*** guidelines分享有效载荷而不是图像? 【参考方案1】:

Stackdriver 中的日志遵循定义的 LogEntry 架构。 Cloud Logging 使用 structured logs,其中日志条目使用 jsonPayload 字段向其负载添加结构。

对于 Vertex AI,参数在我们在日志中看到的消息字段中传递。这些日志结构是预定义的。但是,如果您想提取消息块中存在的字段,您可以参考下面提到的解决方法:

1.创建接收器:

您可以将日志导出到 Cloud Storage 存储桶、Bigquery、Pub/Sub 等。 如果您使用 Bigquery 作为接收器,那么在 Bigquery 中您可以使用 JSON functions 来提取所需的数据。

2。下载日志并编写您的自定义代码:

您可以下载日志文件,然后编写自定义逻辑以根据您的要求提取数据。 可以参考client library(python)编写自定义逻辑和pythonJSON functions.

【讨论】:

【参考方案2】:

使用gcloud logging client 将结构日志写入 Vertex AI 端点:

(确保您有一个有权将日志写入 gcloud 的服务帐户,并且,对于干净的日志,请确保您没有将任何其他日志流式传输到 stderr 或 stdout)

import json
import logging
from logging import Handler, LogRecord
import google.cloud.logging_v2 as logging_v2
from google.api_core.client_options import ClientOptions
from google.oauth2 import service_account

data_to_write_to_endpoint = key1: value1, ...

#Json key for a Service account permitted to write logs into the gcp 
# project where your endpoint is
credentials = service_account.Credentials.from_service_account_info(
            json.loads(SERVICE_ACOUNT_KEY_JSON)
        )
client = logging_v2.client.Client(
            credentials=credentials, client_options=ClientOptions(api_endpoint="logging.googleapis.com",),
        )
# This represent your Vertex AI endpoint
resource = logging_v2.Resource(
            type="aiplatform.googleapis.com/Endpoint",
            labels="endpoint_id": YOUR_ENDPOINT_ID, "location": ENDPOINT_REGION,
        )
logger = client.logger("LOGGER NAME")
logger.log_struct(
        info=data_to_write_to_endpoint,
        severity=severity,
        resource=resource,
    )

【讨论】:

以上是关于如何在 Vertex AI 中构建容器日志?的主要内容,如果未能解决你的问题,请参考以下文章

Vertex AI 自定义容器批量预测

Google Cloud Platform Vertex AI 日志未显示在自定义作业中

如何跟踪来自 Vertex AI 管道的参数和指标

如何在 Vertex AI AutoML 时间序列模型中选择目标列

如何使用 Vertex AI Endpoint 部署预处理代码

如何在 Vertex AI 表格预测中分配两个或多个时间序列标识符列