2016-09-19 2 views
3

나는 각각의 벡터 크기가 300 인 약 2300 개의 단락 (2000-12000 단어 사이)에 대한 단락 벡터를 훈련했습니다. 이제 단락으로 간주 한 약 10 만 문장의 단락 벡터를 추론해야합니다 (각 문장은 약 10 개입니다). 이미 훈련 된 초기 2300 개의 단락에 각각 대응하는 30 단어).doc2vec - 문서 벡터를 더 빠르게 추론하는 방법은 무엇입니까?

그래서,

model.infer_vector(sentence)

을 사용하고 있습니다 그러나, 문제는 너무 오래 걸리는되며, 그러한 "workers"등의 인수를 고려하지 않습니다.! 스레딩이나 다른 방법으로 프로세스 속도를 높일 수있는 방법이 있습니까? 나는 기가 바이트 램과 기계를 사용하고 내가 사용 가능한 코어를 확인할 때 (8)

나는이 객관식 질문에 대답에 필요한 나옵니다

cores = multiprocessing.cpu_count() 

을 사용하고 있습니다. 또한,이 작업에서 도움이 될 doc2vec과 같은 다른 라이브러리/모델이 있습니까?

미리 감사드립니다.

답변

1

벡터를 추론해야하는 새 데이터의 여러 하위 집합에서 infer_vector()을 여러 스레드에서 호출하면 속도가 약간 빨라질 수 있습니다. Python Global Interpreter Lock ('GIL')으로 인해 모든 코어를 완전히 사용할 수 없도록하는 스레드 챌린지가 여전히 상당히 많습니다.

RAM이 스와핑없이 충분히 크다면 모델을 디스크에 저장 한 다음 8 개의 별도 프로세스에로드하고 각각을 새 데이터의 1/8에 대해 추론 할 수 있습니다. 그것은 모든 CPU를 포화시키는 가장 좋은 방법입니다.

더 빠른 속도 향상은 infer_vector() 구현을 gensim으로 최적화해야합니다. 이는 개선 된 내용을 수용하는 프로젝트에서 open issue입니다.

관련 문제