启动文件
解释说明
必须为“代码目录”下的文件,且以“.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')