You need to enable JavaScript to run this app.
导航

训练代码如何访问TOS

最近更新时间2023.05.16 16:57:18

首次发布时间2021.09.01 16:30:36

机器学习平台支持如下 2 种方式在训练代码中访问 TOS 的数据:

  1. 将 TOS 挂载为 POSIX 文件系统接口,然后训练代码像访问磁盘一样访问 TOS 中的对象。
  2. TOS OpenAPISDK
TOS 挂载为 POSIX 文件系统接口

运行在机器学习平台的训练容器中的各机器学习代码(支持 TensorFlow / PyTorch/ MXNet/ XGBoost等),可以通过火山引擎自研的 CloudFS 分布式文件系统将其转换为 POSIX 协议的接口,挂载到训练容器中。同时在 POSIX Client 端中提供一层缓存,加速第 2+ epoch 之后的访问速度。
下图为架构图,其中 CloudFS Fuse Client 和 GPU 部署在同一台 GPU 机器上,CloudFS 和 GPU 机器部署在同一个机房。

alt

CloudFS V1 的使用限制
分类限制说明临时解决方案
【功能】python logging 直接写入文件到 TOS 目录时,不能追加写入已存在的文件,每次必须是一个新文件。每次写入的时候指定一个新文件名,参考samples/py/test_logging.py
【性能】递归统计目录下文件数量超过 1w 的时候,不要做目录 mvcp 类似的操作,因为会比较慢或者出现数据不一致的现象。通过 AWS CLI 工具操作。
【性能】目录下文件数量大于 1w 的时候,tf.io.gfile.listdir操作会比较慢。事先生成文件名索引或者通过 TFRecord / LMDB 等 pack 方案,降低文件数量。
CloudFS V2(请联系平台管理开通)的使用限制
  • 文件追加写功能部分受限,支持以 append 模式创建、后缀为.log 打开的文件,其余方式打开的文件不支持追加写。

  • 填写的 AK / SK 需要有 TOS 的读写权限,只读访问后续支持。

  • mv 操作限制文件数在 1w 以内。

  • 动态向 TOS 中写入的新数据无法即时在挂载的共享文件系统中读到,需要在开发机、自定义任务的容器中执行如下指令手动刷新:

    • 使用 cfs-cli 刷新目录无法递归刷新,即对 /dir1 执行如下指令并不会刷新 /dir1/sub_dir1 这个子目录。
cfs-cli ls <待刷新的目录>