글꼴과 타이포그래피를 올바르게 철자하거나 처리 할 수없는 텍스트-이미지 모델에 지쳤습니까? 비밀은 Byt5 및 Canine-C와 같은 다국어, 토큰 화가없는 문자 인식 변압기 인코더를 사용하는 것으로 보입니다.
text-to-image 파이프 라인에서 클립을 BYT5로 교체하십시오Hugging Face Jax Diffuser Sprint의 일환으로 HF의 JAX/Flax Text-Image Pre-Training Code에서 Clip의 토큰 화기 및 인코더를 BYT5로 교체하여 이벤트를 위해 Google이 제공 한 스폰서 TPU Ressources에서 실행합니다.
보다 구체적으로, 스프린트 중에 달성하려는 주요 작업은 다음과 같습니다.
사전 훈련 데이터 세트 준비 : 우리는 lambdalabs/pokemon-blip-captions 훈련시키지 않을 것입니다. 그렇다면 옵션은 무엇입니까? 여기 또는 여기에있는 것이 당신의 공상을 취하고 있습니까? 아니면 diffusiondb? 아니면 많은 데이터 세트의 저항 믹스? 우리는 다음과 같은 요구 사항을 다루려고 할 때 많은 데이터 세트를 결합해야 할 것입니다.
우리는 Hugging Face DataSets 라이브러리를 최대한 많이 사용하여 JAX를 상자에서 지원하므로 사용합니다. 단순화를 위해 우리는 Laion2b en, Multi 및 Nolang과 같은 Hugging Face 데이터 세트에 대해 제한 할 것입니다. 그러나 우리는 훈련하기 전에 디스크에서 데이터 세트를 사전로드, 사전 프로세스 및 캐시해야합니다.
원래 코드 개선 :
jnp (NP 대신) jit , grad , vmap , pmap , pjit Everywhere! 그리고 우리는 스프린트 코드에서 이루어진 최적화를 놓치지 않도록해야합니다.FlaxStableDiffusionSafetyChecker 방해하지 않습니다.원래 코드로 클립 클립을 BYT5로 바꾸십시오.
CLIPTokenizer ByT5Tokenizer 로 교체합니다. 이것은 CPU에서 실행되므로 성능 향상에 대한 희망이 없다면 Jax/Flax가 필요하지 않습니다. 이것은 사소해야합니다.FlaxCLIPTextModel FlaxT5EncoderModel 로 교체합니다. 이것은 토큰 화기를 교체하는 것만 큼 쉽습니다.CLIPImageProcessor 다시 작성하십시오. 이것은 여전히 조사 중입니다. 얼마나 힘든지는 불분명합니다.FlaxAutoencoderKL 및 FlaxUNet2DConditionModel .둘째, 생성 된 이미지에 대한 더 나은 타이포그래피 제어를 위해 위의 포그 페이스 Jax/Flax Controlnet 구현에 통합 할 것입니다. Peter von Platen의 제안에 따라 위의 직교로 활성화 된 SD에 따르면, 우리는 또한 텍스트 컨텐츠, 글꼴 분류, 무게, 커닝, 선두, 슬랜트 및 기타 버전의 수정 사항에 의해 지원되는 텍스트 컨텐츠, 글꼴 분류, 무게, 커닝, 슬랜트 및 기타 기타 특성의 다국어 데이터 세트와 함께 훈련 된 타이포그래피 컨트롤 네트를 소개합니다.