更新时间:2024-08-14 GMT+08:00

开发环境中如何选择存储

不同存储的实现原理都不同,在性能、易用性、成本的权衡中可以有不同的选择,没有一个存储可以覆盖所有场景,了解下云上开发环境中各种存储使用场景说明,更能提高使用效率。

仅支持挂载同一区域下的OBS并行文件系统(PFS)和OBS对象存储。

表1 云上开发环境中各种存储使用场景说明

存储类型

建议使用场景

优点

缺点

云硬盘EVS

比较适合只在开发环境中做数据、算法探索,性能较好。

块存储SSD,可以理解为一个磁盘,整体IO性能比NFS要好,可以动态扩充,最大可以到4096GB。

云硬盘EVS作为持久化存储挂载在/home/ma-user/work目录下,该目录下的内容在实例停止后会被保留,存储支持在线按需扩容。

缺点是只能在单个开发环境中使用 。

并行文件系统PFS

说明:

并行文件系统PFS为白名单功能,如需使用,请联系华为技术支持开通。

适合直接使用PFS桶作为持久化存储进行AI开发和探索场景。

  1. 数据集的存储。将数据集直接挂载到Notebook进行浏览和数据处理,在训练时直接使用。本地数据上传请参考如何上传文件到OBS?

    或在实例运行后,将承载数据集的OBS并行文件系统动态挂载至Notebook中,详细操作请参考动态挂载OBS并行文件系统

  2. 代码的存储。在Notebook调测完成,可以直接指定对应的对象存储路径作为启动训练的代码路径,方便临时修改。
  3. 训练观测。可以将训练日志等输出路径进行挂载,在Notebook中实时查看和观测,特别是利用TensorBoard,Notebook功能完成对训练输出的分析。

PFS是一种经过优化的高性能对象存储文件系统,存储成本低,吞吐量大,能够快速处理高性能计算(HPC)工作负载。在需要使用对象存储服务场景下,推荐使用PFS挂载。

说明:

建议上传时按照128MB或者64MB打包或者切分,使用时边下载边解压后在本地存储读取,以获取更好的读写与吞吐性能。

缺点是小文件频繁读写性能较差,例如直接作为存储用于模型重型训练,大文件解压等场景慎用。

说明:

PFS挂载需要用户对当前桶授权给ModelArts完整读写权限,Notebook删除后,此权限策略不会被删除。

对象存储服务OBS

说明:

OBS对象存储为白名单功能,如需使用,请联系华为技术支持开通。

在开发环境中做大规模的数据上传下载时,可以通过OBS桶做中转。

存储成本低,吞吐量大,但是小文件读写较弱。建议上传时按照128MB或者64MB打包或者切分,使用时边下载边解压后在本地读取。

对象存储语义,和Posix语义有区别,需要进一步理解。

弹性文件服务SFS

目前只支持在专属资源池中使用;针对探索、实验等非正式生产场景,建议使用这种。开发环境和训练环境可以同时挂载一块SFS存储,省去了每次训练作业下载数据的要求,一般来说重IO读写模型,超过32卡的大规模训练不适合。

实现为NFS,可以在多个开发环境、开发环境和训练之间共享,如果不需要重型分布式训练作业,特别是启动训练作业时,不需要额外再对数据进行下载,这种存储便利性可以作为首选。

缺点性能比EVS云硬盘块存储低。

本地存储

重型训练任务首选

运行所在虚拟机或者裸金属机器上自带的SSD高性能存储,文件读写的吞吐量大,建议对于重型训练任务先将数据准备到对应目录再启动训练。

默认在容器/cache目录下进行挂载,/cache目录可用空间请参考开发环境中不同Notebook规格资源“/cache”目录的大小

缺点是存储生命周期和容器生命周期绑定,每次训练都要下载数据。

如何使用

  1. 在开发环境中如何使用云硬盘EVS块存储?

    例如,在创建Notebook实例时选择云硬盘EVS存储小容量,Notebook运行过程中如果发现存储容量不够,可以扩容,请参考动态扩充云硬盘EVS容量

  2. 在开发环境中如何使用OBS并行文件系统?

    例如,在Notebook中训练时,可直接使用挂载至Notebook容器中的数据集,在运行过程中可以动态挂载OBS并行文件系统