Flink 如何解决运行sklearn2PMML时内存不足的问题

92dk7w1h  于 2022-12-09  发布在  Apache
关注(0)|答案(1)|浏览(224)

我正在尝试将我用python编写的SVM分类器模型打包为PMML,以便在Flink项目中使用。
参考:https://github.com/aedenj/flink-machine-learning-fish-market-example/blob/main/model/model.ipynb
该模型运行良好,并返回预期结果,如下所示(不确定是否有重复输出,但这不是这里的问题)。

当我尝试将其打包为PMML文件时,出现“请求的数组大小超出VM限制”错误。

谁能告诉我这里发生了什么事?
另外,我想知道这是否与未设置活动字段有关。训练数据是一个One-hot编码的矢量表示。

nxowjjhe

nxowjjhe1#

sklearn2pmml.sklearn2pmml实用函数通过Python的subprocess.Popen调用Java可执行文件。如果默认的Java启动配置在内存方面太“小”,那么你可以通过指定-Xms和/或-Xmx Java可执行文件选项来增加它的大小。
有两种方法:

  • 将所需的配置导出到JAVA_OPTS环境变量中。
  • 从SkLearn 2PMML 0.86.2开始,sklearn2pmml.sklearn2pmml实用函数支持java_homejava_opts参数。

样品使用:

pipeline = PMMLPipeline(..)
sklearn2pmml(pipeline, "pipeline.pmml", java_opts = ["-Xms2G", "-Xmx8G"])

无论如何,在当前情况下,请将此OutOfMemoryError作为您拟合的模型对象出现问题的警告信号。在模型外部执行OHE,然后尝试将0.5M输入特征值馈送到(PMML-)模型是没有意义的。

相关问题