谷歌云 | Dataflow 和 Vertex AI:可扩展高效的模型服务

【Cloud Ace云一 是 Google Cloud 全球战略合作伙伴,在亚太地区、欧洲、美洲和非洲拥有二十多个办公室。Cloud Ace 在谷歌专业领域认证及专业知识目前排名全球第一位,并连续多次获得 Google Cloud 各类奖项。作为谷歌云托管服务商,我们提供谷歌云谷歌地图谷歌办公套件谷歌云认证培训等服务。】

如果您考虑使用 VertexAI 来训练和部署您的模型,那您选对了!数据对于机器学习至关重要,模型拥有的数据量越大,质量越高,模型的性能就会越好。在训练模型之前,数据必须经过预处理,这意味着清洗、转换和聚合数据,使其成为模型可以理解的格式。数据预处理在模型服务时也很重要,但由于实时流数据、硬件可扩展性和不完整数据等因素,可能会更加复杂。

当您处理大量数据时,您需要一个既可扩展又可靠的服务。Dataflow 完全符合要求,因为它可以在实时和批处理模式下处理数据,并且非常适合具有高吞吐量和低延迟要求的模型。

Dataflow 和 Vertex AI 配合得非常好,本文将带您了解如何使用这两个强大的服务为流式预测请求提供模型。

用例:流式预测请求

某些应用程序,例如传感器数据中的异常检测和工业设备的预测性维护,需要从机器学习模型获得实时预测。令人惊讶的是,实施实时预测系统并不需要过于复杂的设置。如果您的机器学习模型需要对实时数据进行预测,一个简单的方法是利用 Pub/Sub 主题来捕获实时数据,使用 Dataflow 管道对数据进行预处理和转换,并使用 Vertex AI 端点执行机器学习模型并生成预测。此外,您可以启用模型监控来跟踪可能影响预测准确性的任何数据或模型更改。以下图示了此解决方案的工作流程:

部署模型到 Vertex AI 端点

首先,我们需要在 Vertex AI 模型注册表中存储一个经过训练的模型,然后才能实施服务解决方案。这可以通过在 Vertex AI 中训练模型或导入预训练模型来完成。

现在,只需点击几下(或使用 API 调用),您就可以将模型部署到 Vertex AI 中的端点,以便进行在线预测。您可以在不编写任何额外自定义代码的情况下启用模型监控,以确保训练数据和服务数据之间没有偏差。

除了将模型部署到端点外,您还可以使用 RunInference API 在 Apache Beam 管道中为机器学习模型提供服务。这种方法有几个优势,包括灵活性和可移植性。然而,在 Vertex AI 中部署模型还提供了许多额外的好处,例如平台内置的模型监控工具、TensorBoard 和模型注册表管理。

Vertex AI 还提供了在端点中使用优化的 TensorFlow 运行时的功能。要做到这一点,只需在部署模型时指定 TensorFlow 运行时容器。优化的 TensorFlow 运行时是一种可以提高 TensorFlow 模型性能和降低成本的运行时。

数据处理 Dataflow 管道

Apache Beam 内置支持通过使用 VertexAIModelHandlerJSON 类向远程部署的 Vertex AI 端点发送请求。只需几行代码,我们就可以发送预处理消息进行推断。

model_handler = VertexAIModelHandlerJSON(
        endpoint_id=known_args.endpoint_id,
        project=known_args.project_id,
        location=known_args.location,
    )

现在,我们将使用 Dataflow 进行数据预处理部分。下面是一个 Python Apache Beam 管道的代码片段,其中包括以下内容:

1. 从 Pub/Sub 读取消息

2. 对消息进行预处理,可能包括以下内容:

  • 清理数据
  • 处理缺失值
  • 对分类数据进行编码
  • 特征缩放

3. 使用 Vertex AI 模型处理程序向 Vertex AI 端点发送预测请求

4. 处理输出:将模型的原始输出转换为易于解释的格式

5. 写入BigQuery:将输出存储在 BigQuery 中,以便可以轻松检索

with beam.Pipeline(options=pipeline_options) as p:
        elements = (  
            p  | "Read PubSub"  >> beam.io.ReadFromPubSub(
                subscription=known_args.subscription
            ).with_output_types(bytes)
            | "Preprocess" >> beam.ParDo(Preprocess())
            | "Run Vertex Inference" >> RunInference(model_handler)
            | "Process Output" >> beam.ParDo(Postprocess())
            | "Write to BigQuery"
            >> beam.io.WriteToBigQuery(
            table=f"{known_args.bq_location}"
            )
        )

Dataflow + Vertex AI 是为批处理和流式预测请求提供机器学习模型的强大组合。Dataflow 可以以实时和批处理模式处理数据,并且非常适合需要高吞吐量和低延迟的用例。Vertex AI 提供了一个部署和管理模型的平台,还提供了许多额外的好处,如用于模型监控的内置工具、利用优化的 Tensorflow 运行时和模型注册表。

启航

如果您想要了解如何使用 Dataflow 和 Vertex AI 为机器学习模型提供服务,了解谷歌云如何帮助您实施端到端解决方案,欢迎联系我们一起讨论您的云需求!

Leave a Reply