ksjae/KoGPT

Tokenizer 문의

Closed this issue · 4 comments

안녕하세요!
새로 올려주신 파일로 돌려보았을 때 아래와 같이 동작하고 있습니다.

>>> input_ids = tokenizer.encode("안녕하세요.", return_tensors='tf')
>>> input_ids
<tf.Tensor: shape=(1, 16), dtype=int32, numpy=
array([[169, 244, 231, 168, 228, 244, 170, 244, 247, 169, 227, 117, 169,
        249, 243,  14]], dtype=int32)>
>>> sample_outputs = model.generate(input_ids, do_sample=True, max_length=100, top_k=10, top_p=0.9, num_return_sequences=1)
>>> sample_outputs[0]
<tf.Tensor: shape=(100,), dtype=int32, numpy=
array([  169,   244,   231,   168,   228,   244,   170,   244,   247,
         169,   227,   117,   169,   249,   243,    14, 22689,   125,
          15,   309,  4779,   107,   103, 11647,   129,   745, 23762,
         114, 17173,   231,   281,  3074,   244,   245,   170,   104,
         125,   474,   467,    20,  1758,   391,  3074,   244,   245,
         170,   104,   125,   276,  2866,  4779,   107,   103, 11647,
         129,   271,  3796,  2516,   243,   260, 17008,   240, 10112,
         335,   915,  3099,  2988,  4779,   107,   103, 11647,   129,
         304,  4054,   120,   116,  9013,   281,  3074,   244,   245,
         170,   104,   125,   474,   467,    20,   205, 21087,   241,
        3074,   244,   245,   170,   104,   125,   361,  4779,   107,
         103], dtype=int32)>
>>> tokenizer.decode(sample_outputs[0])
'안녕하세요. 펼쳤다�/�였지만��文� 부� 영감은�천에�가먹방�����지만 �4남�먹방������ �였지만��文��눈 약간� � 최후의� 독특한 몄로 보이지아야였지만��文�한 빨뻷데일리�가먹방�����지만 �4\x10 재판�먹방�����었다였지만��'
  1. "안녕하세요."가 굉장히 많은 token들로 분리되는데, 이 부분은 의도하신 부분인가요? 이전에 올려주셨던 tokenizer에서는 이렇지 않았던 것 같아서 문의드립니다.

  2. 모델의 output이 디코딩 했을 때 많이 깨지는 것으로 보이는데, 이러한 결과가 많이 나오는 것이 정상적인 결과인가요?

감사합니다!

ksjae commented

혹시 이전 tokenizer를 이용했을때 무슨 결과가 나오나요?

이전 tokenizer 중 one drive에 올라왔던 tokenizer을 사용하면

In [4]: tokenizer.encode("안녕하세요.")                                                                                                                                                                                                                                      
Out[4]: [6902, 14]

이 나오고,
Google drive에 올라왔던 tokenizer을 사용하면

In [6]: tokenizer2.encode("안녕하세요.")                                                                                                                                                                                                                                     
Out[6]: [9461, 20]

이렇게 나옵니다.

ksjae commented
['ìķĦ', 'íķĺíķĺ']

처럼 나오는 경우는 터미널에서 깨지는 경우로 생각됩니다(decode-encode시 정상적으로 출력됨)

  1. 원래 모델과 같이 tokenizer를 동봉하여 제공하는데, 아마 다른 버전의 tokenizer가 제공된 것 같습니다. 근데 원래꺼를 찾을수가 없네요ㅠ v0.2를 며칠 내로 올릴 계획이니, 그 버전을 이용해 주셔야 될 것 같습니다.

  2. tokenizer가 달라 저렇게 깨지는 걸로 생각됩니다. 내부적으로 바이트 단위로 끊어서 하다보니, 한글(2바이트 이상)은 깨져서 나오는 것 같네요.

ksjae commented

v0.2에서 고쳤으므로 이 issue를 닫습니다.