Sagemaker 批处理作业

0

【以下的问题经过翻译处理】 我有一个ML模型对大规模数据集进行预测。这个模型是一个PyTorch文本分类器,它负责预测数万条记录的定价。这些预测任务随机到达,且非常不频繁。

我创建了一个标准的Sagemaker终端节点,当我进行客户端侧批处理推理时性能是可以接受的,代码如下:

outputs = []
for batch in create_minibatch(inputs, batch_size=128):
    predictions = predictor.predict(batch)
    outputs.extend(predictions)

使用单个实例,这需要大约1分钟才能处理25k个记录。

我考虑使用SageMaker Batch Transform模式,但创建作业需要大约4-6分钟,所以由于启动成本,似乎失去了扩展到多个实例的好处。是否可以在Sagemaker Batch Transform中使用持久的终端节点?

另一种选择是使用客户端批处理(使用上述代码)-但如果我创建多个实例,我能确定每个批次返回的顺序和我的请求顺序一致吗?在上面的示例中,我需要压缩输入和输出。

是否有更好的方法来处理这个工作负载-我感觉这个方法可能介于API和Batch模式之间?

profile picture
EXPERTE
gefragt vor 8 Monaten60 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 你好,

请参考我的回答。

问题:是否可以在使用持续的终端节点时使用Sagemaker批处理?

答:目前SageMaker没有这个选项。

问题:另一种选择是使用客户端批处理(使用上述代码)-但如果我创建多个实例,我能确定每个批次返回的顺序和我的请求顺序一致吗?在上面的示例中,我需要压缩输入和输出。

答:当您将每个批发送到终端节点时,请求是同步的,您的应用程序将立即等待获取响应。响应将按您发送的顺序返回。因此,维护顺序是如何管理您的请求的问题。无论您在终端节点中使用多少个实例。

问题:是否有更好的方法来处理这个工作负载-我感觉这个方法可能介于API和Batch模式之间?

答:这里有两个主要问题:

  1. 成本
  2. 时间

根据您的业务需求和上述两个因素之间的重要性,或者您是否需要在两者之间找到平衡,SageMaker具有下列推理选项可能对您的情况有用:

  1. 实时推理:在此处,您为终端节点预留资源,并保持运行状态,因此当您需要进行预测时,您可以立即使用它而无需等待。成本基于终端节点处于"InService"状态的时间以及实例的数量和类型(请参见定价页面)。
  2. 批量推理:在这里,您发送了大量的记录,您想要获得预测结果。首先需要预配置资源,这可能需要几分钟时间,然后才会进行实际的预测。费用将根据预测所需的时间进行计算。

从理论上讲,在选项1和选项2中,预测所需的时间应该非常接近。然而,在方案1中,您预先配置了终端节点,因此在调用时会感觉更快,因为您的实例已经提前准备好了。但这也伴随着额外的费用。

如果这个选项适合您,您可以在开始预测之前预先配置终端节点,并在预测结束后将其删除。这样您就可以兼顾两种方式的优势。

然而,目前并没有资源是持久性的选项,您可以随时开始预测。这是因为涉及到费用和运营考虑的问题。

profile picture
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen