跳到内容

使用文件系统在步骤之间传递批量数据

在某些情况下,可能会出现批量数据量过大的情况,这时将数据写入磁盘并在下一步中读回,而不是使用队列传递数据,可能会更快。为了解决这个问题,distilabel 使用 fsspec,允许提供文件系统配置,并指定是否应使用此文件系统在 distilabel pipeline 的 run 方法中的步骤之间传递数据

警告

为了使用特定的文件系统/云存储,您需要安装为该文件系统提供 fsspec 实现的特定软件包。例如,要使用 Google Cloud Storage,您需要安装 gcsfs

pip install gcsfs

查看可用的实现:fsspec - 其他已知实现

from distilabel.pipeline import Pipeline

with Pipeline(name="my-pipeline") as pipeline:
  ...

if __name__ == "__main__":
    distiset = pipeline.run(
        ..., 
        storage_parameters={"path": "gcs://my-bucket"},
        use_fs_to_pass_data=True
    )

上面的代码设置了一个文件系统(在本例中为 Google Cloud Storage),并将标志 use_fs_to_pass_data 设置为指定批处理的数据应使用文件系统传递给步骤。 storage_parameters 参数是可选的,如果未提供但 use_fs_to_pass_data==True,则 distilabel 将使用本地文件系统。

注意

由于 GlobalStep 会在一个批次中接收来自先前步骤的所有数据,从而累积所有数据,因此批次的数据很可能太大而无法使用队列传递。在这种情况下,即使 use_fs_to_pass_data==Falsedistilabel 也会使用文件系统将数据传递给 GlobalStep