【发布时间】:2019-08-14 07:32:51
【问题描述】:
我正在尝试使用 docker 构建自定义 ML 模型并将其推送到 Amazon SageMaker。我知道事情应该遵循 opt/ml 中的一般结构。但是 Amazon S3 中没有这样的存储桶???在构建映像并将其推送到 AWS 之前,我是否应该在容器中创建此目录?我只是不知道将我的训练数据等放在哪里。
【问题讨论】:
标签: amazon-sagemaker
我正在尝试使用 docker 构建自定义 ML 模型并将其推送到 Amazon SageMaker。我知道事情应该遵循 opt/ml 中的一般结构。但是 Amazon S3 中没有这样的存储桶???在构建映像并将其推送到 AWS 之前,我是否应该在容器中创建此目录?我只是不知道将我的训练数据等放在哪里。
【问题讨论】:
标签: amazon-sagemaker
SageMaker 使用通道->本地文件夹的约定使用您的代码自动部署 Docker 映像。您在input data configuration 中使用通道定义的所有内容都将复制到 /opt/ml/ 文件夹下的本地 Docker 文件系统,使用通道名称作为子名称文件夹。
{
"train" : {"ContentType": "trainingContentType",
"TrainingInputMode": "File",
"S3DistributionType": "FullyReplicated",
"RecordWrapperType": "None"},
"evaluation" : {"ContentType": "evalContentType",
"TrainingInputMode": "File",
"S3DistributionType": "FullyReplicated",
"RecordWrapperType": "None"},
"validation" : {"TrainingInputMode": "File",
"S3DistributionType": "FullyReplicated",
"RecordWrapperType": "None"}
}
到:
/opt/ml/input/data/training
/opt/ml/input/data/validation
/opt/ml/input/data/testing
【讨论】:
在 AWS SageMaker 上创建自定义模型时,您可以将带有推理代码的 docker 容器存储在 ECR 上,同时将模型工件仅保留在 S3 上。然后,您可以在创建模型时指定所述工件的 S3 路径(例如,使用 Boto3 的 create_model 时)。这可能会简化您的解决方案,因此您不必每次可能需要更改工件时都重新上传 docker 容器(尽管您需要在 SageMaker 上重新创建模型)。
您的数据集也是如此。 SageMakers 的Batch Transform 函数允许您将存储在 S3 上的任何数据集直接馈送到模型中,而无需将它们保存在 docker 容器中。如果您想在许多不同的数据集上运行模型而不需要重新上传图像,这真的很有帮助。
【讨论】: