【问题标题】:Dask Distributed produces AttributeError: 'HighLevelGraph' object has no attribute '__dask_distributed_pack__'Dask Distributed 产生 AttributeError:“HighLevelGraph”对象没有属性“__dask_distributed_pa​​ck__”
【发布时间】:2021-03-02 21:36:54
【问题描述】:

我在 3 台 AWS T2 机器上有一个小型开发集群。一台机器作为客户端,一台作为调度器,最后一台作为工作者。在所有这些上,我都执行了git clone 并在所有 3 上手动安装了 Numpy 版本1.21.0。但是,在遵循基本设置时,执行 A = client.map(square, range(10)) 时会产生以下错误在 Python3(3.8) 解释器上。如何解决这个问题?似乎是内部错误,Dask 是通过客户端机器上的 pip install 获得的。

ubuntu@ip-172...:~$ python3
Python 3.8.5 (default, Jan 27 2021, 15:41:15) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from dask.distributed import Client
>>> client = Client('IPv4Addr:8786')
>>> client
<Client: 'tcp://172...:8786' processes=1 threads=4, memory=8.18 GB>
>>> def square(x):
...     return x ** 2
... 
>>> A = client.map(square, range(10))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/distributed-2021.2.0+19.g2c5d2cf8-py3.8.egg/distributed/client.py", line 1764, in map
    futures = self._graph_to_futures(
  File "/usr/local/lib/python3.8/dist-packages/distributed-2021.2.0+19.g2c5d2cf8-py3.8.egg/distributed/client.py", line 2542, in _graph_to_futures
    dsk = dsk.__dask_distributed_pack__(self, keyset)
AttributeError: 'HighLevelGraph' object has no attribute '__dask_distributed_pack__'

【问题讨论】:

    标签: dask dask-distributed


    【解决方案1】:

    对于遇到相同问题的任何人,一个可能的解决方案(对我们有用的那个)是创建一个虚拟环境,您将在其中安装 Dask 及其所有依赖项。

    1- 在新创建的 venv 上安装 Dask

    2- 使用$ pip freeze &gt; ~/requirements.txt 生成需求规范

    3- 在工作人员和客户端计算机上创建一个 venv 并在所述 env 上执行 $ pip install -r requirements.txt

    这将保证相同的环境,并有望防止各种问题,例如原始问题中详述的问题。

    【讨论】:

    • 您是否发现了导致问题的其他原因?我想避免创建一个新的 venv
    • 您好@ps0604,据我所知,问题在于依赖项的版本不匹配。我认为是图书馆的创建者 Matthew Rockling 在他的一次演讲中提出了平等的环境。如果您不想创建 venv,则必须验证所有依赖项可以很好地协同工作,或者在您的环境中更改它们,这可能会损害其他项目。我认为 venv 是去这里的方式。
    • 谢谢 nazar,您是如何实现应用程序 venv 和 dask venv 之间的连接的?
    • 对不起,我在这里没有更多帮助,因为我只是为项目初始 RnD 部署测试集群。但是,我不确定您是否指的是 YARN 集群的兼容性。如果是这样,请参阅来自Dask docs 的此资源。在我非常简单的用例中,我们需要 n 台机器,所以我们有 n 个相同的 venv(每台机器一个),创建了 n-1 个工人和 1 个主人。
    • 这就是解决问题的方法:我将 python 从 3.8 升级到 3.9
    【解决方案2】:

    我们收到了相同的错误消息。事实证明,我们在包 dask 和分发包之间存在版本不匹配。不知何故,分布式升级到了 2021.3.0,而 dask 仍然在 2020.12.0。降级分发到旧版本解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 2021-12-25
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      相关资源
      最近更新 更多