机器学习平台支持如下 2 种方式在训练代码中访问 TOS 的数据:
运行在机器学习平台的训练容器中的各机器学习代码(支持 TensorFlow / PyTorch/ MXNet/ XGBoost等),可以通过火山引擎自研的 CloudFS 分布式文件系统将其转换为 POSIX 协议的接口,挂载到训练容器中。同时在 POSIX Client 端中提供一层缓存,加速第 2+ epoch 之后的访问速度。
下图为架构图,其中 CloudFS Fuse Client 和 GPU 部署在同一台 GPU 机器上,CloudFS 和 GPU 机器部署在同一个机房。
分类 | 限制说明 | 临时解决方案 |
---|---|---|
【功能】 | python logging 直接写入文件到 TOS 目录时,不能追加写入已存在的文件,每次必须是一个新文件。 | 每次写入的时候指定一个新文件名,参考samples/py/test_logging.py。 |
【性能】 | 递归统计目录下文件数量超过 1w 的时候,不要做目录 mv 、cp 类似的操作,因为会比较慢或者出现数据不一致的现象。 | 通过 AWS CLI 工具操作。 |
【性能】 | 目录下文件数量大于 1w 的时候,tf.io.gfile.listdir操作会比较慢。 | 事先生成文件名索引或者通过 TFRecord / LMDB 等 pack 方案,降低文件数量。 |
文件追加写功能部分受限,支持以 append 模式创建、后缀为.log 打开的文件,其余方式打开的文件不支持追加写。
填写的 AK / SK 需要有 TOS 的读写权限,只读访问后续支持。
mv 操作限制文件数在 1w 以内。
动态向 TOS 中写入的新数据无法即时在挂载的共享文件系统中读到,需要在开发机、自定义任务的容器中执行如下指令手动刷新:
cfs-cli
刷新目录无法递归刷新,即对 /dir1
执行如下指令并不会刷新 /dir1/sub_dir1
这个子目录。cfs-cli ls <待刷新的目录>