Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在pyspark-lambda映射函数中使用keras模型_Apache Spark_Tensorflow_Pyspark_Keras - Fatal编程技术网

Apache spark 在pyspark-lambda映射函数中使用keras模型

Apache spark 在pyspark-lambda映射函数中使用keras模型,apache-spark,tensorflow,pyspark,keras,Apache Spark,Tensorflow,Pyspark,Keras,我想用这个模型来预测PySpark中map lambda函数的分数 def推断(用户嵌入,项目嵌入): 专长=用户嵌入+项目嵌入 dnn_模型=负荷_模型(“最佳_模型.h5”) expert=dnn_model.predict(np.array([feats]),verbose=0,steps=1) 返回推断 iu_分数=iu.map(lambda x:Row(userid=x.userid,entryid=x.entryid,分数=推断(x.user_嵌入,x.item_嵌入))) 运行速

我想用这个模型来预测PySpark中map lambda函数的分数

def推断(用户嵌入,项目嵌入):
专长=用户嵌入+项目嵌入
dnn_模型=负荷_模型(“最佳_模型.h5”)
expert=dnn_model.predict(np.array([feats]),verbose=0,steps=1)
返回推断
iu_分数=iu.map(lambda x:Row(userid=x.userid,entryid=x.entryid,分数=推断(x.user_嵌入,x.item_嵌入)))
运行速度非常慢,在代码开始运行后,它很快就停留在最后阶段

[Stage 119:==================================================>(4048 + 2) / 4050]
在HTOP监视器中,80个核心中只有2个处于全工作负载,其他核心似乎不工作。 那么,我应该怎么做才能使模型并行预测呢?国际单位是3亿,所以效率对我来说很重要。 谢谢


我将verbose=1,并显示预测日志,但似乎预测只是一个接一个,而不是并行预测。

在回答过程中,我进行了一些研究,发现这个问题很有趣。 首先,如果效率真的很重要,那就花点时间在不使用Keres的情况下重新编码整个过程。您仍然可以使用tensorflow(模型)的高级API,只需稍加努力即可提取参数并将其分配给新模型。尽管在wrappers框架中的所有大规模实现(TensorFlow是否不是一个足够丰富的框架?)。真的不推荐生产

话虽如此,您能否检查到底是什么问题,例如,您是否使用GPU?也许他们超载了?你能把整个事情包装成不超过某个容量,并使用优先级系统吗?如果没有优先级,可以使用简单队列。您还可以检查是否真的终止了tensorflow的会话,或者同一台机器运行的许多模型会干扰其他模型。有很多问题可能是造成这种现象的原因,如果能有更多的细节就好了

关于并行计算,您没有实现任何真正为这个模型打开线程或进程的东西,所以我怀疑pyspark不能自己处理整个事情。也许实现(老实说,我没有阅读完整的pyspark文档)是假设分派的函数运行速度足够快,并且没有按应有的方式分发。PySpark只是map-reduce原则的一个复杂实现。分派的函数在单个步骤中扮演映射函数的角色,这对于您的情况可能会有问题。尽管它是作为lambda表达式传递的,但是您应该更仔细地检查哪些实例速度慢,以及它们在哪些机器上运行

我强烈建议您执行以下操作:
转到并阅读如何真正部署模型。有一个与部署的模型通信的协议,称为RPC,还有一个restful API。然后,使用pyspark,您可以包装调用并与服务模型连接。您可以创建一个包含所需模型数量的池,在pyspark中管理它,通过网络分发计算,从这里开始,天空和CPU/GPU/TPU就是极限(我仍然对天空持怀疑态度)

如果能从你那里得到关于结果的最新消息,那就太好了:)你让我很好奇


我希望您在这个问题上取得最好的成绩,这是一个很好的问题。

看起来您的数据有偏差。如果看不到代码的其余部分(特别是创建
iu
所采取的步骤),就无法说出原因。