-
[Transformers] Couldn't build proto file into descriptor pool: duplicate file name sentencepiece_model.proto 에러가 생기는 경우 해결하는 방법Python/HuggingFace 2023. 4. 21. 14:53반응형
Couldn't build proto file into descriptor pool: duplicate file name sentencepiece_model.proto 에러가 생기는 경우 해결하는 방법
자연어 처리(NLP) 작업을 하다 보면 이름이 긴 에러가 많이 나옵니다. 간단한 연산 에러는 읽기라도 편하지, 이거는 어느 패키지의 어느 모듈의 어느 py 파일의 몇천번째 줄로 찾아가서 에러 원인을 파악해야 하니 정말 까다롭더라고요. 아무튼, 이번에는 파이썬(Python) 트랜스포머(Transformers)에서 Couldn't build proto file into descriptor pool: duplicate file name sentencepiece_model.proto 에러가 발생했을 때 해결하는 방법을 알아보겠습니다.
NLP 모델은 대부분 의존성이 복잡하게 얽혀 있습니다. 그리고, 배포보다는 자체 사용을 상정하고 만들어서 그런지, 최신 버전을 설치하면 대부분 해결되는 다른 의존성 에러에 비해서 해결하기가 어려운 편이지요.
저는 네이버 클로바에서 배포하는
donut-base-finetuned-docvqa
모델을 사용하려고 보니 위와 같은 문제가 생기더라고요. 비슷한 문제를 겪은 사람이 있는지 한번 확인해보니, 다른 모델이지만 같은 에러가 뜬 사람의 사례를 확인해볼 수 있었습니다.다행히도, 이번에 발생한 에러는 설치된 패키지 버전만 바꿔주면 되는 간단한 문제였습니다.
Couldn't build proto file into descriptor pool: duplicate file name sentencepiece_model.proto 문제는 protobuf 라는 패키지의 의존성 문제 때문에 생기는 모양이더라고요. 만약 기존에 protobuf 패키지가 설치되어 있었다면, 아래 명령어를 실행해서 지워줍시다. 만약, 다른 NLP 또는 딥러닝 프로젝트를 진행할 수도 있다면, 가상환경을 세팅한 다음 실행해 주세요.
$ pip uninstall protobuf
다음에는, protobuf 3.20 버전으로 설치를 해 주면 됩니다. 3.20버전은 다행히도 pip를 통해 쉽게 설치할 수 있으니 다행입니다.
$ pip install protobuf==3.20
이렇게 protobuf 를 재설치해 주니 에러가 생기지 않고 실행되는 것을 확인할 수 있습니다.
반응형'Python > HuggingFace' 카테고리의 다른 글