我正在尝试使用docker构建并将自定义ML模型推送到Amazon SageMaker。我知道事情应该遵循opt / ml的一般结构。但是Amazon S3中没有这样的存储桶???在构建映像并将其推送到AWS之前,是否应该在容器中创建此目录?我只是不知道将训练数据等放在哪里。
答案 0 :(得分:0)
SageMaker正在使用channel-> local-folder约定自动使用代码自动部署Docker映像。您在input data configuration中用通道定义的所有内容都将被复制到本地Docker文件系统的 / opt / ml / 文件夹下,并使用通道名称作为子文件夹。
{
"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
答案 1 :(得分:0)
在AWS SageMaker上创建自定义模型时,可以将带有推理代码的docker容器存储在ECR上,同时将模型工件保留在S3上。然后,您可以在创建模型时指定到上述工件的S3路径(例如,使用Boto3的create_model时)。这样可以简化您的解决方案,因此您不必每次都需要更改工件时就重新上传docker容器(尽管您需要在SageMaker上重新创建模型)。
您的数据集也是如此。 SageMakers的Batch Transform函数允许您将存储在S3上的任何数据集直接馈入模型中,而无需将其保留在docker容器中。如果您想在许多不同的数据集上运行模型而无需重新上传图像,那么这真的很有帮助。