Sagemaker 是否在训练和预测步骤之间传递模型本身以外的任何数据?

Does Sagemaker pass any data other than the model itself between training and prediction steps?

我正在 Sagemaker 上构建 Scikit-learn 模型。

我想在 predict_fn 中引用训练中使用的数据。 (而不是 return 来自 NNS 的索引,我想 return 每个邻居的名称和数据。)

我知道这可以通过 S3 中的 writing/reading 来完成,如 https://aws.amazon.com/blogs/machine-learning/associating-prediction-results-with-input-data-using-amazon-sagemaker-batch-transform/ 中那样,但想知道是否有更优雅的解决方案。

是否有其他方法可以使训练作业中使用的数据可用于预测函数?

编辑:使用公认解决方案中的建议,我能够将数据作为字典传递。

model = nn.fit(train_data)

model_dict = {
   "model": model,
   "reference": train_data
}

joblib.dump(model_dict, path)

predict_fn:

def predict_fn(input_data, model_dict):
   model = model_dict["model"]
   reference = model_dict["reference"]

您可以将存储索引和记录名称之间映射的文件带到端点实例(在 model.tar.gz 中或通过稍后下载);通过这种方式,您可以将邻居 ID 转换为动态记录 predict_fnoutput_fn 中的名称。对于巨型索引,此映射(连同其他元数据)也可以在外部数据库中(例如 dynamoDB、redis)

您附加的 link(SageMaker 批量转换)是一个完全不同的概念;它用于将短暂的机器队列实例化为 运行 一次性预测任务,在 S3 中输入数据并将结果写入 s3。您的问题似乎是指替代的、永久的、实时的端点部署模式。