현 버전 샘플코드 공백 발산
Closed this issue · 13 comments
최근 커밋 이후로 how to use 샘플 코드를 실행시켰을때 공백( ▁ )만 발산하고 루프가 끊어지지 않네요.
transfer learning을 해보아도 현 버전으로는 여전히 잘 동작하지 않네요.
혹시 해결할 방법이 있을까요?
어떤 커밋 이후인지 알수 있을까요?
그리고 발산되는 코드와 작동 환경을 함께 보여주시면 reproduce해볼 수 있을거 같습니다.
5월 22일 requirements.txt 를 transformers == 2.4.1 로 수정한 이후 부터
문장생성을 생성할때 공백을 만나면 항상 공백( ▁ )만 발산하고 나아가지가 않네요.
'2019년 한해를 보내며,로 문장을 생성해내는 간단한 예제'에서도 같은 문제가 발생합니다.
구글 코랩환경에서 동작합니다.
https://colab.research.google.com/github/newfull5/AI-Project/blob/master/KoGPT2_Sample.ipynb
감사합니다!!
아마 !pip install .
때문에 문제가 발생하는 것으로 보입니다.
코랩 환경에서,
!cd KoGPT2 && pip install .
이 줄 대신 %cd KoGPT2
로 바꿔서 테스트해보세요.
아마
!pip install .
때문에 문제가 발생하는 것으로 보입니다.코랩 환경에서,
!cd KoGPT2 && pip install .
이 줄 대신%cd KoGPT2
로 바꿔서 테스트해보세요.
!cd KoGPT2 && pip install -r requirements.txt
!cd KoGPT2 && pip install .
위 코드를
%cd KoGPT2
!pip install -r requirements.txt
!pip install .
위와 같이 바꾸어 진행해 보았지만 달라지지 않았습니다.
아마 setup시에 경로 설정탓은 아닌듯 합니다.
https://colab.research.google.com/drive/1k34tAA8KE2LFm7m-VW4Or3idGi2bBev9#scrollTo=dkIMMS_9ofvM
requirements.txt
를 수정해보세요.
gluonnlp==0.9.1
mxnet==1.6.0
sentencepiece==0.1.85
transformers==2.6.0
requirements.txt
를 수정해보세요.gluonnlp==0.9.1 mxnet==1.6.0 sentencepiece==0.1.85 transformers==2.6.0
말씀하신 방법대로 requirements.txt 를 수정하여 문제를 해결할 수 있었습니다.
대단히 감사합니다!
저도 같은 문제가 있었는데 requrements.txt
수정하고 문제가 해결되었습니다. 이는 PR을 주셔야 할듯 합니다. @zetbouaka
저도 같은 문제가 있었는데 requirements.txt를 수정하니 해결되었습니다. 감사합니다!
MXNet 모델도 동일한 현상이 있어서 테스트 해보니..
sentencepiece==0.1.85
sentencepiece가 버전업 되면서 뭔가 바뀐거 같네요. 확인은 더 해보겠습니다.
sentencepiece에서 SampleEncodeAsPieces
함수의 alpha값이 이전 버전에서는 동작하지 않았는데, 최근 버전에서 동작하게 되어서 최신 sentencepiece에서는 아래와 같이 alpha값을 0으로 줘야 됩니다.
대부분 모델을 인퍼런스로 사용하는거라 deterministic 하게 0 으로 주는게 맞습니다.
tok = SentencepieceTokenizer(tok_path, 0, 1)
tok = SentencepieceTokenizer(tok_path)
toked = tok(sent)
print(toked)
['▁', '2', '0', '1', '9', '년', '▁', '한', '해', '를', '▁', '보', '내', '며', ',', '▁', '새', '해', '에', '는', '▁', '더', '▁', '많', '은', '▁', '사', '람', '들', '이', '▁', '새', '해', '에', '▁', '이', '루', '고', '자', '▁', '하', '는', '▁', '소', '망', '과', '▁', '희', '망', '을', '▁', '되', '새', '겨', '보', '는', '▁', '시', '간', '이', '▁', '되', '었', '으', '면', '▁', '좋', '겠', '다', '.']
tok = SentencepieceTokenizer(tok_path, 0, 0)
toked = tok(sent)
print(toked)
['▁2019', '년', '▁한', '해를', '▁보내', '며', ',', '▁새해', '에는', '▁더', '▁많은', '▁사람들이', '▁새해', '에', '▁이루고', '자', '▁하는', '▁소망', '과', '▁희망을', '▁되새', '겨', '보는', '▁시간이', '▁되었', '으면', '▁좋겠다', '.']
tok = SentencepieceTokenizer(tok_path)
toked = tok(sent)
print(toked)
['▁', '2', '0', '1', '9', '년', '▁', '한', '해', '를', '▁', '보', '내', '며', ',', '▁', '새', '해', '에', '는', '▁', '더', '▁', '많', '은', '▁', '사', '람', '들', '이', '▁', '새', '해', '에', '▁', '이', '루', '고', '자', '▁', '하', '는', '▁', '소', '망', '과', '▁', '희', '망', '을', '▁', '되', '새', '겨', '보', '는', '▁', '시', '간', '이', '▁', '되', '었', '으', '면', '▁', '좋', '겠', '다', '.']
더 이상 문제 없음으로 판단하고 해당 이슈는 클로즈 하겠습니다.