You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dask LocalCUDACluster启动失败:AttributeError问题求助

Dask LocalCUDACluster启动报错:AttributeError: 'str' object has no attribute 'decode'

运行以下代码时触发错误:

from dask.distributed import Client
from dask_cuda import LocalCUDACluster
cluster = LocalCUDACluster()
client = Client(cluster)

错误栈信息:

AttributeError                            Traceback (most recent call last)
File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/deploy/spec.py:319, in SpecCluster._start(self)
    318     cls = import_term(cls)
---> 319 self.scheduler = cls(**self.scheduler_spec.get("options", {}))
    320 self.scheduler = await self.scheduler

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/scheduler.py:3481, in Scheduler.__init__(self, loop, delete_interval, synchronize_worker_interval, services, service_kwargs, allowed_failures, extensions, validate, scheduler_file, security, worker_ttl, idle_timeout, interface, host, port, protocol, dashboard_address, dashboard, http_prefix, preload, preload_argv, plugins, contact_address, transition_counter_max, jupyter, **kwargs)
   3480 if show_dashboard:
-> 3481     distributed.dashboard.scheduler.connect(
   3482         self.http_application, self.http_server, self, prefix=http_prefix
   3483     )
   3484 self.jupyter = jupyter

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/dashboard/scheduler.py:158, in connect(application, http_server, scheduler, prefix)
    156 def connect(application, http_server, scheduler, prefix=""):
    157     bokeh_app = BokehApplication(
-> 158         applications, scheduler, prefix=prefix, template_variables=template_variables()
    159     )
    160     application.add_application(bokeh_app)

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/cytoolz/functoolz.pyx:475, in cytoolz.functoolz._memoize.__call__()

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/dashboard/scheduler.py:131, in template_variables()
    123 from distributed.diagnostics.nvml import device_get_count
    125 template_variables = {
    126     "pages": [
    127         "status",
    128         "workers",
    129         "tasks",
    130         "system",
-> 131         *(["gpu"] if device_get_count() > 0 else []),
    132         "profile",
    133         "graph",
    134         "groups",
    135         "info",
    136     ],
    137     "plots": [
    138         {
    139             "url": x.strip("/"),
    140             "name": " ".join(x.strip("/").split("-")[1:])
    141             .title()
    142             .replace("Cpu", "CPU")
    143             .replace("Gpu", "GPU"),
    144         }
    145         for x in applications
    146         if "individual" in x
    147     ]
    148     + [{"url": "hardware", "name": "Hardware"}],
    149 }
    150 template_variables["plots"] = sorted(
    151     template_variables["plots"], key=lambda d: d["name"]
    152 )

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/diagnostics/nvml.py:126, in device_get_count()
    125 def device_get_count():
-> 126     init_once()
    127     if not is_initialized():

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/diagnostics/nvml.py:108, in init_once()
    105     return
    107 if _in_wsl() and parse_version(
-> 108     pynvml.nvmlSystemGetDriverVersion().decode()
    109 ) < parse_version(MINIMUM_WSL_VERSION):
    110     NVML_STATE = NVMLState.DISABLED_WSL_INSUFFICIENT_DRIVER

AttributeError: 'str' object has no attribute 'decode'

上述异常是触发后续异常的直接原因:

RuntimeError                              Traceback (most recent call last)
Cell In[22], line 3
      1 from dask_cuda import LocalCUDACluster
----> 3 cluster = LocalCUDACluster()
      4 client = Client(cluster)

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/dask_cuda/local_cuda_cluster.py:336, in LocalCUDACluster.__init__(self, CUDA_VISIBLE_DEVICES, n_workers, threads_per_worker, memory_limit, device_memory_limit, data, local_directory, shared_filesystem, protocol, enable_tcp_over_ucx, enable_infiniband, enable_nvlink, enable_rdmacm, rmm_pool_size, rmm_maximum_pool_size, rmm_managed_memory, rmm_async, rmm_log_directory, rmm_track_allocations, jit_unspill, log_spilling, worker_class, pre_import, **kwargs)
    329     worker_class = partial(
    330         LoggedNanny if log_spilling is True else Nanny,
    331         worker_class=worker_class,
    332     )
    334 self.pre_import = pre_import
