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

对象存储

复制全文
下载 pdf
最佳实践
在 Pytorch 任务中访问和存储 TOS 数据
复制全文
下载 pdf
在 Pytorch 任务中访问和存储 TOS 数据
本文介绍如何在 Pytorch 任务中访问和存储 TOS 数据。​
前提条件​
  1. 在使用 TOS 之前,请确保您已注册火山引擎账号并完成实名认证。​
  1. 请确保您已开通 TOS 服务并创建 TOS 存储桶,具体步骤,请参见快速入门。​
  1. 必须使用 Linux x86-64 操作系统。​
  1. 已安装 Python 3.8 及以上版本。​
注意​
不建议使用 3.12+ 版本,因为 PyTorch 不支持。​
环境准备​
对接 TOS 前,请先在 Python 3.8+ 环境安装 Pytorch,详情请参见 Pytorch。​
​
# 安装 torch 基本依赖​
pip3 install torch torchvision​
​
# 安装 torch lighting​
pip3 install lightning​
​
# 安装 torchdata​
pip3 install torchdata==0.9.0​
​
安装完成后,您可以通过以下示例验证是否安装成功。​
​
import torch​
import torchvision​
​
# 将 checkpoint 保存为本地文件​
if __name__ == '__main__':​
model = torchvision.models.resnet18()​
​
with open('test.pt', 'wb') as writer:​
torch.save(model.state_dict(), writer)​
​
​
with open('test.pt', 'rb') as reader:​
stat_dict = torch.load(reader)​
​
model.load_state_dict(stat_dict)​
print(model)​
​
对接方式说明​
​
对接方式​
说明​
使用 fsspec 对接​
通过实现了 fsspec 规范的 tosfs,将火山 TOS 封装为 python 的标准读写接口,再使用 torchdata 直接读写本地路径实现对接。更多信息,请参见 tosfs。​
使用 FSX 对接​
  • FSX 支持将存储桶挂载到 Linux 系统作为本地文件系统使用,适用于需要按照文件系统语义使用存储桶中数据的场景,例如 AI 机器学习场景下需要按照文件系统语义训练模型数据。​
  • FSX 客户端处于邀测状态,如需试用,请提交工单。​
  • 支持的运行环境及约束限制详情,请参见 FSX 概述。​
使用 S3 Connector 对接​
  • S3 Connector 是 AWS 提供的 pytorch 连接器,用于增强 torchdata 提供的 S3 相关访问能力,支持 map-style datasets、iterable-stype datasets 以及 checkpointing 接口,详细信息,请参见 S3-connector-for-pytorch。​
  • 当前仅支持 TOS FNS 桶,即扁平桶,更多信息请参见存储桶类型。​
使用 tosutil 对接​
使用 tosutil 工具将火山 TOS 挂载为本地路径,再使用 torchdata 直接读写本地路径实现对接。​
​
操作步骤​
不同对接方式的操作步骤如下。​
​
使用 fsspec 对接
使用 FSX 对接
使用 S3 Connector 对接
使用 tosutil 对接
​
  1. 执行以下命令安装 tosfs。​
  • ​
    # 安装 tosfs for fsspec​
    pip install tosfs​
    ​
  1. 执行以下命令初始化客户端。​
  • ​
    from tosfs.core import TosFileSystem​
    ​
    # 配置访问密钥等信息​
    if __name__ == '__main__':​
    tosfs = TosFileSystem(​
    key='<Your Volces AK>',​
    secret='<Your Volces SK>',​
    endpoint_url='http://tos-cn-beijing.volces.com',​
    region='cn-beijing',​
    )​
    ​
  1. 运行以下代码,使用 iterable-style datasets。​
说明​
本文以使用 北京地域的 bucketname 桶为例,建议您根据业务需求修改代码。​
  • ​
    from torchdata.datapipes.iter import FSSpecFileLister, FSSpecFileOpener​
    ​
    if __name__ == '__main__':​
    kwargs = {​
    'key' : '<Your Volces AK>',​
    'secret' : '<Your Volces SK>',​
    'endpoint_url' : 'https://tos-cn-beijing.volces.com',​
    'region' :'cn-beijing'​
    }​
    ​
    bucket = 'bucketname'​
    print('测试 iterable-style datasets')​
    file_lister = FSSpecFileLister(root='tos://'+ bucket+'/shard-data/', **kwargs)​
    iterable_dataset = FSSpecFileOpener(file_lister, mode='rb', **kwargs)​
    # 遍历并读取Dataset中的对象。​
    for _, item in iterable_dataset:​
    print(item.bucket, item.key)​
    data = item.read()​
    print(len(data))​
    ​
  1. 运行以下代码,保存或加载 checkpoint。​
说明​
本文以使用 北京地域的 bucketname 桶为例,建议您根据业务需求修改代码。​
  • ​
    import torch​
    import torchvision​
    from tosfs.core import TosFileSystem​
    ​
    if __name__ == '__main__':​
    tosfs = TosFileSystem(​
    key='<Your Volces AK>',​
    secret='<Your Volces SK>',​
    endpoint_url='http://tos-cn-beijing.volces.com',​
    region='cn-beijing',​
    )​
    ​
    bucket = 'bucketname'​
    print('测试 checkpointing')​
    model = torchvision.models.resnet18()​
    ​
    # 将 tos 封装为 python 的标准读写接口​
    with tosfs.open(bucket+ '/checkpoint/epoch1.ckpt', 'wb') as writer:​
    torch.save(model.state_dict(), writer)​
    ​
    with tosfs.open(bucket+'/checkpoint/epoch1.ckpt', 'rb') as reader:​
    stat_dict = torch.load(reader)​
    ​
    model.load_state_dict(stat_dict)​
    print(model)​
    ​
​
​
最近更新时间:2026.07.29 17:17:15
这个页面对您有帮助吗?
有用
有用
无用
无用