토크나이징이 올바르게 되지 않습니다.

#1
by noowad - opened

좋은 모델 공유해주셔서 감사합니다.
README.md와 동일하게 실행을 해보려고 하니 제대로된 이미지가 생성되지 않아 확인을 해본 결과, 토크나이저에 문제가 있는것 같아요.

repo = "Bingsu/my-korean-stable-diffusion-v1-5"
euler_ancestral_scheduler = EulerAncestralDiscreteScheduler.from_config(repo, subfolder="scheduler")
pipeline = StableDiffusionPipeline.from_pretrained(
    repo, scheduler=euler_ancestral_scheduler, torch_dtype=torch.float16, safety_checker=None
).to("cuda")
pipeline.tokenizer.tokenize("고양이")
>>
['áĦ',
 'Ģ',
 'á',
 'ħ',
 '©',
 'áĦ',
 'ĭ',
 'á',
 'ħ',
 '£',
 'áĨ',
 '¼',
 'áĦ',
 'ĭ',
 'á',
 'ħ',
 'µ</w>']

와 같이 토크나이징이 되는데, 올려주신 또다른 CLIP 모델의 토크나이저를 사용하면 올바르게 토크나이징이 되고 알맞은 이미지가 생성됩니다.

import requests
import torch
from PIL import Image
from transformers import AutoModel, AutoProcessor

repo = "Bingsu/clip-vit-large-patch14-ko"
model = AutoModel.from_pretrained(repo)
processor = AutoProcessor.from_pretrained(repo)
pipeline.tokenizer=processor.tokenizer
pipeline.tokenizer.tokenize("고양이")
>>
['ê³łìĸijìĿ´</w>']

제 예상으로는 원 CLIP 모델의 PretrainedTokenizerFast를 PretrainedTokenizer로 변환하는 과정에서 문제가 생긴 것 같아요.
감사합니다.

https://github.com/huggingface/transformers/blob/94b3f544a1f5e04b78d87a2ae32a7ac252e22e31/src/transformers/models/clip/tokenization_clip.py#L316

        try:
            import ftfy

            self.fix_text = ftfy.fix_text
        except ImportError:
            logger.warning("ftfy or spacy is not installed using BERT BasicTokenizer instead of ftfy.")
            self.nlp = BasicTokenizer(do_lower_case=True)
            self.fix_text = None

ftfy를 설치해주세요. 여기서 동작에 차이가 생기네요.

pipe.tokenizer.tokenize("고양이")
['áĦ',
 'Ģ',
 'á',
 'ħ',
 '©',
 'áĦ',
 'ĭ',
 'á',
 'ħ',
 '£',
 'áĨ',
 '¼',
 'áĦ',
 'ĭ',
 'á',
 'ħ',
 'µ</w>']
!pip install ftfy
pipe.tokenizer.tokenize("고양이")
['ê³łìĸijìĿ´</w>']

아 그렇군요 ftfy를 설치안한 환경에서 실행해서 저런 결과가 나왔나보네요 감사합니다!

noowad changed discussion status to closed

CLIPTokenzierFast를 기본값으로 바꿨으니, 이제 ftfy는 설치 안해도 될거에요.

Sign up or log in to comment