使用 Dataflow 和 Cloud Storage FUSE 處理 ML 資料

本頁說明如何搭配 Dataflow 使用 Cloud Storage FUSE,處理機器學習 (ML) 工作用的資料集。

處理機器學習工作時,Dataflow 可用於處理大型資料集。不過,OpenCV 等用於 ML 的常見軟體程式庫有輸入檔案需求。這些應用程式通常需要存取檔案,就像檔案儲存在本機電腦硬碟中,而非雲端儲存空間。這項規定造成困難和延誤。為解決這個問題,管道可以針對輸入內容使用特殊的 I/O 連接器,或先將檔案下載到 Dataflow 虛擬機器 (VM),再進行處理。這些解決方案通常效率不彰。

Cloud Storage FUSE 可避免使用這些效率不彰的解決方案。Cloud Storage FUSE 可讓您將 Cloud Storage 值區掛接到 Dataflow VM。這樣一來,Cloud Storage 中的檔案就會顯示為本機檔案。因此,機器學習軟體可以直接存取這些檔案,不必事先下載。

優點

使用 Cloud Storage FUSE 執行 ML 工作有下列優點:

  • 使用本機檔案系統語意,即可在 Dataflow VM 中存取 Cloud Storage 上代管的輸入檔案。
  • 由於系統會視需要存取資料,因此不必事先下載輸入檔案。

支援與限制

  • 如要在 Dataflow 中使用 Cloud Storage FUSE,您必須為工作站 VM 設定外部 IP 位址,使其符合網際網路存取需求。

指定要搭配 Cloud Storage FUSE 使用的 bucket

如要指定要掛接至 VM 的 Cloud Storage bucket,請使用 --experiments 旗標。如要指定多個值區,請在值區名稱之間使用半形分號分隔符 (;)。

格式如下:

--experiments="gcsfuse_buckets=CONFIG"

更改下列內容:

  • CONFIG:以半形分號分隔的 Cloud Storage 項目清單,每個項目都是下列其中一種:

    1. BUCKET_NAME:Cloud Storage 值區名稱。 例如,dataflow-samples。如果省略 bucket 模式,bucket 會視為唯讀。

    2. BUCKET_NAME:MODE:Cloud Storage 值區名稱和相關聯的模式,其中 MODEro (唯讀) 或 rw (讀寫)。

      例如:

      --experiments="gcsfuse_buckets=read-bucket1;read-bucket2:ro;write-bucket1:rw"
      

      在本例中,指定模式可確保:

      • gs://read-bucket1 是以唯讀模式掛接。
      • gs://read-bucket2 是以唯讀模式掛接。
      • gs://write-bucket1 以讀寫模式掛接。

    Beam 管道程式碼可在 /var/opt/google/gcs/BUCKET_NAME 存取這些值區。