使用本地集群的内存问题
Memory issue in dask with using local cluster
我正在尝试使用 Dask 本地集群来管理系统范围的内存使用,
from dask.distributed import Client, LocalCluster
cluster = LocalCluster(scheduler_port=5272, dashboard_address=5273,memory_limit='4GB')
我连接:
client = Client('tcp://127.0.0.1:5272')
我有 8 个内核和 32 GB。本地集群分配 4GB * 4 = 16GB 内存(我有另一个任务需要大约 10GB 内存)到本地集群。不过,之前有些任务不用调用client = Client('tcp://127.0.0.1:5272')
也能很好的完成。在我调用 client = Client('tcp://127.0.0.1:5272')
后,触发了内存错误。在这种情况下我能做什么?谢谢!
我在想是不是因为每个worker只分配了4GB内存...但是如果我分配memory_limit='16GB'。如果它使用所有资源,则需要 64GB。我没有那么多记忆。我能做什么?
不清楚你想达到什么目的,但你对内存的观察是正确的。如果工人受到记忆的限制,那么他们将无法完成任务。有什么办法可以解决这个问题?
获得更多资源的访问权限,如果您无法访问其他硬件,那么您可以查看 coiled.io 或查看各种 dask cloud 选项
优化你的代码,也许一些计算可以在更小的块中完成,数据可以被压缩(例如分类数据类型)或者有其他机会减少内存需求(真的取决于功能,但假设一些内部计算可以用更少的资源以更小的精度完成)
使用非分布式代码使用所有可用资源(这会增加资源需求的一些开销)。
我正在尝试使用 Dask 本地集群来管理系统范围的内存使用,
from dask.distributed import Client, LocalCluster
cluster = LocalCluster(scheduler_port=5272, dashboard_address=5273,memory_limit='4GB')
我连接:
client = Client('tcp://127.0.0.1:5272')
我有 8 个内核和 32 GB。本地集群分配 4GB * 4 = 16GB 内存(我有另一个任务需要大约 10GB 内存)到本地集群。不过,之前有些任务不用调用client = Client('tcp://127.0.0.1:5272')
也能很好的完成。在我调用 client = Client('tcp://127.0.0.1:5272')
后,触发了内存错误。在这种情况下我能做什么?谢谢!
我在想是不是因为每个worker只分配了4GB内存...但是如果我分配memory_limit='16GB'。如果它使用所有资源,则需要 64GB。我没有那么多记忆。我能做什么?
不清楚你想达到什么目的,但你对内存的观察是正确的。如果工人受到记忆的限制,那么他们将无法完成任务。有什么办法可以解决这个问题?
获得更多资源的访问权限,如果您无法访问其他硬件,那么您可以查看 coiled.io 或查看各种 dask cloud 选项
优化你的代码,也许一些计算可以在更小的块中完成,数据可以被压缩(例如分类数据类型)或者有其他机会减少内存需求(真的取决于功能,但假设一些内部计算可以用更少的资源以更小的精度完成)
使用非分布式代码使用所有可用资源(这会增加资源需求的一些开销)。