Load FLOAT Encoder (VA)
The VA graph's first stop for the image side
- inferred_input_size
- dim_w
- dim_m
- float_encoder
In the Very Advanced graph there are no monolith pipes - every network is loaded separately, and the image side starts here. Load FLOAT Encoder (VA) loads just the encoder half of FLOAT's motion autoencoder from a .safetensors file, and it's smart about it: rather than making you specify the architecture, it infers the input size and latent dimensions straight from the weights. You tell it which file and which device; it tells you what the model expects.
It belongs to the "Very Advanced/Loaders" category for a reason. The VA graph exists so you can swap individual components - a custom audio encoder, a different projection layer, whatever you're experimenting with - and this node is the seam for the appearance/motion encoder. The output float_encoder plugs directly into Apply FLOAT Encoder, which does the actual image processing.
Inputs and outputs
- encoder_file - dropdown of
.safetensorsfiles it found inComfyUI/models/float/motion_autoencoder/. The shipped one isencoder.safetensors. - target_device - CPU or CUDA.
- cudnn_benchmark - off by default. Turning it on makes CUDA hunt for the fastest algorithm, which can speed up repeated runs but makes the first inference noticeably slow. The author's advice: leave it off on RTX 3060-class cards unless you've tested that on helps.
Outputs are the interesting part, because they wire the rest of the graph:
- float_encoder - the loaded
Encodermodule, into Apply FLOAT Encoder. - inferred_input_size - the image size the encoder was trained on (e.g. 512). Feed this into the
sizeinput of Face Align for FLOAT so your alignment matches the model exactly. - dim_w - the dimension of the main appearance latent (
s_r). - dim_m - the dimension of the motion-control parameters (
r_s_lambda).
Where the weights come from
This is the loader behavior worth understanding, because it's the pack's neatest trick. The VA nodes look for individual part files - encoder.safetensors here - but if you only have the unified FLOAT.safetensors (the 2.4 GiB auto-downloaded model), the loader extracts the encoder weights from it automatically using a script shipped in the pack's tools/ directory. If the unified model isn't there either, it falls back to downloading the part directly from Hugging Face. So you never actually need to go hunting for the split files; just let it work.
Install is the pack standard - ComfyUI Manager search "ComfyUI-FLOAT_Optimized", or cd ComfyUI/custom_nodes && git clone https://github.com/set-soft/ComfyUI-FLOAT_Optimized && pip install -r requirements.txt, then restart. First run will want the unified model downloaded (or it'll fetch the encoder part on its own). Since you're in the VA graph, remember the standing license: FLOAT is CC BY-NC-SA 4.0, non-commercial. And note the VA nodes' inputs and outputs are still settling - the README warns they "might change" as the author iterates.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| encoder_file | COMBO | The .safetensors file containing the pre-trained weights for the FLOAT Encoder. | |
| target_device | COMBO | cpu | The device (CPU or CUDA) where the Encoder will run during inference. |
| cudnn_benchmark | BOOLEAN | false | Enable or disable cuDNN benchmarking for this model's operations. Can improve speed. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| inferred_input_size | INT | — |
| dim_w | INT | — |
| dim_m | INT | — |
| float_encoder | FLOAT_ENCODER_MODEL | — |