Sagemaker 在容器中找不到路径
Sagemaker can't find paths in container
这种情况很难描述。
我有一个 python 模型火车脚本在:
myproject/opt/program/train
这会在 ./opt/ml/input/data/external/train.csv
获取一个文件
当我进行 python3 opt/program/train
训练时 运行 在本地很好。
然后我将项目容器化并在我的 Dockerfile 中将 opt
复制到 /opt
。
现在当我 运行 docker run <image name> train
它也训练得很好。
然后我将图像部署到 SageMaker,创建一个估计器,然后调用 model.fit(my_data)
我得到:
Exception during training: [Errno 2] File b'./opt/ml/input/data/external/train.csv' does not exist
它肯定在那里,我可以通过 运行自己安装容器来进行训练。另外 运行 连接容器并探索文件系统我可以找到该文件。
所以我想我对文件系统有一些误解。从容器的根来看,所有这些似乎都有相同的输出。
root@798ffe7364c6:/# ls opt
ml program
root@798ffe7364c6:/# ls /opt
ml program
root@798ffe7364c6:/# ls ./opt
ml program
我正在尝试想出一种方法,让一条路径可以在本地、容器中和 AWS 上运行。
我错过了 SageMaker 在 S3 中查找您的数据通道并将其复制到位于 /opt/ml/input/data
的容器中的事实
默认情况下,它似乎使用 training
和 validation
作为频道名称。因此,在我上面的示例中,它永远不会将数据从 S3 上的 external
文件夹复制到容器中右侧的 external
文件夹。事实上,我发现它正在将其复制到 /opt/ml/input/data/training/external/train.csv
。
要解决这个问题,我要么必须更改我的文件夹名称,要么使用 InputDataConfig
来定义其他频道。我选择了后者并且能够让它工作。
有关 InputDataConfig
的更多信息,请点击此处:https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html
这种情况很难描述。
我有一个 python 模型火车脚本在:
myproject/opt/program/train
这会在 ./opt/ml/input/data/external/train.csv
当我进行 python3 opt/program/train
训练时 运行 在本地很好。
然后我将项目容器化并在我的 Dockerfile 中将 opt
复制到 /opt
。
现在当我 运行 docker run <image name> train
它也训练得很好。
然后我将图像部署到 SageMaker,创建一个估计器,然后调用 model.fit(my_data)
我得到:
Exception during training: [Errno 2] File b'./opt/ml/input/data/external/train.csv' does not exist
它肯定在那里,我可以通过 运行自己安装容器来进行训练。另外 运行 连接容器并探索文件系统我可以找到该文件。
所以我想我对文件系统有一些误解。从容器的根来看,所有这些似乎都有相同的输出。
root@798ffe7364c6:/# ls opt
ml program
root@798ffe7364c6:/# ls /opt
ml program
root@798ffe7364c6:/# ls ./opt
ml program
我正在尝试想出一种方法,让一条路径可以在本地、容器中和 AWS 上运行。
我错过了 SageMaker 在 S3 中查找您的数据通道并将其复制到位于 /opt/ml/input/data
默认情况下,它似乎使用 training
和 validation
作为频道名称。因此,在我上面的示例中,它永远不会将数据从 S3 上的 external
文件夹复制到容器中右侧的 external
文件夹。事实上,我发现它正在将其复制到 /opt/ml/input/data/training/external/train.csv
。
要解决这个问题,我要么必须更改我的文件夹名称,要么使用 InputDataConfig
来定义其他频道。我选择了后者并且能够让它工作。
有关 InputDataConfig
的更多信息,请点击此处:https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html