我可以将参数传递给 SageMaker 估计器的入口点吗?
Posted
技术标签:
【中文标题】我可以将参数传递给 SageMaker 估计器的入口点吗?【英文标题】:Can I pass arguments to the entrypoint of a SageMaker estimator? 【发布时间】:2019-09-21 17:09:25 【问题描述】:我正在使用SageMaker python sdk 并希望传递一些参数以供我的入口点使用,但我不知道该怎么做。
from sagemaker.sklearn.estimator import SKLearn # sagemaker python sdk
entrypoint = 'entrypoint_script.py'
sklearn = SKLearn(entry_point=entrypoint, # <-- need to pass args to this
train_instance_type=instance_class,
role=role,
sagemaker_session=sm)
【问题讨论】:
【参考方案1】:答案是否定的,因为 Estimator 基类或 fit 方法上没有参数可以接受要传递给入口点的参数。
我通过将参数作为超参数字典的一部分传递来解决这个问题。这将作为参数传递给入口点。
【讨论】:
请注意:我有大约 30 个参数需要调整,我将超参数作为 YAML 格式的字符串传递。尽管 SageMaker 的超参数最大长度为 256(未记录)。所以现在我将不得不编辑我的 Dockerfile 以接受大约 30 个参数,每个参数都有最小值和最大值的子选项。 Sagemaker 不适合心脏衰竭或喜欢适当文档的人。 此处记录了 256 个字符的限制docs.aws.amazon.com/sagemaker/latest/APIReference/… 我确认使用超参数字典可以完成这项工作......但是这是否记录在任何地方?【参考方案2】:此处的 entry_point 参数用于包含您要运行训练和预测的代码的脚本文件。
您可以参考example here
上面示例使用的 entry_point 脚本是here
【讨论】:
以上是关于我可以将参数传递给 SageMaker 估计器的入口点吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个估计器对象传递给 sklearn 的 GridSearchCV,以便它们在每个步骤中具有相同的参数?