我在哪里存储模型的训练数据、工件等?

Where do I store my model's training data, artifacts, etc?

我正在尝试使用 docker 构建自定义 ML 模型并将其推送到 Amazon SageMaker。我知道事情应该遵循 opt/ml 中的一般结构。但是 Amazon S3 中没有这样的存储桶???在构建映像并将其推送到 AWS 之前,我是否应该在我的容器中创建此目录?我只是不知道把我的训练数据放在哪里

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 容器中。如果您想在许多不同的数据集上 运行 您的模型而不需要重新上传图像,这真的很有帮助。