2 回答
TA贡献1777条经验 获得超3个赞
2. Use a bash script to copy the packages from s3 using the CLI. The bash script I used is based off this post. But the packages never get copied, and an error message is not thrown.
这种方法似乎很合理。
您最好覆盖tocommand
上的字段,运行 bash 脚本,就像安装包含 python 依赖项的wheel,然后运行主 python 入口点脚本。SKLearnProcessor
/bin/bash
install_and_run_my_python_code.sh
此外,您可以使用ProcessingInput来下载代码,而不是使用AWS S3调用来下载脚本中的代码,而不是使用bash脚本中的AWS CLI调用来下载代码,这就是SKLearnProcessor
下载入口点script.py
代码的方法。所有实例。
TA贡献1818条经验 获得超8个赞
还有其他一些选择。这是我能想到的所有选项(有些已经提到了)
使用
sagemaker.processing.*Processor.run(code=<bash script>)
bash 脚本从存储库中提取:提交到 Codecommit/Github/Bitbucket 存储库,并使用您的运行 bash 脚本通过从同一存储库克隆来进行设置Hijack
ProcessingInput
:指向ProcessingInput
本地目录,或者通过将文件上传到 S3 并指向ProcessingInput
同一个 S3 来进行预先设置。将您的库打包并推送到本地存储库(Nexus、EC2、CodArtifact,支持此),然后像任何带有 bash 运行文件的 python 包一样安装它们。
劫持
sagemaker.sklearn.estimator
并用于source_dir
指定您的整个源目录从包中编译一个轮子并推送到容器并
ProcessingInput
安装。
这些都不是很好。我没有做1,因为我不想每次都推送最新的代码来测试,不想构建一个包(3)或编译一个轮子(5),并使用估计器来运行处理作业似乎是错误的。使用 2,在我的情况下,有必要将单个文件放在正确的位置(ProcessingInput
不支持单个文件,并且我在更高的目录中有 pyproject.toml),因此运行该作业的作业脚本通过订购进行预先设置并将文件上传到 S3,我在ProcessingInput
.
添加回答
举报