-> 336 super().__init__(
    337     n_workers=0,
    338     threads_per_worker=threads_per_worker,
    339     memory_limit=self.memory_limit,
    340     processes=True,
    341     data=data,
    342     local_directory=local_directory,
    343     protocol=protocol,
    344     worker_class=worker_class,
    345     config={
    346         "distributed.comm.ucx": get_ucx_config(
    347             enable_tcp_over_ucx=enable_tcp_over_ucx,
    348             enable_nvlink=enable_nvlink,
    349             enable_infiniband=enable_infiniband,
    350             enable_rdmacm=enable_rdmacm,
    351         )
    352     },
    353     **kwargs,
    354 )
    356 self.new_spec["options"]["preload"] = self.new_spec["options"].get(
    357     "preload", []
    358 ) + ["dask_cuda.initialize"]
    359 self.new_spec["options"]["preload_argv"] = self.new_spec["options"].get(
    360     "preload_argv", []
    361 ) + ["--create-cuda-context"]

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/deploy/local.py:253, in LocalCluster.__init__(self, name, n_workers, threads_per_worker, processes, loop, start, host, ip, scheduler_port, silence_logs, dashboard_address, worker_dashboard_address, diagnostics_port, services, worker_services, service_kwargs, asynchronous, security, protocol, blocked_handlers, interface, worker_class, scheduler_kwargs, scheduler_sync_interval, **worker_kwargs)
    250 worker = {"cls": worker_class, "options": worker_kwargs}
    251 workers = {i: worker for i in range(n_workers)}
-> 253 super().__init__(
    254     name=name,
    255     scheduler=scheduler,
    256     workers=workers,
    257     worker=worker,
    258     loop=loop,
    259     asynchronous=asynchronous,
    260     silence_logs=silence_logs,
    261     security=security,
    262     scheduler_sync_interval=scheduler_sync_interval,
    263 )

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/deploy/spec.py:286, in SpecCluster.__init__(self, workers, scheduler, worker, asynchronous, loop, security, silence_logs, name, shutdown_on_close, scheduler_sync_interval)
    284 if not called_from_running_loop:
    285     self._loop_runner.start()
-> 286     self.sync(self._start)
    287     try:
    288         self.sync(self._correct_state)

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/utils.py:338, in SyncMethodMixin.sync(self, func, asynchronous, callback_timeout, *args, **kwargs)
    336     return future
    337 else:
-> 338     return sync(
    339         self.loop, func, *args, callback_timeout=callback_timeout, **kwargs
    340     )

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/utils.py:405, in sync(loop, func, callback_timeout, *args, **kwargs)
    403 if error:
    404     typ, exc, tb = error
-> 405     raise exc.with_traceback(tb)
    406 else:
    407     return result

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/utils.py:378, in sync.<locals>.f()
    376         future = asyncio.wait_for(future, callback_timeout)
    377     future = asyncio.ensure_future(future)
-> 378     result = yield future
    379 except Exception:
    380     error = sys.exc_info()

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/tornado/gen.py:769, in Runner.run(self)
    766 exc_info = None
    768 try:
-> 769     value = future.result()
    770 except Exception:
    771     exc_info = sys.exc_info()

File ~/miniconda3/envs/rapids-23.04/lib/python3.10/site-packages/distributed/deploy/spec.py:330, in SpecCluster._start(self)
    328 self.status = Status.failed
    329 await self._close()
-> 330 raise RuntimeError(f"Cluster failed to start: {e}") from e

RuntimeError: 集群启动失败:'str'对象没有属性'decode'

环境信息:

  • Dask版本:2023.2.0
  • 已尝试的解决方法:
    • 重装rapidsai
    • 将Python版本从3.10降级至3.8
    • 调整LocalCUDACluster()的参数

以上方法均未解决问题,寻求技术支持。

内容的提问来源于stack exchange,提问作者LRyougiShikiZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:12:23