You need to enable JavaScript to run this app.
文档中心
对象存储

对象存储

复制全文
下载 pdf
使用TOS PyTorch Connector
TosMapDataset
复制全文
下载 pdf
TosMapDataset
本文为您介绍如何通过 TosMapDataset 构建 Dataset。​
前提条件​
已安装并配置 TOS PyTorch Connector 。具体操作,请参见安装 TOS PyTorch Connector和配置TOS PyTorch Connector。​
构建 Dataset​
构建方式​
在使用 TosMapDataset 构建 Dataset 时,有两种构建方式:​
  • TOS_URI 前缀:适用于 TOS 存储路径具有统一规律的场景。​
  • TOS_URI 的列表:适用于 TOS 存储路径位置明确但分散的场景。​
通过 TOS_URI 前缀构建 Dataset​
以下示例用于使用 TosMapDataset 的 from_prefix() 方法构建 Dataset。​
​
class TosMapDataset(torch.utils.data.Dataset):​
#通过 from_prefix 方法构建 Dataset​
@classmethod​
def from_prefix(cls, prefix: str, *, region: str, endpoint: Optional[str] = None,​
transform: Callable[[TosObjectReader], Any] = None,​
cred: Optional[CredentialProvider] = None,​
client_conf: Optional[TosClientConfig] = None,​
use_native_client: bool = True,​
reader_type: Optional[ReaderType] = None,​
buffer_size: Optional[int] = None,​
enable_crc: bool = True,​
prefetch_concurrency: int = 0):​
... ​
​
通过 TOS_URI 的列表构建 Dataset​
以下示例用于使用 TosMapDataset 的 from_urls() 方法构建 Dataset。​
​
class TosMapDataset(torch.utils.data.Dataset):​
#通过 from_urls 方法构建 Dataset​
@classmethod​
def from_urls(cls, urls: Union[str, Iterator[str]], *, region: str, endpoint: Optional[str] = None,​
transform: Callable[[TosObjectReader], Any] = None,​
cred: Optional[CredentialProvider] = None,​
client_conf: Optional[TosClientConfig] = None,​
use_native_client: bool = True,​
reader_type: Optional[ReaderType] = None,​
buffer_size: Optional[int] = None,​
enable_crc: bool = True,​
prefetch_concurrency: int = 0)​
... ​
​
参数描述​
​
参数列表​
是否必填​
类型​
示例值​
说明​
urls​
是​
str | Iterator[str]​
['tos://bucket/key1', 'tos://bucket/key2']​
单个 URL 的格式为 tos://{bucketname}/{objectname}。​
prefix​
是​
str​
tos://bucket/prefix​
格式为 tos://{bucketname}/{prefix}。​
region​
是​
str​
cn-beijing​
火山 TOS 地域。​
endpoint​
否​
str​
http://tos-cn-beijing.ivolces.com​
火山 TOS 访问域名。​
transform​
否​
Callable[[TosObjectReader], Any]​
​
def transform(item):​
data = item.read()​
return item.key, item.size​
​
转换函数。​
cred​
否​
CredentialProvider​
CredentialProvider('ak', 'sk')​
访问密钥配置。​
client_conf​
否​
TosClientConfig​
-​
Connector 参数配置。​
reader_type​
否​
ReaderType​
ReaderType.RANGED​
TosObjectReader 子类型,支持的值:​
  • ReaderType.SEQUENTIAL:带缓存的 Reader,缓存全部数据。​
  • ReaderType.RANGED:带缓存的 Reader,仅缓存缓存块大小数据。​
  • ReaderType.DIRECT:不带缓存的 Reader。​
buffer_size​
否​
int​
8388608​
当 ReaderType 为 ReaderType.RANGED 时有效,代表缓存块大小。​
enable_crc​
否​
bool​
True​
是否在上传场景和顺序读场景校验读写的数据一致性。​
prefetch_concurrency​
否​
int​
32​
预加载读取数据集的并发数。​
​
代码示例​
以下代码示例用于 PyTorch 创建数据加载器,region、endpoint、ak/sk 等参数需要替换为您所需参数。​
​
from tostorchconnector import CredentialProvider​
from tostorchconnector import TosMapDataset​
from torch.utils.data import DataLoader​
​
# 数据集路径​
dataset_uri = 'tos://bucket/prefix'​
region = 'cn-beijing'​
# 火山 TOS Endpoint​
endpoint = 'http://tos-cn-beijing.ivolces.com'​
ak = '<your-access-key>'​
sk = '<your-secret-key>'​
​
# 数据批次大小​
BATCH_SIZE = 256​
# 工作进程数​
NUM_WORKERS = 32​
# 数据转换函数​
def transform(item):​
data = item.read()​
return item.key, item.size​
​
# 使用 TosMapDataset.from_prefix 从指定的数据集前缀构建数据集对象​
with TosMapDataset.from_prefix(dataset_uri,​
region=region, endpoint=endpoint,​
transform=transform,​
cred=CredentialProvider(​
ak=ak,​
sk=sk)) as dataset:​
#基于构建好的 dataset 创建 DataLoader ​
train_loader = DataLoader(dataset=dataset, batch_size=BATCH_SIZE, num_workers=NUM_WORKERS, shuffle=True)​
# 使用 DataLoader 进行迭代训练/读取​
for data in train_loader:​
print(data) ​
​
​
最近更新时间:2026.02.03 11:38:31
这个页面对您有帮助吗?
有用
有用
无用
无用