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_fn
或 output_fn
中的名称。对于巨型索引,此映射(连同其他元数据)也可以在外部数据库中(例如 dynamoDB、redis)
您附加的 link(SageMaker 批量转换)是一个完全不同的概念;它用于将短暂的机器队列实例化为 运行 一次性预测任务,在 S3 中输入数据并将结果写入 s3。您的问题似乎是指替代的、永久的、实时的端点部署模式。
我正在 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_fn
或 output_fn
中的名称。对于巨型索引,此映射(连同其他元数据)也可以在外部数据库中(例如 dynamoDB、redis)
您附加的 link(SageMaker 批量转换)是一个完全不同的概念;它用于将短暂的机器队列实例化为 运行 一次性预测任务,在 S3 中输入数据并将结果写入 s3。您的问题似乎是指替代的、永久的、实时的端点部署模式。