您可以将 Dataflow ML 的规模数据处理功能用于预测和推断流水线,以及为训练准备数据。
要求和限制
- Dataflow ML 支持批处理和流处理流水线。
- Apache Beam 2.40.0 及更高版本支持
RunInference
API。 - Apache Beam 2.53.0 及更高版本支持
MLTransform
API。 - 模型处理程序适用于 PyTorch、scikit-learn、TensorFlow、ONNX 和 TensorRT。对于不受支持的框架,您可以使用自定义模型处理程序。
为训练准备数据
使用
MLTransform
功能为训练机器学习模型准备数据。如需了解详情,请参阅使用MLTransform
预处理数据。将 Dataflow 与 Kubeflow Pipelines (KFP) 或 TensorFlow Extended (TFX) 等 ML-OPS 框架搭配使用。如需了解详情,请参阅机器学习工作流中的 Dataflow ML。
预测和推断流水线
Dataflow ML 结合了 Dataflow 和 Apache Beam 的 RunInference
API 的强大功能。您可以使用 RunInference
API 定义模型的特征和属性,并将该配置传递给 RunInference
转换。此功能可让用户在其 Dataflow 流水线中运行模型,而无需了解模型的实现细节。您可以选择最适合您数据的框架,例如 TensorFlow 和 PyTorch。
在流水线中运行多个模型
使用 RunInference
转换向 Dataflow 流水线添加多个推理模型。如需了解详情(包括代码详情),请参阅 Apache Beam 文档中的多模型流水线。
将 GPU 与 Dataflow 搭配使用
对于需要使用加速器的批处理或流处理流水线,您可以在 NVIDIA GPU 设备上运行 Dataflow 流水线。如需了解详情,请参阅使用 GPU 运行 Dataflow 流水线。
排查 Dataflow ML 问题
本部分提供了在使用 Dataflow ML 时可能有帮助的问题排查策略和链接。
堆栈要求每个张量的大小相同
如果您在使用 RunInference
API 时提供大小不同的图片或长度不同的字词嵌入,则可能会发生以下错误:
File "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", line 232, in run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: stack expects each tensor to be equal size, but got [12] at entry 0 and [10] at entry 1 [while running 'PyTorchRunInference/ParDo(_RunInferenceDoFn)']
发生此错误的原因是 RunInference
API 无法批量处理大小不同的张量元素。如需了解解决方法,请参阅 Apache Beam 文档中的无法批量处理张量元素。
后续步骤
- 探索应用场景笔记本。
- 如需深入了解如何将机器学习与 Apache Beam 搭配使用,请参阅 Apache Beam 的 AI/机器学习流水线文档。
- 详细了解
RunInference
API。 - 了解可用于监控
RunInference
转换的指标。