使用 MLTransform 預處理資料

本頁說明如何使用 MLTransform 類別來預處理機器學習 (ML) 工作流程的資料。Apache Beam 提供一組資料處理轉換,用於預處理訓練和推論的資料。MLTransform 類別將各種轉換包裝在一個類別中,簡化您的工作流程。如需可用轉換的完整清單,請參閱本頁上的「轉換」區段。

為什麼使用 MLTransform

支援和限制

轉換

您可以使用 MLTransform 來產生文字嵌入,並執行各種資料處理轉換。

文字嵌入轉換

您可以使用 MLTranform 來產生嵌入,您可以使用這些嵌入將資料推送至向量資料庫或執行推論。

轉換名稱描述
SentenceTransformerEmbeddings使用 Hugging Face sentence-transformers 模型來產生文字嵌入。
VertexAITextEmbeddings使用 Vertex AI 文字嵌入 API 中的模型來產生文字嵌入。

使用 TFT 的資料處理轉換

MLTransform 類別中提供的下列轉換組來自 TensorFlow Transforms (TFT) 程式庫。TFT 為機器學習任務提供專用的處理模組。如需有關這些轉換的資訊,請參閱 TensorFlow 文件中的 Module:tft

轉換名稱描述
ApplyBuckets請參閱 TensorFlow 文件中的 tft.apply_buckets
ApplyBucketsWithInterpolation請參閱 TensorFlow 文件中的 tft.apply_buckets_with_interpolation
BagOfWords請參閱 TensorFlow 文件中的 tft.bag_of_words
Bucketize請參閱 TensorFlow 文件中的 tft.bucketize
ComputeAndApplyVocabulary請參閱 TensorFlow 文件中的 tft.compute_and_apply_vocabulary
DeduplicateTensorPerRow請參閱 TensorFlow 文件中的 tft.deduplicate_tensor_per_row
HashStrings請參閱 TensorFlow 文件中的 tft.hash_strings
NGrams請參閱 TensorFlow 文件中的 tft.ngrams
ScaleByMinMax請參閱 TensorFlow 文件中的 tft.scale_by_min_max
ScaleTo01請參閱 TensorFlow 文件中的 tft.scale_to_0_1
ScaleToGaussian請參閱 TensorFlow 文件中的 tft.scale_to_gaussian
ScaleToZScore請參閱 TensorFlow 文件中的 tft.scale_to_z_score
TFIDF請參閱 TensorFlow 文件中的 tft.tfidf

I/O 需求

成品

成品 (Artifacts) 是由資料轉換所建立的額外資料元素。成品的範例包括來自 ScaleTo01 轉換的最小值和最大值,或來自 ScaleToZScore 轉換的平均值和變異數。

MLTransform 類別中,write_artifact_locationread_artifact_location 參數決定 MLTransform 類別是否建立或擷取成品。

寫入模式

當您使用 write_artifact_location 參數時,MLTransform 類別會在資料集上執行指定的轉換,然後從這些轉換中建立成品。這些成品會儲存在您在 write_artifact_location 參數中指定的位置。

當您想要儲存轉換的結果以供日後使用時,寫入模式很有用。例如,如果您在不同的資料集上應用相同的轉換,請使用寫入模式來確保轉換參數保持一致。

以下範例示範寫入模式的運作方式。

讀取模式

當您使用 read_artifact_location 參數時,MLTransform 類別會預期成品存在於 read_artifact_location 參數中提供的值中。在此模式下,MLTransform 會擷取成品並在轉換中使用它們。由於當您使用讀取模式時,轉換會儲存在成品中,因此您無需指定轉換。

成品工作流程

以下情境提供了成品的使用案例範例。

在訓練機器學習模型之前,您可以使用帶有 write_artifact_location 參數的 MLTransform。當您執行 MLTransform 時,它會應用轉換來預處理資料集。轉換會產生成品,這些成品會儲存在 write_artifact_location 參數值指定的位置。

預處理後,您可以使用轉換後的資料來訓練機器學習模型。

訓練後,您會執行推論。您會使用新的測試資料並使用 read_artifact_location 參數。透過使用此設定,您可以確保測試資料經過與訓練資料相同的預處理步驟。在讀取模式下,執行 MLTransform 會從 read_artifact_location 參數值指定的位置擷取轉換成品。MLTransform 會將這些成品套用至測試資料。

此工作流程可為訓練資料和測試資料的預處理步驟提供一致性。這種一致性可確保模型可以準確評估測試資料並維持模型效能的完整性。

使用 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 = tempfile.mkdtemp()
  <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))

請取代以下值

如需更多範例,請參閱用於資料處理的 MLTransform,位於轉換目錄中。