SELF-IMPROVEMENT/error 기록

토픽모델링 TerminatedWorkerError

DS지니 2022. 4. 15. 11:41
728x90
반응형

이전에는 잘 돌아가던 토픽모델링에서 갑자기 에러가 남.

TerminatedWorkerError: A worker process managed by the executor was unexpectedly terminated. This could be caused by a segmentation fault while calling the function or by an excessive memory usage causing the Operating System to kill the worker.

 

구글링하니 거의 scikit-learn 모델 관련이었고, 파라미터의 n_jobs 값을 조정하면 해결되어 보였음.

 

1)토픽모델링 gensim.models.ldamodel.LdaModel2)토픽모델링 시각화 pyLDAvis.gensim_models.prepare 두개의 코드를 사용 중이었는데, 첫번째 LdaModel에서는 n_jobs 조절하는 파라미터가 없어 다른 이유를 찾느라 많이 헤맸음.

 

메모리 문제인가 싶어 일단 가상메모리를 늘려 코드를 다시 돌렸고, 원래 안돌아가던 LdaModel이 돌아감..@!

 

하지만 pyLDAvis 에서는 똑같이 TerminatedWorkerError가 나타났고 또 다시 좌절함 ㅠㅠ

이때부터 메모리에 집착을 하기 시작했는데, 오랜 시간 노동 끝 결국은 해결되지 않음...😪

 

이쯤 메모리가 문제는 아닌 것 같아 다시 처음부터 구글링을 해 놓친게 있는지 확인했고, n_jobs에 다시 초첨을 맞추었음. 그리고 pyLDAvis Document에서 파라미터에서 n_jobs를 조정할 수 있는 것을 확인함.

n_jobs의 디폴트값이 -1었고, n_jobs=1로 수정하니 에러가 해결!!! ㅠㅠㅠ후.. 뺑뺑뺑 돌았따 ㅋㅋㅋ

 

n_jobs : 내 알고리즘을 병렬 연산하기 위해 CPU 코어를 몇 개 쓸건지 지정.

n_jobs = -1 : 모든 코어 사용. CPU 100%. 속도가 빨라짐.

n_jobs = n : n개의 코어 사용

 

 

 

결론)

1. 파라미터 n_jobs 변경

2. 메모리 문제인지 확인하기

 

728x90
반응형