首页 > 解决方案 > 子目录中的 AWS SageMaker SKLearn 入口点?

问题描述

我可以将 SageMaker 估算器的入口点脚本指定在子目录中吗?到目前为止,它对我来说失败了。这是我想做的事情:

sklearn = SKLearn(
    entry_point="RandomForest/my_script.py",
    source_dir="../",
    hyperparameters={...

我想这样做,所以我不必破坏我的目录结构。我有一些模块,我在几个 sagemaker 项目中使用它们,每个项目都位于自己的目录中:

my_git_repo/

  RandomForest/
    my_script.py
    my_sagemaker_notebook.ipynb

  TensorFlow/
    my_script.py
    my_other_sagemaker_notebook.ipynb

module_imported_in_both_scripts.py

如果我尝试运行它,SageMaker 会失败,因为它似乎解析入口点脚本的名称以从中生成模块名称,并且它做得不好:

/usr/bin/python3 -m RandomForest/my_script --bootstrap True --case nf_2 --max_features 0.5 --min_impurity_decrease 5.323785009485933e-06 --model_name model --n_estimators 455 --oob_score True

...

/usr/bin/python3: No module named RandomForest/my_script

my_script.py除了放入之外,任何人都知道解决这个问题的方法source_dir吗?

与这个问题有关

标签: pythonscikit-learnamazon-sagemaker

解决方案


不幸的是,这是功能上的差距。https://github.com/aws/sagemaker-python-sdk/pull/941中有一些相关的工作也应该可以解决这个问题,但是现在,你需要把my_script.py.source_dir


推荐阅读