高效使用带有dask分布式和gensim的多个内核

问题描述 投票:0回答:1

我有一个无法容纳到内存中的巨大数据框。因此,我可以通过dask(分布式)在Python中访问它。

[我想基于数据帧中一列的条目使用包gensim训练Word2Vec / Doc2Vec模型,这就是为什么我在this question中构建了迭代器。

现在,gensim训练使用多个内核,我需要指定其编号,并且类似地,dask也允许我使用多个内核。到目前为止,我将所有可用的内核分配给dask,将相同数量的内核分配给gensim。我的理由是,获取数据和对数据进行训练是无法同时完成的排他性任务,因此gensimdask不应争夺核心。

确实,没有错误消息,但是培训似乎仍然很慢,我怀疑有更好的分发工作的方法。有没有人在这件事上有经验?

python multithreading dask gensim dask-distributed
1个回答
0
投票

将两个都尝试使用多线程并行性的库组合在一起可能会适得其反。活动的线程太多会导致争用并使速度变慢。我建议将两个库之一设置为仅使用一个线程。

对于Dask,您可以使用以下方法进行此操作:

dask.config.set(scheduler="single-threaded")

https://docs.dask.org/en/latest/scheduling.html

© www.soinside.com 2019 - 2024. All rights reserved.