【发布时间】:2020-09-04 12:00:20
【问题描述】:
我们正在使用 AWS Sagemaker 功能,带上你自己的 docker,我们有用 R 编写的推理模型。据我了解,批量转换作业以以下方式运行容器:
docker run image serve
另外,在 docker 上,我们有一个逻辑来确定调用哪个函数:
args <- commandArgs()
if (any(grepl('train', args))) {
train()}
if (any(grepl('serve', args))) {
serve()}
有没有办法覆盖默认容器调用,以便我们可以传递一些额外的参数?
【问题讨论】:
-
为什么不将附加参数作为超参数传递?
-
能否详细说明您的回复。
-
在 docker 容器中,您的代码可以访问 SageMaker 创建的名为 hyperparameter.json (docs.aws.amazon.com/sagemaker/latest/dg/…) 的文件。这包含您在启动训练作业时提供给 SDK 的超参数值。因此,您可以使用该占位符来传递训练时所需的参数
-
你需要使用 entrypoint ,如果我明白你在你的帖子中的确切意思
-
所以,提供有关我们案例的更多信息。我们使用 Lambda 使用 CreateTransformJobRequest 创建批量转换作业。在那里我们指定模型进行推理。这样,我们有几个模型指向 ECR 上的几个不同图像,我们只在创建批量转换作业时提供模型名称。想法是有一个 sagemaker 模型,指向一个图像,它将包含容器中的所有推理模型。然后,以某种方式在运行时选择触发哪一个。最初的想法是检查我们是否可以传递额外的参数。 @OlivierCruchant 我会研究 hyperparameter.json。
标签: amazon-web-services docker amazon-sagemaker