ModelArts训练文件系统详解,带你避开线下代码迁线上的所有坑
1. 我的代码在ModelArts里的路径到底在哪里?
ModelArts的路径分为obs路径和本地路径两部分。obs路径是你的代码上传到云上存储的路径,本地路径是指启动训练容器时,linux系统中的代码路径。
如下截图中,obs路径就是/obs-5e8e/homework/。ModelArts会将“代码目录”这个obs路径下的所有文件都下载到训练容器的/home/work/user-job-dir当中,创建一个/home/work/user-job-dir/homework的路径。所以启动文件在训练容器中的路径就是/home/work/user-job-dir/homework/keras-resnet.py。
由此,如果你选择的“代码目录”是/bucket_name/filename1/filename2/,那么在训练容器中的目录就是/home/work/user-job-dir/filename2
2. 如果我的“启动文件”中,要import“代码目录”里我写的其它文件怎么办?
在开发者当中,python文件需要import自己写的另一个python文件是常规的操作。在线下我们往往可以用相对路径等来import,但是往往这些代码在ModelArts常用框架里边往往会遇到找不到文件的错。那这个问题出在哪里呢?
假设上传到obs中的文件结构为
bucket_name
|- filename1
|- filename2
|- code
|- main.py
|- library
|- custom_lib.py
此时我在UI上填的“代码目录”是/bucket_name/filename1/filename2/,那么训练容器的路径系统就是:
home
|- work
|- user-job-dir
|- filename1
|- filename2
|- code
|- main.py
|- library
|- custom_lib.py
此处我如果想在main.py中import custom_lib.py,用相对路径就很容易报错,那此时该怎么写呢?
我们可以在main.py最开始的地方加入以下代码:
import sys
sys.path.append('/home/work/user-job-dir')
把路径添加上,然后再
import filename2.library.custom_lib
就稳了。
- 点赞
- 收藏
- 关注作者
评论(0)