`RuntimeError: Not enough arguments provided: missing keys` in `dask.persist` with mix of `Future` and `Delayed`
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 42/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
報告されたバージョン変更で最小例を実行し、混在する Future/Delayed ケースを、動作する 2 つのケースと比較します。dask.persist を dask/base.py、dask/core.py、dask/_task_spec.py の順に追跡し、特に報告された repack と missing-key のパスを確認します。混在する入力で RuntimeError が発生しなくなり、既存の Future-only ケースと Delayed-only ケースが引き続き動作すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Describe the issue:
I get a RuntimeError with some dask-ml code that worked with dask / distributed 2024.10.0 and earlier. With 2024.11.0 and newer, it fails:
Minimal Complete Verifiable Example:
import dask
import dask.distributed
@dask.delayed
def f(x):
return x
def main():
with dask.distributed.Client() as client:
print(dask.persist(client.submit(lambda x: x, 1), f(0)))
if __name__ == "__main__":
main()
On the older versions of dask, that prints out
(<Future: pending, key: lambda-80efb60e0b886931a35d757d5c4b3ac2>, Delayed('f-8a35b8af-26b5-427e-86c8-98b6d8b3f49f'))
Newer versions fail with
Traceback (most recent call last):
File "/Users/tom/gh/dask/dask-ml/bug.py", line 15, in <module>
main()
File "/Users/tom/gh/dask/dask-ml/bug.py", line 12, in main
print(dask.persist(client.submit(lambda x: x, 1), f(0)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/tom/gh/dask/dask-ml/.direnv/python-3.11/lib/python3.11/site-packages/dask/base.py", line 988, in persist
return repack(results)
^^^^^^^^^^^^^^^
File "/Users/tom/gh/dask/dask-ml/.direnv/python-3.11/lib/python3.11/site-packages/dask/base.py", line 535, in repack
return simple_get(dsk, out)
^^^^^^^^^^^^^^^^^^^^
File "/Users/tom/gh/dask/dask-ml/.direnv/python-3.11/lib/python3.11/site-packages/dask/core.py", line 102, in get
result = execute_graph(dsk2, cache, keys=set(flatten([out])))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/tom/gh/dask/dask-ml/.direnv/python-3.11/lib/python3.11/site-packages/dask/_task_spec.py", line 786, in execute_graph
cache[key] = node(cache)
^^^^^^^^^^^
File "/Users/tom/gh/dask/dask-ml/.direnv/python-3.11/lib/python3.11/site-packages/dask/_task_spec.py", line 670, in __call__
self._verify_values(values)
File "/Users/tom/gh/dask/dask-ml/.direnv/python-3.11/lib/python3.11/site-packages/dask/_task_spec.py", line 428, in _verify_values
raise RuntimeError(f"Not enough arguments provided: missing keys {missing}")
RuntimeError: Not enough arguments provided: missing keys {'lambda-80efb60e0b886931a35d757d5c4b3ac2'}
Anything else we need to know?:
It seems to be the combination of Futures and Delayed objects that causes issues. Both of these seem to work fine.
print(dask.persist(client.submit(lambda x: x, 1), client.submit(lambda x: x, 2)) # OK
print(dask.persist(f(0), f(1))) # OK
I'll look for fixes / workarounds once I get up to speed on what's going on.
Environment:
- Dask version:
- Python version:
- Operating System:
- Install method (conda, pip, source):
- 主要言語
- Python
- スター
- 1.7k
- フォーク
- 778
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
dask/distributed のほかの issue
-
needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
dask/distributed#9366 ·
-
needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
dask/distributed#9353 ·
-
documentation
難易度 1/5 1〜3時間 初心者へのやさしさ 82/100
dask/distributed#8304 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
dask/distributed#4816 · コメント 2 件 ·
-
documentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
dask/distributed#2378 · コメント 2 件 ·
dask/distributed の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
bug
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
qgis/QGIS-Plugins-Website#459 ·
-
bug severity:medium
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 2 日以内に返信
-
bot-found bug priority: P3
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
madenvel/KalinkaPlayer#179 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
ls1intum/edutelligence#1098 ·
メンテナーはふだん 1 日以内に返信