Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux 2 Klein 9B Base LoRA · $0.02/MP
ComfyUI Node

arkennemasis fal · Flux 2 Klein 9B Base LoRA · $0.02/MP

Sample a fine-tune you couldn't run, for two cents

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 2 Klein 9B Base LoRA · $0.02/MP
    • images
    • image_paths
    • timings
    • has_nsfw_concepts
    • seed
    • prompt
    • info
    ◄prompt►
    ◄negative_prompt►
    ◄guidance_scale5.00►
    ◄seed-1►
    ◄num_inference_steps28►
    ◄image_sizelandscape_4_3►
    ◄image_size_width1024►
    ◄image_size_height1024►
    ◄num_images1►
    ◄accelerationregular►
    ◄enable_safety_checkertrue►
    ◄output_formatpng►
    ◄loras►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    Klein 9B base, text-to-image, with up to three of your own LoRA weights attached. Base 9B wants about 22GB of VRAM in bf16 to train and roughly 20GB to run locally - which is why most people meet this checkpoint through someone else's GPU. $0.02 per megapixel on fal, so a 1024×1024 sample is about two cents, and you can judge a fine-tune in a couple of minutes rather than after a download.

    The honest framing

    Base is not the pretty one. Black Forest Labs say base "is not intended for image generation as the quality isn't as good as the distilled normal model", and the community agrees - 2000 images at 50 steps, CFG 5, 1024×1024, and the distilled 9B still looks better at four steps. What base is is the training target: nearly every published Klein LoRA was built against FLUX.2-klein-base-9B, then applied to the distilled model at inference. So this node is the faithful host for those weights, and the correct place to see what a LoRA really does before you decide it earned a slot in your stack.

    The LoRA box

    It's a JSON text box. fal downloads the weights itself, so what goes in has to be URL-reachable - a hosted weight file, in fal's list format, up to three entries. Your local ComfyUI/models/loras folder is irrelevant to this node; that's the mechanism, not a missing feature. Check the model page for the exact JSON shape the endpoint wants.

    The constraint that matters: 9B LoRAs and 4B LoRAs are not interchangeable, and mixing them doesn't degrade gracefully - it produces a broken image. The pack ships the 4B counterparts for exactly this reason. Stacking same-size LoRAs, on the other hand, is a Klein strength: the community's headline test ran three at full strength without burning, where Z-Image Turbo starts melting past two.

    Also check for a trigger word. Many Klein LoRAs need one and the node can't tell you.

    The inputs

    prompt - sentences, not tags. A Qwen3 LLM reads your prompt as a chat turn and prompt weighting is disabled for that encoder, so (face:1.4) and masterpiece, best quality do nothing. Clear ownership and spatial relations do.

    negative_prompt and guidance_scale (5) - live on this node because base has a real guidance pass. num_inference_steps defaults to 28; base Klein is usually run at 50, and fal bills per megapixel rather than per step, so raising it costs seconds, not cents.

    image_size - presets (landscape_4_3 default) or custom plus image_size_width / image_size_height. acceleration - none / regular / high, default regular. num_images, output_format (png), seed, enable_safety_checker - flagged output comes back black, and disabling the checker needs fal account authorisation.

    Outputs

    images is the IMAGE batch, image_paths the saved files, timings fal's timing JSON, has_nsfw_concepts the checker's report, seed an INT worth locking when a sample lands, prompt the string the model received, and info a JSON blob with the request id, cost estimate, saved files and fal's full answer.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hishamahmer/comfyui-arkennemasis
    

    Restart, and it appears under arkennemasis → fal → Image → Flux; ComfyUI-Manager → Install via Git URL with the same repo works too. The pack's requirements.txt is a single httpx line for its ChatGPT/Codex nodes - the fal nodes use Python's standard library, so there's nothing else to install.

    Key, in the .env alongside run_nvidia_gpu.bat:

    FAL_KEY=your-key-from-fal.ai/dashboard/keys
    

    Where people get burned

    Expecting distilled-quality output. Two cents for a base sample is cheap, but it looks like a base sample. Use the distilled 9B node for finished images.

    Wrong-size or undocumented LoRAs. Check the card, and remember only three weights fit.

    A 4-step habit on a base model - it needs the steps and the guidance; that's the whole difference between the two axes of Klein's release.

    Forgetting the cache. reuse_identical_run is on by default, so an identical rerun is served from output/fal instead of being billed - useful, and confusing when you wanted a new sample. Set max_cost_usd to a dollar or two while you're judging a LoRA: the estimate is checked before upload, so a stopped run costs nothing.

    Categoryarkennemasis/fal/Image/Flux

    Inputs (17)

    NameTypeDefaultDescription
    promptSTRINGThe prompt to generate an image from.
    negative_promptSTRINGNegative prompt for classifier-free guidance. Describes what to avoid in the image. Empty leaves it out.
    guidance_scaleFLOAT5.000–20Guidance scale for classifier-free guidance.
    seedINT-1-1–2147483647The seed to use for the generation. If not provided, a random seed will be used. -1 leaves it to the model.
    num_inference_stepsINT284–50The number of inference steps to perform.
    image_sizeCOMBOlandscape_4_3The size of the image to generate. 'custom' uses the width and height below.
    image_size_widthINT102416–14142Width in pixels when image_size is 'custom'.
    image_size_heightINT102416–14142Height in pixels when image_size is 'custom'.
    num_imagesINT11–4The number of images to generate.
    accelerationCOMBOregularThe acceleration level to use for image generation.
    enable_safety_checkerBOOLEANtrueIf set to true, the safety checker will be enabled. Disabling it requires account authorization; unauthorized requests are always checked, and images flagged as unsafe are returned as black images.
    output_formatCOMBOpngThe format of the generated image.
    lorasSTRINGList of LoRA weights to apply (maximum 3). JSON. Empty leaves it out.
    max_cost_usdoptFLOAT20.00–100000Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap.
    reuse_identical_runoptBOOLEANtrueIf these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings.
    extra_jsonoptSTRINGAdvanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally.
    max_concurrentoptINT11–32How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed.

    Outputs (7)

    NameTypeDescription
    imagesIMAGE—
    image_pathsSTRING—
    timingsSTRING—
    has_nsfw_conceptsSTRING—
    seedINT—
    promptSTRING—
    infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.