Загрузите модель Pyspark.ml из S3 с помощью Pipeline

Я пытаюсь сохранить обученную модель в хранилище S3, а затем пытаюсь загрузить и спрогнозировать эту модель с помощью пакета Pipeline из pyspark.ml. Вот пример того, как я сохраняю свою модель.

#stage_1 to stage_4 are some basic trasnformation on data one-hot encoding e.t.c
# define stage 5: logistic regression model                          
 stage_5 = LogisticRegression(featuresCol='features',labelCol='label')

 # SETUP THE PIPELINE
 regression_pipeline = Pipeline(stages= [stage_1, stage_2, stage_3, stage_4, stage_5])

 # fit the pipeline for the trainind data
 model = regression_pipeline.fit(dataFrame1)

 model_path ="s3://s3-dummy_path-orch/dummy models/pipeline_testing_1.model"
 model.save(model_path)

Я могу успешно сохранить модель, и по указанному выше пути к модели создаются две папки.

  1. этапы
  2. метаданные.

Однако, когда я пытаюсь загрузить модель, она дает мне следующую ошибку.

Traceback (most recent call last):
  File "/tmp/pythonScript_85ff2462_e087_4805_9f50_0c75fc4302e2958379757178872310.py", line 75, in <module>
    pipelineModel = Pipeline.load(model_path)
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 362, in load
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py", line 207, in load
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 300, in load
  File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
  File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 79, in deco
pyspark.sql.utils.IllegalArgumentException: 'requirement failed: Error loading metadata: Expected class name org.apache.spark.ml.Pipeline but found class name org.apache.spark.ml.PipelineModel'

Я пытаюсь загрузить модель, как показано ниже:

from pyspark.ml import Pipeline

## same path used while #model.save in the above code snippet
model_path ="s3://s3-dummy_path-orch/dummy models/pipeline_testing_1.model" 

pipelineModel = Pipeline.load(model_path)

Как я могу это исправить?


person Oshin Patwa    schedule 08.02.2021    source источник


Ответы (1)


Если вы сохранили модель конвейера, вы должны загрузить ее как модель конвейера, а не как конвейер. Разница в том, что конвейерная модель подгоняется к фрейму данных, а конвейер — нет.

from pyspark.ml import PipelineModel

pipelineModel = PipelineModel.load(model_path)
person mck    schedule 08.02.2021