bil*_*l_e 5 dask dask-kubernetes dask-gateway
我正在尝试按照此处的文档为工作人员设置资源,但设置使用 Dask Gateway。具体来说,我希望能够遵循这个问题的答案,但使用 Dask Gateway。
我无法在ClusterConfig 选项中找到对工作线程资源的引用,并且我尝试了以下操作(按照此答案),但这似乎不起作用:
def set_resources(dask_worker):
dask_worker.set_resources(task_limit=1)
return dask_worker.available_resources, dask_worker.total_resources
client.run(set_resources)
# output from a 1 worker cluster
> {'tls://255.0.91.211:39302': ({}, {})}
# checking info known by scheduler
cluster.scheduler_info
> {'type': 'Scheduler',
'id': 'Scheduler-410438c9-6b3a-494d-974a-52d9e9fss121',
'address': 'tls://255.0.44.161:8786',
'services': {'dashboard': 8787, 'gateway': 8788},
'started': 1632434883.9022279,
'workers': {'tls://255.0.92.232:39305': {'type': 'Worker',
'id': 'dask-worker-f95c163cf41647c6a6d85da9efa9919b-wvnf6',
'host': '255.0.91.211',
'resources': {}, #### still {} empty dict
'local_directory': '/home/jovyan/dask-worker-space/worker-ir8tpkz_',
'name': 'dask-worker-f95c157cf41647c6a6d85da9efa9919b-wvnf6',
'nthreads': 4,
'memory_limit': 6952476672,
'services': {'dashboard': 8787},
'nanny': 'tls://255.0.92.232:40499'}}}
Run Code Online (Sandbox Code Playgroud)
当使用config.yamlDask Gateway 的 helm 图表(理想情况下是用户可以更改的集群选项中的一个字段!)创建集群时,或者在工作线程已经启动并运行之后,如何才能做到这一点?
我找到了一种方法来指定这一点,至少在 Kubernetes 上,是通过KubeClusterConfig.worker_extra_container_config. 这是我的工作配置的 yaml 片段(具体来说,这是我的 daskhub helm 部署的配置中):
dask-gateway:
gateway:
backend:
worker:
extraContainerConfig:
env:
- name: DASK_DISTRIBUTED__WORKER__RESOURCES__TASKSLOTS
value: "1"
Run Code Online (Sandbox Code Playgroud)
设置工作线程资源的选项不会在cluster options中公开,也不会在KubeClusterConfig. 环境变量的具体格式见这里。dask工作进程启动前需要设置资源环境变量,我发现设置后不起作用KubeClusterConfig.environment。
使用这个,我可以np.dot在一个有 4 个核心的 dask 工作容器中使用 mkl 运行多线程 numpy ()。我看到 CPU 使用率为 400%,并且只为每个工作人员分配了一项任务。
| 归档时间: |
|
| 查看次数: |
491 次 |
| 最近记录: |