Beomi/KcELECTRA

모델 Shape와 버전 관련 질문이 있습니다!

GMS80175064 opened this issue · 2 comments

안녕하세요 선생님, 인문사회 분야 공부하면서 코딩을 조금씩 하는 학생입니다.
다름 아니라, 코드 관련해서 하나 질문이 있어서요. 코딩한지 얼마 안 되어서 질문이 모호할 수도 있는데, 혹시라도 짐작하시는 바가 있어 답변 주시면 정말 감사하겠습니다!

제가 어떤 분이 작성하신 KcELECTRA 이용한 텍스트 분류 모델을 이용하는데, 이게 작년까지 잘 작동하다가 최근 다시 돌려보니 오류가 뜨더라고요. 며칠 간 고민해보다가 도저히 답이 안 나와서 질문 남깁니다.

"""
size mismatch for electra.embeddings.word_embeddings.weight: copying a param with shape torch.Size([50135, 768]) from checkpoint, the shape in current model is torch.Size([54343, 768]).
"""

제가 가진 bin 파일의 shape가 [50135,768]인데 beomi/KcELECTRA-base나 beomi/KcELECTRA-base-v2022의 shape가 각각 [30000,768] & [54343,768]으로 mismatch하는 오류가 나타났습니다.
코드가 잘 돌아갔을 때는 이 size가 match 했으니 잘 돌아갔을 거라고 생각하는데 파일은 변하지 않았어서, 혹시 기존 버전의 모델 중에 shape가 50135였던 버전이 있었는지 궁금합니다!!

HuggingFace - beomi/KcELECTRA-base(https://huggingface.co/beomi/KcELECTRA-base/tree/main) 페이지를 확인해보시면

좌측 중단에 "main"버튼 클릭해보시면 [v2021, v2022, main(v2023)] 3개 버전에 따른 파일리스트 보이실겁니다.

그 중 "v2021' 모델이 50135 vocap size를 가지고 있어, 찾으시는 모델이 맞는 것 같네요

해당 모델 사용하시려면 이전에 사용하신 모듈에 따라 아래와 같이 실행해보시면 될 것 같네요.

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(self.hparams.pretrained_model, revision='v2021')

or

from transformers import AutoTokenizer, AutoModelForPreTraining
tokenizer = AutoTokenizer.from_pretrained("beomi/KcELECTRA-base", revision='v2021')
model = AutoModelForPreTraining.from_pretrained("beomi/KcELECTRA-base", revision="v2021")

친절한 답변 정말 감사합니다. 정상 작동하네요!