BitDance Loader
The node that loads an entire image-language model out of three files
- bitdance_model
- bitdance_text_encoder
- bitdance_vae
The most confusing thing about BitDance isn't the sampling - it's that the "text encoder" is an 18.8 GB, 14-billion-parameter Qwen3 language model. BitDance is an autoregressive image model in the same family as Nano Banana and Grok Imagine: it doesn't denoise a latent, it types the image out token-by-token. And to do that it needs a whole LLM as its brain, a small diffusion head to turn thoughts into image tokens, and a custom binary-tokenizer VAE. BitDance Loader is the single node that pulls all three of those apart and hands them to the rest of the workflow.
This loader is your entry point for the whole pack, and unlike a normal ComfyUI loader it returns three objects: bitdance_model (the vision head + projector + diffusion head, about 1.9 GB in FP8 - tiny), bitdance_text_encoder (that 14B LLM, the heavy one), and bitdance_vae. Wire bitdance_model and bitdance_vae into the sampler, bitdance_text_encoder into a text encode node.
What the inputs actually do
The three file pickers are self-explanatory, but the choices above them are where people get lost. The defaults are sensible - the README's opening line is literally "Make sure: BitDance Loader → quantization = fp8_e4m3fn_scaled" - so treat the defaults as correct until you have a reason to move them:
- quantization - defaults to
fp8_e4m3fn_scaled, which is what you want. The FP8 files from thecomfyuiblogHF repo are built for this. Per the author's tooltip, the Qwen text encoder dequantizes FP8 weights to the target dtype during load, CPU + RAM first - so expect a big RAM spike on first load. - precision -
fp16by default;auto,bf16, andfp32are also there.fp32exists but nobody needs it on a modern card. - attention_mode -
autopicks the best available backend (sdpa,flash_attn_2,flash_attn_3, oreager). Leave it onautounless you've installed flash-attn and want to force it. - load_device / text_encoder_load_device / vae_load_device - where each component lands initially (
main_device= GPU,offload_device= RAM). The defaults already offload the main model and VAE, which is the right call on 16–24 GB cards. - rms_norm_function - a niche one:
pytorchcan be faster than the default RMSNorm but changes results slightly. Only touch it if you're chasing speed and accept the drift.
Installing and getting the model files
Install via ComfyUI Manager (search "Comfyui-bitdance") or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/aistudynow/Comfyui-bitdance
cd Comfyui-bitdance
pip install -r requirements.txt
# restart ComfyUI
The dependencies are torch, einops, safetensors, transformers, huggingface_hub, accelerate, tqdm - nothing exotic. Flash attention is optional.
The models are a 3-file download from comfyuiblog/BitDance-14B-64x-fp8-comfyui on Hugging Face, dropped into the standard folders the loader reads:
- Main model →
ComfyUI/models/diffusion_models/BitDance_14B_MainModel_FP8.safetensors - Text encoder →
ComfyUI/models/text_encoders/BitDance_TextEncoder_FP8.safetensors - VAE →
ComfyUI/models/vae/BitDance_VAE_FP16.safetensors
The tokenizer is bundled inside the node package, so you don't need a separate tokenizer folder.
Where people get burned
The #1 surprise is load time and memory: loading that 14B text encoder means dequantizing 18.8 GB of weights into RAM before anything runs, so the first load can look hung. It isn't. Give it a minute and watch your task manager. Second: if the loader can't find your files, you put them in the wrong folder - the loader scans diffusion_models, unet, and checkpoints for the main model; text_encoders, clip, and checkpoints for the text encoder; vae and checkpoints for the VAE. The README's exact filenames are the safe path. And don't switch quantization to disabled on a 16 GB card to "get more quality" - the FP8 files are FP8; that's just a load-time label and the head barely changes.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 0 options: | |
| text_encoder_name | COMBO | 0 options: | |
| vae_name | COMBO | 0 options: | |
| quantization | COMBO | fp8_e4m3fn_scaled | Loader quantization mode label. BitDance Qwen text encoder currently dequantizes FP8 weights to target dtype during load (CPU+RAM first). |
| load_device | COMBO | offload_device | Initial placement for BitDance main model (vision head + projector). |
| text_encoder_load_device | COMBO | main_device | Placement for the BitDance text encoder after load completes. |
| vae_load_device | COMBO | offload_device | Initial placement for the BitDance VAE. |
| attention_mode | COMBO | auto | Attention backend for BitDance vision head (and mapped to Qwen backend where supported). |
| rms_norm_function | COMBO | default | Optional RMSNorm replacement for the Qwen text encoder. 'pytorch' may be faster but changes results slightly. |
| precision | COMBO | fp16 | 4 options: auto, bf16, fp16, fp32 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| bitdance_model | BITDANCE_MODEL | — |
| bitdance_text_encoder | BITDANCE_TEXT_ENCODER | — |
| bitdance_vae | BITDANCE_VAE | — |