gpt4 book ai didi

python - 管理 dask localcluster 上的工作内存

转载 作者:行者123 更新时间:2023-12-02 08:29:05 24 4
gpt4 key购买 nike

我正在尝试使用 dask 加载数据集,但是当需要计算我的数据集时,我不断遇到这样的问题:

WARNING - Worker exceeded 95% memory budget. Restarting.

我只是在本地计算机上工作,启动 dask 如下:

if __name__ == '__main__':
libmarket.config.client = Client() # use dask.distributed by default

现在,在我的错误消息中,我不断看到对“memory_limit=”关键字参数的引用。然而,我已经彻底搜索了 dask 文档,但我不知道如何在单机配置中增加该死的工作内存限制。我有 256GB 的 RAM,在将其转换回 pandas 数据帧之前,我将删除大部分 future 的列(20GB csv 文件),所以我知道它将适合内存。我只需要从我的代码中增加每个工作线程的内存限制(不使用 dask-worker),以便我可以处理它。

请有人帮助我。

最佳答案

论点memory_limit可以提供给__init()__ Client的功能和LocalCluster .

一般说明

只需调用 Client()是首次调用 LocalCluster() 的快捷方式然后,Client与创建的集群( Dask: Single Machine )。当Client在没有 LocalCluster 实例的情况下调用, LocalCluster.__init()__ 的所有可能参数可以提供给Client的初始化调用。因此,论证memory_limit (以及其他参数,例如 n_workers )未记录在 Client 的 API 文档中类。

但是,参数 memory_limit LocalCluster 的 API 文档中似乎没有正确记录(请参阅 Dask GitHub 问题 #4118)。

解决方案

一个工作示例如下。我添加了更多参数,这可能对找到此问题/答案的人有用。

# load/import classes
from dask.distributed import Client, LocalCluster

# set up cluster with 4 workers. Each worker uses 1 thread and has a 64GB memory limit.
cluster = LocalCluster(n_workers=4,
threads_per_worker=1,
memory_limit='64GB')
client = Client(cluster)

# have a look at your workers
client

# do some work
## ...

# close workers and cluster
client.close()
cluster.close()

快捷方式是

# load/import classes
from dask.distributed import Client

# set up cluster with 4 workers. Each worker uses 1 thread and has a 64GB memory limit.
client = Client(n_workers=4,
threads_per_worker=1,
memory_limit='64GB')

# have a look at your workers
client

# do some work
## ...

# close workers and cluster
client.close()

进一步阅读

关于python - 管理 dask localcluster 上的工作内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53936237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com