2017-11-24 16 views
0

우리는 비슷한 이미지 클러스터를 찾기 위해 scikit-learn을 사용하고있다. 우리는 내부 API를 가지고 싶지만 scikit에서 객체를 가져 오거나 사용하면 매우 많은 수의 컨텍스트 전환이 발생합니다. 그 수입의scikit-learn에서 무언가를 가져올 때 나는 문맥 전환의 미친 양을 가지고있다.

어느 그들 중 많은 만드는 :

여기
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

우리는 가져 오기 전후에 약간의 잠을 추가 문맥의 높은 숫자는 그 라인으로 전환 corelated.

그러나 우리가 3GB NearestNeighbors 개체의 수치를 계산할 때 컨텍스트 스위치가 크게 증가한 것을 볼 수 있습니다.

enter image description here

당신은 확실히 우리가 우리의 API에 보내 3 개 쿼리를 발견 할 수 있습니다. 여기

은 증가의 supects 있습니다 : 우리는 고정 표시기와 유목민에 그것을 실행할 때 우리는 고정 표시기와의 설정은 우리의 노트북에 구성 실행 때

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) 

이 발생합니다. 웹 응용 프로그램은 플라스크로 작성되었으며 gunicorn과 함께 제공됩니다.

scikit에게 이러한 컨텍스트 스위치가 더 많은 도움이 될 수있는 방법이 있습니까?

관리자는 동일한 노드에 배포 된 모든 응용 프로그램의 성능이 저하 될 것을 우려합니다.

프로세스를 실행하여 사용할 수있는 스레드의 수를 제한하기 위해 우리는 파이썬 3.6 사용하고 0.19.1

답변