您可以運用 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
預先處理資料」。搭配機器學習作業架構 (例如 Kubeflow Pipelines (KFP) 或 TensorFlow Extended (TFX)) 使用 Dataflow。詳情請參閱「機器學習工作流程中的 Dataflow ML」。
預測和推論管道
Dataflow ML 結合了 Dataflow 的強大功能和 Apache Beam 的 RunInference
API。您可以使用 RunInference
API 定義模型的特徵和屬性,然後將該設定傳遞至 RunInference
轉換。這項功能可讓使用者在 Dataflow 管道中執行模型,不必瞭解模型的實作詳細資料。您可以選擇最適合資料的架構,例如 TensorFlow 和 PyTorch。
在管道中執行多個模型
使用 RunInference
轉換,將多個推論模型新增至 Dataflow 管道。如需更多資訊 (包括程式碼詳細資料),請參閱 Apache Beam 說明文件中的「多模型管道」。
建立跨語言管道
如要在 Java 管道中使用 RunInference,請建立跨語言 Python 轉換。管道會呼叫轉換作業,執行預先處理、後續處理和推論作業。
如需詳細操作說明和範例管道,請參閱「使用 Java SDK 中的 RunInference」。
在 Dataflow 使用 GPU
如果批次或串流管道需要使用加速器,您可以在 NVIDIA GPU 裝置上執行 Dataflow 管道。詳情請參閱「使用 GPU 執行 Dataflow 管道」。
排解 Dataflow ML 問題
本節提供疑難排解策略和連結,或許能在您使用 Dataflow ML 時派上用場。
Stack 預期每個張量的大小都相同
使用 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 說明文件中的「無法批次處理張量元素」。
避免大型模型發生記憶體不足錯誤
載入中型或大型 ML 模型時,機器可能會記憶體不足。 Dataflow 提供相關工具,協助您在載入機器學習模型時避免記憶體不足 (OOM) 錯誤。請參閱下表,判斷適合您情況的方法。
情境 | 解決方案 |
---|---|
模型夠小,可放入記憶體。 |
使用 RunInference 轉換,無需額外設定。RunInference 轉換會在執行緒之間共用模型。如果機器上的每個 CPU 核心都能容納一個模型,管道就可以使用預設設定。
|
多個訓練方式不同的模型執行相同工作。 | 使用模型專屬金鑰。詳情請參閱「使用多個訓練方式不同的模型執行 ML 推論」。 |
一個模型會載入記憶體,所有程序都會共用這個模型。 |
使用 如果您要建構自訂模型處理常式,請覆寫 |
您必須設定載入至電腦的模型確切數量。 |
如要精確控管載入的模型數量,請使用 如果您要建構自訂模型處理常式,請覆寫 |
如要進一步瞭解如何使用 Dataflow 管理記憶體,請參閱排解 Dataflow 記憶體不足錯誤。
後續步驟
- 在 GitHub 中探索 Dataflow ML 筆記本。
- 如要深入瞭解如何搭配使用機器學習與 Apache Beam,請參閱 Apache Beam 的 AI/ML 管道說明文件。
- 進一步瞭解
RunInference
API。 - 瞭解可用於監控
RunInference
轉換的指標。