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

#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는 설치 안해도 될거에요.

Your need to confirm your account before you can post a new comment.

Sign up or log in to comment