S3FileLoader¶
- class torchdata.datapipes.iter.S3FileLoader(source_datapipe: IterDataPipe[str], request_timeout_ms=- 1, region='', buffer_size=None, multi_part_download=None)¶
[已弃用] 请改为使用 https://github.com/awslabs/s3-connector-for-pytorch。
可迭代的数据管道,从给定的 S3 URL 加载 Amazon S3 文件(函数名:
load_files_by_s3
)。S3FileLoader
以BytesIO
格式迭代所有给定的 S3 URL,并使用(url, BytesIO)
元组。注意
source_datapipe
**必须** 包含一个有效的 S3 URL 列表。request_timeout_ms
和region
将覆盖配置文件或环境变量中的设置。缺少 AWS 正确配置会导致空响应。有关 S3 IO 数据管道设置和 AWS 配置的更多详细信息,请参阅 自述文件。
- 参数::
source_datapipe – 包含指向 s3 文件的 URL 的数据管道
request_timeout_ms – 每个请求的超时设置(默认情况下为 3,000 毫秒)
region – 用于访问文件的区域(默认情况下从凭据推断)
buffer_size – 每个块的缓冲区大小,用于逐步下载大型文件(默认情况下为 128Mb)
multi_part_download – 标志,用于将每个块拆分为小数据包,并并行下载这些数据包(默认情况下启用)
示例
from torchdata.datapipes.iter import IterableWrapper, S3FileLoader dp_s3_urls = IterableWrapper(['s3://bucket-name/folder/', ...]).list_files_by_s3() # In order to make sure data are shuffled and sharded in the # distributed environment, `shuffle` and `sharding_filter` # are required. For detail, please check our tutorial in: # https://pytorch.ac.cn/data/main/tutorial.html#working-with-dataloader sharded_s3_urls = dp_s3_urls.shuffle().sharding_filter() dp_s3_files = S3FileLoader(sharded_s3_urls) for url, fd in dp_s3_files: # Start loading data data = fd.read() # Functional API dp_s3_files = sharded_s3_urls.load_files_by_s3(buffer_size=256) for url, fd in dp_s3_files: data = fd.read()