使用 MLTransform 预处理数据

本页面介绍了为什么以及如何使用 MLTransform 功能来准备数据以用于训练机器学习 (ML) 模型。通过将多个数据处理转换合并到一个类中,MLTransform 可简化将 Apache Beam ML 数据处理操作应用于工作流的过程。

突出显示了数据处理步骤的 Dataflow ML 工作流图。

图 1:完整的 Dataflow ML 工作流。在工作流的预处理步骤中使用 MLTransform

优势

MLTransform 类具有以下优势:

  • 无需编写复杂代码或管理底层库即可转换数据。
  • 生成可用于将数据推送到向量数据库或运行推理的嵌入。
  • 通过一个接口有效地链接多种类型的处理操作。

支持和限制

MLTransform 类具有以下限制:

  • 适用于使用 Apache Beam Python SDK 2.53.0 及更高版本的流水线。
  • 流水线必须使用默认窗口

文本嵌入转换

使用 TFT 的数据处理转换

  • 支持 Python 3.9、3.10、3.11。
  • 支持批处理流水线。

使用场景

示例笔记本演示了如何将 MLTransform 用于特定应用场景。

我想使用 Vertex AI 为 LLM 生成文本嵌入
将 Apache Beam MLTransform 类与 Vertex AI 文本嵌入 API 搭配使用以生成文本嵌入。文本嵌入是将文本表示为数字向量的方法,这是许多自然语言处理 (NLP) 任务所必需的。
我想使用 Hugging Face 为 LLM 生成文本嵌入
使用 Apache Beam MLTransform 类和 Hugging Face Hub 模型来生成文本嵌入。Hugging Face SentenceTransformers 框架使用 Python 生成句子、文本和图片嵌入。
我想从数据集计算词汇表
从数据集计算唯一词汇表,然后将每个词或词元映射到不同的整数索引。使用此转换将文本数据转换为数字表示形式,以用于机器学习任务。
我想扩缩数据以训练机器学习模型
扩缩数据,以便用它来训练您的机器学习模型。Apache Beam MLTransform 类包含多个数据扩缩转换。

如需查看可用转换的完整列表,请参阅 Apache Beam 文档中的转换

使用 MLTransform

如需使用 MLTransform 类预处理数据,请在流水线中添加以下代码:

  import apache_beam as beam
  from apache_beam.ml.transforms.base import MLTransform
  from apache_beam.ml.transforms.tft import TRANSFORM_NAME
  import tempfile

  data = [
      {
          DATA
      },
  ]

  artifact_location = gs://BUCKET_NAME
  TRANSFORM_FUNCTION_NAME = TRANSFORM_NAME(columns=['x'])

  with beam.Pipeline() as p:
    transformed_data = (
        p
        | beam.Create(data)
        | MLTransform(write_artifact_location=artifact_location).with_transform(
            TRANSFORM_FUNCTION_NAME)
        | beam.Map(print))

替换以下值:

  • TRANSFORM_NAME:要使用的转换的名称
  • BCUKET_NAMECloud Storage 存储桶的名称
  • DATA:要转换的输入数据
  • TRANSFORM_FUNCTION_NAME:您在代码中为转换函数指定的名称

后续步骤