gpt4 book ai didi

linux - 当我从 scikit-learn 导入一些东西时,我有大量的上下文切换

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:37 25 4
gpt4 key购买 nike

我们正在使用 scikit-learn 来查找相似的图像集群。我们希望为此拥有一个内部 API,但是当我们从 scikit 导入对象或使用它时,我们会得到非常多的上下文切换。

这些导入中的任何一个都在创建大量导入:

from sklearn.neighbors import NearestNeighbors
from sklearn.externals.joblib import load
from sklearn.decomposition import PCA
from sklearn.externals import joblib

这是我们程序重新启动期间的 vmstat 1 输出。

very high contex switches after import

我们在导入之前和之后添加了一些 sleep ,并将大量上下文切换关联到这些行。

但是,当我们处理 3 GB NearestNeighbors 对象中的数字时,我们也会看到上下文切换的大幅增加。

enter image description here

您绝对可以发现我们发送到 API 的 3 个查询。

以下是增加的预期:

def reduce_dimensions(self, dataset):
return self.dim_obj.transform(dataset)

def get_closest_cluster(self, input_data):
indexs_with_distance = self.cluster_obj.radius_neighbors(X=input_data, radius=self.radious, return_distance=True)
return self.get_ordered_indexs(indexs_with_distance)

当我们在笔记本电脑上使用 docker compose 运行我们的设置时,以及当我们使用 docker 在 nomad 上运行它时,就会发生这种情况。该 Web 应用程序使用 Flask 编写并使用 gunicorn 提供服务。

有什么方法可以让 scikit 更灵活地使用这些上下文切换?

我们的管理员担心它会降低部署到相同节点的所有应用程序的性能。

我们正在使用 Python 3.6 和 scikit-learn 0.19.1

最佳答案

尝试通过运行来限制您的进程可以使用的线程数:

OMP_NUM_THREADS=1 python run.py

请在此处查看完整说明: Use of OMP_NUM_THREADS=1 for Python Multiprocessing

关于linux - 当我从 scikit-learn 导入一些东西时,我有大量的上下文切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47476897/

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