Engineering/에러 해결 모음

[Error] EOFError : Ran out of input

Hyen4110 2022. 12. 12. 09:33

유사문서 매칭 모델 서비스에서
문서 텍스트를 BERT 계열 언어모델을 사용하여 embedding vector로 전환한 후,
faiss 라이브러리를 통해 유서 문서 검색 기능을 제공하고 있다.

좀 더 자세히말하자면, faiss index를 생성한 후,
검색 대상 문서(Document Pool)에 embedding vector를 추가하는데
저장해놓은 pickle파일 형태의 벡터를 불러온다.
이때, EOFError : Ran out of input 에러가 발생

원인을 파악한 결과,
새로운 문서가 추가 되거나 인코더 역할을 하는 언어모델을 교체하여
새로운 인덱싱을 진행한 후 파일을 다시 저장할때,
즉, 아래처럼 with open을 'wb'로 실행할 때 비정상적으로 기능이 종료가되어
파일이 손상된 것이 원인이었다.

filename = 'embedding_vectors.pkl'
with open(filename, 'wb') as f:
    embedding_vectors = pickle.load(f)

돌발상황은 언제나 발생하므로
backup 파일을 미리 생성해서
문제 시 교체할 수 있도록 하기