小编zax*_*liu的帖子

在Spark ML管道中缓存中间结果

最近我打算将我的独立python ML代码迁移到spark.ML管道spark.ml非常方便,使用简化的API来链接算法阶段和超参数网格搜索.

尽管如此,我发现它支持现有文档中的一个重要特征:缓存中间结果.当管道涉及计算密集阶段时,会出现此功能的重要性.

例如,在我的情况下,我使用一个巨大的稀疏矩阵来对时间序列数据执行多个移动平均,以便形成输入要素.矩阵的结构由一些超参数确定.这一步结果是整个管道的瓶颈,因为我必须在运行时构造矩阵.

在参数搜索期间,我通常还有其他参数来检查除"结构参数"之外的其他参数.因此,如果我可以在"结构参数"不变的情况下重复使用巨大的矩阵,那么我可以节省大量的时间.出于这个原因,我故意形成了我的代码来缓存和重用这些中间结果.

所以我的问题是:Spark的ML管道可以自动处理中间缓存吗?或者我是否必须手动编写代码才能这样做?如果是这样,有什么最佳实践可供学习吗?

PS我已经查看了官方文档和其他一些材料,但似乎没有人讨论这个主题.

apache-spark apache-spark-ml

12
推荐指数
1
解决办法
1111
查看次数

multiprocessing.Pipe比multiprocessing.Queue更慢?

我试图基准的加速PipeQueuemultiprocessing包.T认为内部使用Pipe会更快.QueuePipe

奇怪的Pipe是,比Queue发送大型numpy数组要慢.我在这里错过了什么?

管:

import sys
import time
from multiprocessing import Process, Pipe
import numpy as np

NUM = 1000


def worker(conn):
    for task_nbr in range(NUM):
        conn.send(np.random.rand(400, 400, 3))
    sys.exit(1)


def main():
    parent_conn, child_conn = Pipe(duplex=False)
    Process(target=worker, args=(child_conn,)).start()
    for num in range(NUM):
        message = parent_conn.recv()


if __name__ == "__main__":
    start_time = time.time()
    main()
    end_time = time.time()
    duration = end_time - start_time
    msg_per_sec = NUM / duration

    print …
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
2
解决办法
1644
查看次数

在iPythonNotebook中中断Flask应用程序会导致ZMQerror

我正试图flask在这样的iPython笔记本中运行一个最简单的应用程序演示.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():.
    return 'Hello World!'

if __name__ == '__main__':
    app.run(d)
Run Code Online (Sandbox Code Playgroud)

我第一次运行它,一切都很好.然后我打断了牢房app.run().但是下次我运行时,笔记本会抛出一些错误信息:

An exception has occurred, use %tb to see the full traceback.

SystemExit: 1
Run Code Online (Sandbox Code Playgroud)

然后我%tb编辑并得到以下回溯:

SystemExit                                Traceback (most recent call last)
<ipython-input-7-a59dfe133898> in <module>()
----> 1 myapp.run(debug=True)

C:\Users\Lewis\AppData\Local\Enthought\Canopy\User\lib\site-packages\flask\app.pyc in run(self, host, port, debug, **options)
    770         options.setdefault('use_debugger', self.debug)
    771         try:
--> 772             run_simple(host, port, self, **options)
    773         finally:
    774             # reset the first request …
Run Code Online (Sandbox Code Playgroud)

zeromq flask pyzmq ipython-notebook

5
推荐指数
1
解决办法
2140
查看次数

缓慢的CSR矩阵构建

我正在使用该csr_matrix((data, indices, indptr), shape=[row, col])方法创建一个 csr 矩阵。执行构建方法所花费的时间csr_matrix()比构建data, indices, indptr自己多 4 倍。既然我已经有了(data, indices, indptr)元组,那么构建 csr 矩阵难道不应该是微不足道的(而且很快)吗?

我的代码和时间统计是这样的:

data = ...  # 2.207s
indices = ...  # 11.065s       
indptr = ...  # 0.047s          
matrix = csr_matrix((data, indices, indptr), shape=(row, col))  # 57.806s
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

4
推荐指数
1
解决办法
641
查看次数