然而使用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資訊的數據模型。

如果你有不平衡數據,嚐試打這樣的抽樣方法,當訓練基於樹的算法。

這篇文章有用嗎?