DSW挂载配置

当您想要扩展DSW实例存储空间、持久化存储数据、共享数据时,可以通过挂载数据集或OSS路径的方式实现,本文为您介绍如何进行DSW挂载配置。

背景信息

公共资源组和专有资源组默认数据存储空间有限,且无法持久化存储,因此,当您需要扩展实例的存储空间或持久化存储数据时,可以创建NAS、OSSCPFS类型的数据集,并将其挂载到DSW指定的路径,以实现在DSW中读写数据集数据。

重要
  • 公共资源组DSW实例,数据存储在空间有限(100GiB)的免费云盘中,在删除实例或停机超过15天后,云盘数据将被清空。

  • 专有资源组DSW实例,数据存储在实例的系统盘中,在停止或删除实例后,临时存储将被清空。

挂载方式分为启动时挂载和动态挂载。

  • 启动时挂载:通过设置实例配置页面的数据集挂载配置参数,完成数据集或OSS路径挂载配置。在配置后需要重启实例才会生效。

  • 动态挂载:在DSW实例中通过PAI SDK进行挂载配置,无需重启实例即可完成挂载。

此外,为提升性能,您还可以通过数据集的Jindo参数,配置挂载模式,适配不同的场景,如:快速读写、增量读写、读写一致、只读。

说明

Jindo是阿里云开源大数据团队自研的数据湖存储加速套件,详细内容可参见JindoData概述

使用限制

  • 多个数据集挂载的路径不能重复。

  • OSS挂载的目录下,不建议进行频繁的写操作。

  • OSS类型的自定义数据集不支持配置挂载模式。

挂载配置

启动时挂载

启动时挂载,通过设置实例配置页面的数据集挂载配置参数,完成数据集或OSS路径挂载配置。在配置后需要重启实例才会生效

挂载数据集

相比于直接挂载OSS路径,挂载数据集具有可以进行版本管理和数据集加速的优点。挂载步骤如下:

  1. 创建数据集

    登录PAI控制台,在AI资产管理>数据集页面创建自定义数据集或者公共数据集。具体操作可参见创建及管理数据集

  2. 挂载数据集

    在新建DSW实例时出现的配置页中(已存在的实例通过单击变更配置打开配置页),找到数据集配置区域。点击添加,然后选择已创建的数据集并填写挂载路径挂载模式默认为空,您可以参考下文的挂载模式,按需配置。

说明

如果您挂载的是自定义数据集,请注意以下事项:

  • 如果配置了CPFS类型的数据集,需要设置网络配置,且选择的专有网络需要与CPFS一致。否则,DSW实例可能会创建失败。

  • 如果配置了NAS类型的数据集,需要设置网络配置,选择安全组。

  • 当资源组选择专有资源组时,因为OSSfuse接口的支持不如NAS完善,DSW限制第一个数据集必须选择NAS类型数据集,并且该数据集会同时挂载到您指定的路径和DSW默认工作目录/home/admin/workspace下。

挂载OSS路径

  1. 创建OSS Bucket

    开通OSS服务创建Bucket

    重要

    Bucket所属地域与PAI的地域一致。Bucket一旦创建,则无法更改其所属地域。

  2. 挂载OSS路径

    在新建DSW实例时出现的配置页中(已存在的实例通过单击变更配置打开配置页),找到挂载配置区域。点击添加,然后选择已创建的OSS Bucket路径并填写挂载路径挂载模式默认为空,您可以参考下文的挂载模式,按需配置。

动态挂载

动态挂载是在DSW实例中基于PAI SDK自行编写代码,完成数据集和OSS路径的挂载,无需重启实例即可完成挂载

