构建 Dataset
所有文档
menu

对象存储 BOS

构建 Dataset

产品详情自助选购

bostorchconnector 当前支持两种 dataset:

  • BosMapDataset:继承自torch.utils.data.Dataset
  • BosIterableDataset:继承自torch.utils.data.IterableDataset

两种 dataset 均支持以下两种方式构建:

  • from_prefix:通过存储前缀构建
  • from_objects:通过已知的object列表构建

构建dataset时候的bos_client_config配置参数如下:

配置项 默认值 说明
credentials_path "~/.baidubce/credentials" 存储访问凭证ak/sk的路径
log_level 1 日志级别,默认是INFO级别。0表示DEBUG;1表示INFO;2表示WARN;3表示ERROR:4表示FATAL;
log_path "/tmp/bostorchconnector/sdk.log" 日志存储路径
part_size 8388608 分块上传时的分块大小,默认8MB
prefect_limit_mb 4096 预取缓存限制,单位MB,默认4096MB

构建适用于随机读取的BosMapDataset

BosMapDataset 适用于数据量不大,需要随机访问的数据集。

以 from_prefix 构建为例:

from bostorchconnector import BosMapDataset

# 填充 <BUCKET>、<PREFIX> 和对应的endpoint
DATASET_URI="bos://<BUCKET>/<PREFIX>"
ENDPOINT="http://bj.bcebos.com"
config = BosClientConfig(log_level=1)

map_dataset = BosMapDataset.from_prefix(DATASET_URI, endpoint=ENDPOINT, bos_client_config=config)

# 随机读index=0的样本
item = map_dataset[0]

# 获取bucket、key、数据等信息
bucket = item.bucket
key = item.key
content = item.read()
len(content)

以 from_objects 构建为例:

from bostorchconnector import BosMapDataset

# 填充 <BUCKET>、ObjectName和对应的endpoint
DATASET_URIS = [
    "bos://<BUCKET>/img001.jpg",
    "bos://<BUCKET>/img002.jpg",
    "bos://<BUCKET>/img003.jpg"
]
ENDPOINT="http://bj.bcebos.com"
config = BosClientConfig(log_level=1)

map_dataset = BosMapDataset.from_objects(DATASET_URI, endpoint=ENDPOINT, bos_client_config=config)

# 随机读index=0的样本
item = map_dataset[0]

# 获取bucket、key、数据等信息
bucket = item.bucket
key = item.key
content = item.read()
len(content)

构建适用于流式顺序读取的BosIterableDataset

BosIterableDataset 适用于数据量大,需要顺序处理的数据集。

以 from_prefix 构建为例:

from bostorchconnector import BosIterableDataset

# 填充 <BUCKET>、ObjectName和对应的endpoint
DATASET_URI="bos://<BUCKET>/<PREFIX>"
ENDPOINT="http://bj.bcebos.com"
config = BosClientConfig(log_level=1)

iterable_dataset = BosIterableDataset.from_prefix(DATASET_URI, endpoint=ENDPOINT, bos_client_config=config)

# BosIterableDataset是可迭代对象 
for item in iterable_dataset:
    data = item.read()
    print(len(data))
    print(item.key)

以 from_objects 构建为例:

from bostorchconnector import BosIterableDataset

# 填充 <BUCKET>、ObjectName和对应的endpoint
DATASET_URIS = [
    "bos://<BUCKET>/img001.jpg",
    "bos://<BUCKET>/img002.jpg",
    "bos://<BUCKET>/img003.jpg"
]
ENDPOINT="http://bj.bcebos.com"
config = BosClientConfig(log_level=1)

iterable_dataset = BosIterableDataset.from_objects(DATASET_URI, endpoint=ENDPOINT, bos_client_config=config)

# BosIterableDataset是可迭代对象 
for item in iterable_dataset:
    data = item.read()
    print(len(data))
    print(item.key)
上一篇
配置 BOS Connector for Pytorch
下一篇
读写 Checkpoint