使用文件系统在步骤之间传递批量数据¶
在某些情况下,可能会出现批量数据量过大的情况,这时将数据写入磁盘并在下一步中读回,而不是使用队列传递数据,可能会更快。为了解决这个问题,distilabel
使用 fsspec
,允许提供文件系统配置,并指定是否应使用此文件系统在 distilabel
pipeline 的 run
方法中的步骤之间传递数据
警告
为了使用特定的文件系统/云存储,您需要安装为该文件系统提供 fsspec
实现的特定软件包。例如,要使用 Google Cloud Storage,您需要安装 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==False
,distilabel
也会使用文件系统将数据传递给 GlobalStep
。