使用 AWS 步骤函数为整个数据集运行 ML 管道?

问题描述

我有一个步进函数设置,它为数据项调用预处理 lambda 和推理 lambda。现在,我需要对整个数据集(超过 10000 个项目)执行此过程。一种方法是为每个输入并行调用阶跃函数。这种方法有更好的替代方法吗?

解决方法

另一种方法是使用 Map 状态来运行一组项目。您可以从项目 ID 列表开始,然后为其运行一组任务。

https://aws.amazon.com/blogs/aws/new-step-functions-support-for-dynamic-parallelism/

尽管这种方法有一些缺点:

  1. 输入/输出数据有 256kb 的限制。最初的项目数组可能更大。但是,如果您仅将一组 ID 作为输入传递给映射状态,则 10k 项可能不会超过该限制。

  2. 地图状态并不能保证所有的项目会同时运行。一次可能少于 40 个(解决方法是嵌套地图状态或地图状态的地图)。来自文档:

并发迭代可能会受到限制。发生这种情况时,某些迭代将在之前的迭代完成之前不会开始。当您的输入数组超过 40 个项目时,发生这种情况的可能性会增加。

https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-map-state.html