本页面介绍了为什么以及如何使用 MLTransform
功能来准备数据以用于训练机器学习 (ML) 模型。通过将多个数据处理转换合并到一个类中,MLTransform
可简化将 Apache Beam ML 数据处理操作应用于工作流的过程。
MLTransform
。优势
MLTransform
类具有以下优势:
- 无需编写复杂代码或管理底层库即可转换数据。
- 生成可用于将数据推送到向量数据库或运行推理的嵌入。
- 通过一个接口有效地链接多种类型的处理操作。
支持和限制
MLTransform
类具有以下限制:
- 适用于使用 Apache Beam Python SDK 2.53.0 及更高版本的流水线。
- 流水线必须使用默认窗口。
文本嵌入转换:
- 支持 Python 3.8、3.9、3.10、3.11 和 3.12。
- 支持批处理和流式处理流水线。
- 支持 Vertex AI 文本嵌入 API 和 Hugging Face Sentence Transformers 模块。
使用 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 FaceSentenceTransformers
框架使用 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_NAME
:Cloud Storage 存储桶的名称DATA
:要转换的输入数据TRANSFORM_FUNCTION_NAME
:您在代码中为转换函数指定的名称
后续步骤
- 如需详细了解
MLTransform
,请参阅 Apache Beam 文档中的预处理数据。 - 如需查看更多示例,请参阅 Apache Beam 转换目录中的用于数据处理的
MLTransform
。 - 在 Colab 中运行交互式笔记本。