使用 Dataflow 和 Cloud Storage FUSE 处理机器学习数据

本页面介绍了如何将 Cloud Storage FUSE 与 Dataflow 搭配使用,以处理机器学习 (ML) 任务的数据集。

在处理机器学习任务时,Dataflow 可用于处理大型数据集。不过,用于机器学习的一些常见软件库(如 OpenCV)具有输入文件要求。它们通常需要访问文件,就像文件存储在本地计算机的硬盘上一样,而不是从云端存储中访问。这项要求会造成困难和延迟。作为解决方案,流水线可以使用特殊 I/O 连接器进行输入,也可以在处理前将文件下载到 Dataflow 虚拟机 (VM) 上。这些解决方案通常效率不高。

Cloud Storage FUSE 提供了一种避免这些低效解决方案的方法。借助 Cloud Storage FUSE,您可以将 Cloud Storage 存储桶装载到 Dataflow 虚拟机。这样一来,Cloud Storage 中的文件就会显示为本地文件。因此,机器学习软件可以直接访问这些数据,而无需事先下载。

优势

使用 Cloud Storage FUSE 执行机器学习任务具有以下优势:

  • 您可以使用本地文件系统语义在 Dataflow 虚拟机中访问托管在 Cloud Storage 上的输入文件。
  • 由于数据是按需访问的,因此无需事先下载输入文件。

指定要与 Cloud Storage FUSE 搭配使用的存储桶

如需指定要装载到虚拟机的 Cloud Storage 存储桶,请使用 --experiments 标志。如需指定多个存储桶,请在存储桶名称之间使用分号分隔符 (;)。

其格式如下所示:

--experiments="gcsfuse_buckets=CONFIG"

替换以下内容:

  • CONFIG:以分号分隔的 Cloud Storage 条目列表,其中每个条目都是以下各项之一:

    1. BUCKET_NAME:Cloud Storage 存储桶名称。 例如 dataflow-samples。如果您省略存储桶模式,则存储桶会视为只读存储桶。

    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 访问这些存储桶。