然而使用pyfunc返回ModuleNotFoundError或FileNotFoundError模型

预测资讯模型返回一个使用pyfunc ModuleNotFoundError或FileNotFoundError。

写的pradeepkumar.palaniswamy

去年发表在:2022年5月16日

问题

您已经创建了一个Sklearn模型使用KNeighborsClassifier和使用pyfunc运行一个预测。

例如:

python导入mlflow %。pyfuncpyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri, result_type='string') predicted_df = merge.withColumn("prediction", pyfunc_udf(*merge.columns[1:])) predicted_df.collect()

预测返回一个ModuleNotFoundError:没有模块命名“sklearn.neighbors._classification”错误消息。

预测也可能返回FileNotFoundError: [Errno 2]没有可用的临时目录中找到错误消息。

导致

登录资讯模型时,所有的数据点保存泡菜的一部分用于培训文件。

如果模型是训练有素的数以百万计的记录,所有的数据添加到模型中,可以大大增加其大小。模型训练总多个GBs数百万条记录很容易。

pyfunc试图将整个模型加载到执行程序运行预测时的缓存。

如果模型适合内存太大了,它的结果在一个上面的错误消息。

解决方案

您应该使用一个基于树的算法,如随机森林或XGBoost downsample资讯的数据模型。

如果你有不平衡数据,尝试打这样的抽样方法,当训练基于树的算法。

这篇文章有用吗?