Текстовые энкодеры: CLIP, T5 и другие

Часть модели, которая читает промпт, и почему у некоторых моделей их две или три.

Простыми словами

Рисующая модель букв не читает. Сначала текстовый энкодер (text encoder) превращает промпт в числа, и рисующая модель следует этим числам. В ComfyUI текстовый энкодер ходит по связям типа CLIP, каким бы он ни был на самом деле.

Есть три поколения текстовых энкодеров:

  • CLIP (текстовая половина CLIP от OpenAI, размеры clip_l и clip_g). Его учили на коротких подписях к картинкам. Он читает до 75 токенов за раз и понимает слова и короткие фразы лучше, чем грамматику. SD 1.5 использует clip_l, SDXL оба: clip_l и clip_g.
  • T5 (T5-XXL от Google и umt5_xxl, его многоязычный вариант). Языковая модель, которая читает целые предложения длиной в несколько сотен токенов. Flux.1 и SD3 используют его рядом с CLIP, Wan использует только umt5_xxl, Chroma использует T5 без CLIP.
  • Большие языковые модели: Qwen2.5-VL у Qwen-Image, Qwen3 4B у Z-Image, модель Mistral у Flux.2 dev, энкодеры на основе Llama у HunyuanVideo. Они читают длинные подробные промпты и понимают, кто что делает и где.

Зачем два? Модель, которую учили с двумя энкодерами, привыкла смотреть на промпт сразу двумя способами: CLIP для стиля и вида, T5 для смысла и расположения. Грузить нужно оба. SD3 использует даже три (clip_l, clip_g, t5xxl).

Где встречается в графе

  • Load Checkpoint даёт CLIP у SD 1.5 и SDXL.
  • Load CLIP (CLIPLoader) грузит один энкодер, DualCLIPLoader два, TripleCLIPLoader три. У каждой есть поле type с названием семейства.
  • CLIP Text Encode (Prompt) берёт CLIP и ваш текст и отдаёт CONDITIONING. У некоторых семейств свои текстовые ноды (например CLIPTextEncodeFlux с отдельными полями для CLIP и T5 или TextEncodeQwenImageEdit для правки картинок).
  • CLIP Set Last Layer останавливает CLIP на один или два слоя раньше («clip skip»), об этом просят некоторые аниме-модели SD 1.5.

Значения и что они меняют

  • type должен совпадать с семейством модели.
  • Файлы энкодеров бывают разной точности: fp16 эталон, варианты fp8 (t5xxl_fp8_e4m3fn, umt5_xxl_fp8_e4m3fn_scaled) занимают вдвое меньше памяти с небольшой потерей.
  • stop_at_clip_layer: -1 обычное значение, -2 это «clip skip 2».

Частые ошибки

  • Загружен только один из двух энкодеров: ошибка или модель, которая не слышит большую часть промпта.
  • Не тот type: бессмысленные картинки.
  • Список тегов для модели, читающей предложения (или длинная проза для CLIP): см. Промпт.
  • Не хватает памяти на T5-XXL: возьмите файл fp8.

Как помогает приложение

Проверка говорит, когда промпт длиннее куска CLIP в 75 токенов или слишком длинный для T5. Карточка модели во вкладке Модели показывает её семейство, урок о промпте объясняет два способа чтения, а урок Какой загрузчик для какого файла разбирает загрузчики. В Свойствах у поля со встроенной заметкой рядом с именем есть кнопка Что делает это поле; она открывает заметку под полем: что делает поле и что в него ставить.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/concepts/Text-Encoders.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.