准备工作

  1. 安装PAI Python SDK。在打开的DSW实例终端中执行如下命令,安装PAI Python SDK,要求python >= 3.8

    python -m pip install pai>=0.4.11
  2. 配置SDK访问PAI的密钥。

    • 方式一:配置DSW实例为PAI默认角色或自定义RAM角色。打开实例配置页,在页面底部单击展开选择实例RAM角色。具体操作,请参见配置DSW实例RAM角色

    • 方式二:手动通过PAI Python SDK提供的命令行工具完成配置。在终端中执行如下命令配置访问参数。操作示例请参见初始化配置

      python -m pai.toolkit.config

使用示例

通过动态挂载功能,您无需重启配置DSW实例,使用示例如下:

  • 挂载到默认路径

    相应的数据会被挂载到实例内的默认挂载路径下(使用官方预置实例镜像默认路径为/mnt/dynamic/)。

    from pai.dsw import mount
    
    # 挂载oss路径
    mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/") 
    
    # 挂载数据集, 入参为数据集的id
    # mount_point = mount("d-m7rsmu350********") 
  • 挂载到指定路径

    动态挂载功能目前需要将数据挂载到容器内的指定路径(或是相应的子路径下),可以通过SDK提供的API获取动态挂载路径。

    from pai.dsw import mount, default_dynamic_mount_path
    
    # 获取实例的默认挂载路径
    default_path = default_dynamic_mount_path()
    
    mount_point = mount("oss://<YourBucketName>/Path/Data/Directory"
                  , mount_point=default_path + "tmp/output/model")
  • 查看实例内的所有挂载数据配置

    from pai.dsw import list_dataset_configs
    
    print(list_dataset_configs())
  • 卸载挂载数据

    from pai.dsw import mount, unmount
    
    mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/")
    
    # 入参为挂载的路径,即list_dataset_configs查询到的MountPath
    # 执行卸载后需要等待几秒钟才会生效
    unmount(mount_point)

挂载模式

本节提供部分场景的Jindo配置建议,并未覆盖所有场景下的最优性能。更灵活的配置,请参见JindoFuse使用指南

说明

OSS类型的自定义数据集不支持配置挂载模式

  • 快速读写:允许用户读写,读取速度快,但并发读写可能会出现数据不一致的问题,适合挂载训练数据和模型,不适合作为工作目录。

    {
      "fs.oss.download.thread.concurrency": "cpu核数2倍",
      "fs.oss.upload.thread.concurrency": "cpu核数2倍",
      "fs.jindo.args": "-oattr_timeout=3 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink"
    }
    
  • 增量读写:在增量写入时能够保证数据一致性,覆盖原有数据会有一致性问题。读取速度略慢,适合保存训练的模型权重文件。

    {
      "fs.oss.upload.thread.concurrency": "cpu核数2倍",
      "fs.jindo.args": "-oattr_timeout=3 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink"
    }
    
  • 读写一致:在并发读写中能保持数据一致性,适用于对数据一致性要求高,可以容忍读取速度慢的场景,适合保存代码项目。

    {
      "fs.jindo.args": "-oattr_timeout=0 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink"
    }
    
  • 只读:仅允许读取,不允许写入,适合挂载公共数据集。

    {
      "fs.oss.download.thread.concurrency": "cpu核数2倍",
      "fs.jindo.args": "-oro -oattr_timeout=7200 -oentry_timeout=7200 -onegative_timeout=7200 -okernel_cache -ono_symlink"
    }

查看挂载配置

打开DSW实例,在Terminal中,输入如下命令,查看NASOSS类型的数据集是否挂载成功。

# 查看所有挂载
mount
# 查询NAS挂载路径
mount | grep nas
# 查询OSS挂载路径
mount | grep oss

系统输出如下返回结果,说明数据集已成功挂载。挂载路径

  • NAS数据集已挂载到/mnt/data_nas/mnt/workspace/home/admin/workspace目录。其中,/mnt/data_nas为创建DSW实例时指定的挂载路径,后两个路径为配置第一个NAS数据集时,被挂载的DSW的默认工作目录。后续只要您的NAS盘和服务正常运行,数据和代码就可以持久化存储。

  • OSS数据集挂载到DSW/mnt/data_oss目录。