Nodes/ComfyUI-ClarkAirSana/Clark Air Sana Loader (GemLite INT2)
ComfyUI Node

Clark Air Sana Loader (GemLite INT2)

495 MB of Sana that still runs under the boring old KSampler

By clark-labs-inc·Created 2 months ago·Updated 8 days ago· 3
Clark Air Sana Loader (GemLite INT2)
    • MODEL
    pack_name
    model_variantSanaMS_1600M_P1_D20
    dtypebfloat16

    This is the node the whole pack exists for. It loads Clark Air Sana 1.6B - a ternary (~1.58-bit) compression of NVlabs' Sana 1.6B transformer, packed down to a 495 MB file and run on real GemLite INT2 CUDA kernels. If you've been hearing that Sana is "cheap and fast," this is the version that makes that claim land on hardware that's not a data-center card: the model was announced on r/StableDiffusion in June 2026 as a ~8× smaller-than-FP16 artifact with "almost no loss," and the reaction said it best - "374 MB for Sana is wild, my 2070 is gonna love this."

    What makes it notable in practice: it's a drop-in MODEL for the standard ComfyUI KSampler. No custom sampler, no extra inference runtime. The pack vendors Sana's skeleton from ComfyUI_ExtraModels so you don't need that node pack either - the loader builds the model, injects the quantized kernels, and hands ComfyUI a normal MODEL socket.

    How it actually works

    The loader reads a .safetensors file, builds the SanaMS 1.6B skeleton (a 20-layer diffusion transformer with linear attention), then swaps 140 of its weight modules - 7 per block - for GemLite INT2 kernels holding the packed ternary codes. The "islands" around them - norms, embeddings, modulation, depthwise convs - stay at higher precision (FP8 islands upcast to bf16). That split is why a ~1.58-bit model still looks this good: the few percent of weights that matter most never got crushed.

    The one design decision that bites users: the loader pins the packed trunk GPU-resident. GemLite holds its codes as buffers ComfyUI's weight-streaming can't move, so the loader deliberately sets offload_device = load_device and tells ComfyUI to leave it alone. That's a feature for reliability and a constraint for VRAM - see the gotchas.

    The inputs, briefly

    • pack_name - dropdown of .safetensors files in ComfyUI/models/clark_air_sana/. This is the one you actually touch: the 495 MB clark_air_sana_gemlite_comfy.safetensors you download.
    • model_variant - only SanaMS_1600M_P1_D20 exists right now. Leave it.
    • dtype - bfloat16 default; float16 is the fallback if bf16 misbehaves on your GPU.

    Output: a single MODEL socket → KSampler.

    Installing it

    The pack install is the easy half (ComfyUI Manager → search "Clark Air Sana", or clone into custom_nodes). The model file is the manual half - the pack can't download the transformer for you:

    # put it where the loader looks:
    ComfyUI/models/clark_air_sana/clark_air_sana_gemlite_comfy.safetensors
    

    Grab it from clark-labs/clark-air-sana-1.6b-gemlite-2bit on Hugging Face (495 MB). The Gemma text encoder and DC-AE VAE then download themselves on first queue, so the full running footprint lands around 3.2 GB. The dependencies - gemlite, bitsandbytes, triton, diffusers, transformers - install automatically with the pack.

    The gotchas that actually bite

    1. It's CUDA-only, and Triton-dependent. GemLite's INT2 kernels don't run on AMD or on the CPU - the loader raises a clear "needs a CUDA GPU" error if it can't find one. Linux or WSL2 is the smooth path; native Windows leans on community-supported triton-windows.
    2. Don't run ComfyUI with --lowvram. The README is explicit: GemLite's packed buffers can't be streamed, so the loader pins the ~0.5 GB trunk on the GPU. The Gemma encoder and VAE are fine to offload; the transformer is not.
    3. KSampler settings come from the example workflow: euler / normal, 20 steps, cfg 4.5, 512×512. Those aren't arbitrary - they're what the pack verified end-to-end.
    4. Don't try a normal CheckpointLoader on this file. It's not a checkpoint; only this node understands the packed format.

    It's new, it's from a small lab, and the community is still kicking the tires - which is to say, if it were a 30 GB model that needed an A100, you wouldn't be reading this. Update the pack when updates land, and treat the 495 MB as the whole point: this is quantization done so aggressively it changes what hardware you need.

    CategoryClarkAir/Sana

    Inputs (3)

    NameTypeDefaultDescription
    pack_nameCOMBO0 options:
    model_variantCOMBOSanaMS_1600M_P1_D201 options: SanaMS_1600M_P1_D20
    dtypeCOMBObfloat162 options: bfloat16, float16

    Outputs (1)

    NameTypeDescription
    MODELMODEL