gpt4 book ai didi

apache-spark - 使用经过训练的 Spark ML 模型提供实时预测

转载 作者:行者123 更新时间:2023-12-04 15:40:05 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to serve a Spark MLlib model?

(4 个回答)


4年前关闭。




我们目前正在测试基于 Spark 在 Python 中实现 LDA 的预测引擎:
https://spark.apache.org/docs/2.2.0/ml-clustering.html#latent-dirichlet-allocation-lda
https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html#pyspark.ml.clustering.LDA
(我们使用的是 pyspark.ml 包,而不是 pyspark.mllib)

我们能够成功地在 Spark 集群上训练模型(使用 Google Cloud Dataproc)。现在我们正在尝试使用该模型作为 API(例如flask 应用程序)提供实时预测。

实现这一目标的最佳方法是什么?

我们的主要痛点是我们似乎需要恢复整个 Spark 环境才能加载训练好的模型并运行转换。
到目前为止,我们已经尝试为每个收到的请求在本地模式下运行 Spark,但这种方法给了我们:

  • 性能不佳(需要启动 SparkSession、加载模型、运行转换...)
  • 可扩展性差(无法处理并发请求)

  • 整个方法似乎很重,是否有更简单的替代方法,或者甚至根本不需要暗示 Spark 的替代方法?

    下面是训练和预测步骤的简化代码。

    训练代码

    def train(input_dataset):   
    conf = pyspark.SparkConf().setAppName("lda-train")
    spark = SparkSession.builder.config(conf=conf).getOrCreate()

    # Generate count vectors
    count_vectorizer = CountVectorizer(...)
    vectorizer_model = count_vectorizer.fit(input_dataset)
    vectorized_dataset = vectorizer_model.transform(input_dataset)

    # Instantiate LDA model
    lda = LDA(k=100, maxIter=100, optimizer="em", ...)

    # Train LDA model
    lda_model = lda.fit(vectorized_dataset)

    # Save models to external storage
    vectorizer_model.write().overwrite().save("gs://...")
    lda_model.write().overwrite().save("gs://...")

    预测码

    def predict(input_query):
    conf = pyspark.SparkConf().setAppName("lda-predict").setMaster("local")
    spark = SparkSession.builder.config(conf=conf).getOrCreate()

    # Load models from external storage
    vectorizer_model = CountVectorizerModel.load("gs://...")
    lda_model = DistributedLDAModel.load("gs://...")

    # Run prediction on the input data using the loaded models
    vectorized_query = vectorizer_model.transform(input_query)
    transformed_query = lda_model.transform(vectorized_query)

    ...

    spark.stop()

    return transformed_query

    最佳答案

    如果您已经在 spark 中拥有经过训练的机器学习模型,您可以使用 Hydroshpere Mist 使用 rest api 为模型提供服务(测试或预测) 没有 创建 Spark Context .这将使您免于重新创建 spark 环境并且仅依赖 web services用于预测

    引用:

  • https://github.com/Hydrospheredata/mist
  • https://github.com/Hydrospheredata/spark-ml-serving
  • https://github.com/Hydrospheredata/hydro-serving
  • 关于apache-spark - 使用经过训练的 Spark ML 模型提供实时预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263484/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com