可在客户机会主义图中重用Das

2024-10-05 14:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

Dask支持定义custom computational graphs以及opportinistic caching。问题是如何将它们一起使用。在

例如,让我们定义一个非常简单的计算图,它计算x+1操作

import dask

def compute(x):
    graph = {'step1': (sum, [x, 1])}
    return dask.get(graph, 'step1')

print('Cache disabled:', compute(1), compute(2))

这将产生2和{}。在

现在我们启用机会缓存

^{pr2}$

在这两种情况下,我们都错误地得到2的结果,因为无论输入是什么,cc.cache.data都是{}。在

我想这意味着需要对输入进行哈希处理(例如用^{})并将其附加到图中的所有键上。有没有一种更简单的方法,特别是在the tokenize function is not part of the public API之后?在

问题是在复杂图中,一个随机步骤名需要考虑提供给它的子步骤的所有输入的哈希值,这意味着必须进行完整的图解析。在


Tags: theimport定义defcustom步骤daskcaching
1条回答
网友
1楼 · 发布于 2024-10-05 14:31:51

重要的是dask图中的键名是唯一的(正如您在上面发现的)。此外,我们希望相同的计算有相同的密钥,这样我们就可以避免多次计算它们-这不是dask工作的必要条件,它只是提供了一些优化的机会。在

在dask的内部,我们使用^{}来计算输入的“散列”,从而得到确定的密钥名。您也可以自由使用此函数。在上面链接的问题中,我们说函数是公共的,只是实现可能会改变(而不是签名)。在

还要注意,对于许多用例,我们建议现在使用^{}而不是自定义图来生成自定义计算。这将在幕后为您进行确定性哈希。在

相关问题 更多 >