Prism UMT5 Text Encoder
One dropdown, two precisions, and why yours might be the wrong one
- text_encoder
What it is
Prism conditions on UMT5 - the same multilingual T5 family the Wan line uses - and this node loads it as one self-contained file. No CLIP folder, no separate tokenizer download, no models/text_encoders scavenger hunt beyond the one safetensors: the config and the tokenizer assets are embedded in the file's metadata, which is the trick that makes Prism's seven-file stack practical in ComfyUI at all.
You reach for it because Prism Native Pipeline needs the text_encoder socket. That's the whole job. But the file you pick matters more than the node suggests.
Which precision you load is a real decision
There are two valid files and they do not produce the same conditioning:
prism_alpha_text_encoder_int8_convrot.safetensors- the smaller INT8 ConvRot encoder. Supported with floating-point activations (W8A16), and the pack's own canvas workflows default to it.- A converted standalone BF16 UMT5 - what the published FreeVideo bundle actually uses. The author is explicit that for a strict, source-precision comparison against that release, you select the BF16 encoder, and that INT8 text is not the same reproduction.
Neither is broken. They're different conditionings: same prompt, different latent interpretation, subtly different video and audio. If you're comparing your output to a published sample and the gap feels unexplainable, check which encoder you loaded before you rewrite your prompt.
One more thing this encoder earns its keep on: Prism takes separate video and audio prompts, which means the same UMT5 has to encode both, and the audio side understands tags - <speech>, <music>, <sfx>. Put dialogue lines inside <speech>…</speech> and leave audio_prompt empty to reuse the full scene prompt for audio, which is how upstream does its Mandarin comparisons.
Input and output
model_name, an enum over your models/text_encoders/ folders. Output is text_encoder, into the matching socket on Prism Native Pipeline.
At sampling time the encoder is wrapped for CPU offload along with the two VAEs, so it can live off the card while the transformer runs - which matters, because a text encoder is a second VRAM budget on top of your diffusion model, and that's a trap this ecosystem keeps re-learning. Nothing about the download-inference loop changes: the loader itself only reads metadata and hands a descriptor onward.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Prism-T8.git
cd Comfyui-Prism-T8
python -m pip install -r requirements.txt
ComfyUI Manager → Comfyui-Prism-T8, or registry t8star/prism-t8. Then put prism_alpha_text_encoder_int8_convrot.safetensors from t8star/Prism-Comfy in models/text_encoders/ and restart. Requirements pull in transformers (and sentencepiece, which T5's tokenizer side wants); install with the Python that runs ComfyUI and leave its CUDA PyTorch untouched.
If you want a BF16 encoder, you either download one from the same Hugging Face repo or convert it yourself:
python scripts/download_models.py --output checkpoints/official --variant alpha
python scripts/convert_models.py --base checkpoints/official/pretrained_models/MOVA-360p \
--preview checkpoints/official/preview_alpha/diffusion_pytorch_model.safetensors \
--output models/standalone --variant alpha --device cuda:0
Conversion supports --variant alpha|beta, --dry-run, --components and --resume, never overwrites existing files by default, and wants roughly 72 GiB of source weights plus scratch space. Pick a new output directory per recipe rather than overwriting.
Where people get burned
Text into the video slot. Incorrect component in text_encoder: video_dit - the sockets are typed, so this one refuses early rather than producing nonsense.
Mixed bundles. All seven components share a bundle id; a text encoder from a different conversion gets you Components are from different Prism variants/conversion bundles. If you downloaded only the BF16 encoder to "upgrade", download the matching set.
not a Prism standalone component. Convert official weights first. You pointed the loader at a plain UMT5 or Diffusers folder. Prism wants the converted file with its embedded tokenizer and config.
Wondering where the tokenizer went. It's inside the file. That's why there's no tokenizer path on the node and why a missing spiece.model isn't a thing you can hit here.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text_encoder | PRISM_TEXT_ENCODER | — |