更新时间:2025-09-12 GMT+08:00
分享

启动文件

解释说明

必须为“代码目录”下的文件,且以“.py”结尾,即ModelArts目前只支持使用Python语言编写的启动文件。

代码目录路径中的启动文件为训练启动的入口。

常见问题

启动文件中,如何获取依赖文件所在的路径?

由于用户本地开发的代码需要上传至ModelArts后台,代码中涉及到依赖文件的路径时,用户设置有误的场景较多。

推荐通用的解决方案:使用os接口去获取文件所在的路径,避免报错。

示例:

|---project_root                #代码根目录 
   |---BootfileDirectory        #启动文件所在的目录 
     |---bootfile.py            #启动文件 
   |---otherfileDirectory       #其他依赖文件所在的目录 
     |---otherfile.py           #其他依赖文件 
    

在启动文件中,建议用户参考以下方式获取依赖文件所在路径,即示例中的otherfile_path。

import os 
current_path = os.path.dirname(os.path.realpath(__file__)) # BootfileDirectory, 启动文件所在的目录 
project_root = os.path.dirname(current_path) # 工程的根目录,对应ModelArts训练控制台上设置的代码目录 
otherfile_path = os.path.join(project_root, "otherfileDirectory", "otherfile.py")

启动文件中如何判断文件夹是否复制完毕?

通过如下方式获取复制和被复制文件夹大小,根据结果判断是否复制完毕:

import moxing as mox 
mox.file.get_size('obs://bucket_name/obs_file',recursive=True)

其中,“get_size”为获取文件或文件夹的大小。“recursive=True”表示类型为文件夹,“True”表示是文件夹,“False”为文件。

如果输出结果为一致,表示文件夹复制已完毕。如果输出结果不一致,表示复制未结束。

更多Moxing的操作请参考Moxing手册

启动文件中如何调用shell脚本?

ModelArts支持调用shell脚本,您可以将shell脚本存储至代码目录所在的OBS路径下。

例如代码目录为“ /bucket-name/code/”,启动文件路径为“/bucket-name/code/test.py”,shell脚本路径为“ /bucket-name/code/test.sh”

由于后台会自动将代码目录下载至容器的“/home/work/user-job-dir/”目录下,因此您可以在启动文件中通过如下方式调用shell脚本:

import os 
os.system('bash /home/work/user-job-dir/code/test.sh')

相关文档