更新时间:2024-10-24 GMT+08:00

MoXing Framework功能介绍

MoXing Framework模块为MoXing提供基础公共组件,例如访问华为云的OBS服务,和具体的AI引擎解耦,在ModelArts支持的所有AI引擎(TensorFlow、MXNet、PyTorch、MindSpore等)下均可以使用。目前,提供的MoXing Framework功能中主要包含操作OBS组件,即下文中描述的mox.file接口。

Moxing主要使用场景为提升从OBS读取和下载数据的易用性,适配对象为OBS对象桶,对于OBS并行文件系统部分接口可能存在问题,不建议使用。生产业务代码开发建议直接调用OBS Python SDK,详情请参见Python SDK接口概览

为什么要用mox.file

使用Python打开一个本地文件,如下所示:

1
2
with open('/tmp/a.txt', 'r') as f:
  print(f.read())

OBS目录以“obs://”开头,比如“obs://bucket/XXX.txt”。用户无法直接使用open方法打开OBS文件,上面描述的打开本地文件的代码将会报错。

OBS提供了很多方式和工具给用户使用,如SDK、API、console、OBS Browser等,ModelArts mox.file提供了一套更为方便的访问OBS的API,允许用户通过一系列模仿操作本地文件系统的API来操作OBS文件。例如,可以使用以下代码来打开一个OBS上的文件。

1
2
3
import moxing as mox
with mox.file.File('obs://bucket_name/a.txt', 'r') as f:
  print(f.read())

例如,列举一个本地路径会使用如下Python代码。

1
2
import os
os.listdir('/tmp/my_dir/')

如果要列举一个OBS路径,mox.file则需要如下代码:

1
2
import moxing as mox
mox.file.list_directory('obs://bucket_name/my_dir/')

引入MoXing Framework模块

使用MoXing Framework前,您需要在代码的开头先引入MoXing Framework模块。

执行如下代码,引入MoXing模块。

1
import moxing as mox

引入MoXing Framework的相关说明

在引入MoXing模块后,Python的标准logging模块会被设置为INFO级别,并打印版本号信息。可以通过以下API重新设置logging的等级。

1
2
3
4
import logging

from moxing.framework.util import runtime
runtime.reset_logger(level=logging.WARNING)

可以在引入moxing之前,配置环境变量MOX_SILENT_MODE=1,来防止MoXing打印版本号。使用如下Python代码来配置环境变量,需要在import moxing之前就将环境变量配置好。

1
2
3
import os
os.environ['MOX_SILENT_MODE'] = '1'
import moxing as mox

引入moxing framework的数据下载加速特性的相关说明

在使用基于ModelArts预置镜像的训练作业时,可以引入moxing framework的数据下载加速特性。加速特性适用场景为:文件数在100w~1000w的场景、单个大文件及文件大小大于20GB的场景。

  1. 登录ModelArts管理控制台,在左侧菜单栏中选择“模型训练 > 训练作业”,进入训练作业管理页面。
  2. 单击右上角“创建训练作业”进入创建训练作业页面,在“环境变量”中设置“MA_MOXING_FWVER=2.2.8.0aa484aa”以安装最新moxing framework版本,其他参数填写请参见创建训练作业。 配置完成后,可以在训练作业脚本中使用“moxing.file.copy_parallel”接口加速数据下载。
  3. 需要时可以通过在训练作业的“环境变量”中设置“MOX_C_ACCELERATE=0”,来关闭数据下载加速特性。