Nodes/ComfyUI-GNM/GNM Model Loader
ComfyUI Node

GNM Model Loader

A model loader with nothing to download (that's the point)

By soylab-edu·Created 2 months ago·Updated 2 months ago· 10
GNM Model Loader
    • gnm_model

    Most custom-node model loaders are the annoying part of a pack: a big checkpoint, a Hugging Face download, a folder you forget to point at. ComfyUI-GNM's GNMModelLoader is the opposite. It has zero inputs, downloads nothing, and exists so the rest of the pack has something to talk to.

    What it does is simple: it loads Google's GNM (Generative aNthropometric Model) Head v3 - a parametric 3D head model - and hands you a single gnm_model output. That token is the pack's power cord. GNMRandomParams takes it as a required input, and GNMHeadRender needs it before it will render a single pixel. Drop one into any workflow that uses those nodes and wire it in; you won't need a second one anywhere else.

    Under the hood the load is a single GNM.from_local() call against the vendored numpy backend, and the result is cached after the first run, so the model file is read once and reused by every node that asks for it. The model data ships inside the pack's vendor/ directory - that's why there's no separate download and why the whole pack stays small on disk. One licensing note worth knowing: the pack itself is GPL-3.0, but the Google GNM core it bundles is Apache-2.0, with the original license preserved in vendor/gnm/LICENSE.

    Install

    ComfyUI Manager is the easy path: Custom Nodes → search "ComfyUI-GNM" → Install, then restart ComfyUI. Or clone by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/soylab-edu/ComfyUI-GNM
    cd ComfyUI-GNM
    pip install -r requirements.txt
    

    Then restart ComfyUI. No TensorFlow is needed anywhere in the pack - the semantic samplers read their Keras .h5 weights with h5py and run a numpy forward pass. The renderer pulls in pyrender, pyglet<2, and a pinned PyOpenGL==3.1.10 (the pack pins it because pyrender's default 3.1.0 breaks on Python 3.13 and numpy 2). On headless Linux set PYOPENGL_PLATFORM=egl before launching; Windows handles it via WGL automatically.

    Common issues

    There's not much to break with a loader this thin. Two things actually bite people:

    • A shallow or partial clone. If the vendored model data didn't come down - or you copied the folder without it - the load fails or renders come out empty. Re-clone the repo properly and reinstall.
    • First-load lag. The model isn't cached on the first queue, so the very first render is slower while it loads. Subsequent runs are instant. That's the cache doing its job, not a hang.

    That's it. One node, one output, zero parameters - the unglamorous front door of a pack that's actually worth the setup.

    CategoryGNM

    Inputs (0)

    No inputs

    Outputs (1)

    NameTypeDescription
    gnm_modelGNM_MODEL