【发布时间】:2016-09-02 15:47:58
【问题描述】:
最近我计划将我的独立 python ML 代码迁移到 spark。 spark.ml 中的 ML 管道非常方便,具有用于链接算法阶段和超参数网格搜索的简化 API。
不过,我发现它对现有文档中的一项重要功能的支持并不明显:缓存中间结果。当流水线涉及计算密集阶段时,此功能的重要性就显现出来了。
例如,在我的例子中,我使用一个巨大的稀疏矩阵对时间序列数据执行多个移动平均值,以形成输入特征。矩阵的结构由一些超参数决定。这一步结果成为整个管道的瓶颈,因为我必须在运行时构造矩阵。
在参数搜索过程中,除了这个“结构参数”之外,我通常还有其他参数要检查。因此,如果我可以在“结构参数”不变的情况下重用巨大的矩阵,我可以节省大量时间。出于这个原因,我特意编写了代码来缓存和重用这些中间结果。
所以我的问题是:Spark 的 ML 管道能否自动处理中间缓存?还是我必须手动形成代码才能这样做?如果是这样,是否有任何最佳实践可供学习?
附:我查看了官方文档和其他一些材料,但似乎都没有讨论这个话题。
【问题讨论】:
标签: apache-spark apache-spark-ml