ModelArts Notebook新功能-动态挂载OBS
【摘要】 新上线功能, 在运行中的Notebook上直接挂载OBS目录、 挂载后, 可以像本地文件系统的方式操作桶中对象。
一 何为动态挂载OBS?
在运行态notebook容器中, 采用动态挂载特性, 将OBS对象存储模拟成文件系统。 其本质是通过挂载工具,将对象协议转为为POSIX文件协议。挂载后应用层可以在容器中正常操作OBS对象。
二 有何限制?
华为云OBS提供两种桶,对象存储(对象桶)和并行文件系统(POSIX桶)。MA Notebook皆支持挂载至容器/data/目录下。
OBS对象桶因无法支持完整的POSIX语义, 挂载后不适合频繁的读写,否则IO放大,使用体验会变差;
OBS并行文件系统支持完成POSIX语义,挂载体检较对象桶更佳。
三 哪些使用场景?
场景1. EFS和OBS之间的数据迁移,创建EFS类Notebook, 再挂载OBS, 二者数据互通实现数据迁移;
场景2. 数据集预览和操作, 将承载数据集的OBS挂载至Notebook中, 可直接CRUD;
场景3:Notebook训练时,可直接使用挂载至Notebook容器的数据集.
这里建议若为并行文件系统,程序可直接读写挂载的文件; 若为对象桶, 建议先拷贝至容器其它目录下,再读写。
四 怎么用?
前置条件: 打开ModelArts -> 开发环境 ->Notebook ->前往新版->创建一个Notebook->运行后打开Notebook
执行以下代码:
import os
from json import JSONEncoder
from modelarts.config.auth import auth_by_apig
from modelarts.session import Session
session = Session()
request_url = "/v1/{}/notebooks/{}/storage".format(os.environ['PROJECT_ID'], os.environ["INSTANCE_ID"])
# 查询动态挂载列表
auth_by_apig(session, 'GET', request_url)
# 动态挂载
body = {
"category": "OBS",
"uri": "obs://obs-mls-train/", # 输入OBS文件夹完整路径
"mount_path": "/data/temp/" # 输入要挂载的容器本地目录,以/data/目录开始
}
auth_by_apig(session, 'POST', request_url, body=JSONEncoder().encode(body))
# 动态卸载 其中"ea217c4f-3282-4af2-98ea-d3c668d2fba9"为动态挂载ID
auth_by_apig(session, 'DELETE', request_url + "/ea217c4f-3282-4af2-98ea-d3c668d2fba9")
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)