Nodes/Music Production Toolkit/Model advisor · what suits this machine
ComfyUI Node

Model advisor · what suits this machine

Will Your PC Actually Run It?

By jplenio·Created 23 days ago·Updated 4 days ago· 64
Model advisor · what suits this machine
    • report
    • advice_json
    detailsummary
    resources_json

    What it is

    A one-widget node that reads the machine you're on - CPU cores, RAM, and the class of accelerator ComfyUI can see - and tells you, task by task, which of the pack's catalog models fit, how big each file is, and how well it's rated for that job. That's all it does. It doesn't download anything, doesn't change a widget, doesn't pick a model for you.

    Why that matters here: the catalog spans language-model GGUFs, MiniMax Music 3 (diffusion model, an 8.6 GiB text encoder, a VAE), YuE2, SheetSage2, Whisper, a FLUX.2 pair and FlashSR weights - tens of gigabytes spread across six tasks, and the answer differs on a 6 GiB laptop versus a 24 GiB desktop.

    How the verdicts are reached

    Each catalog entry gets a fit verdict from its file size against the free budget of the device it would load onto:

    • fits - weights plus a stated margin (max(2 GiB, 20 %)) are within free memory.
    • tight - the weights fit, the margin for context, KV state, activations and staging buffers doesn't.
    • too large - not even the weights fit.
    • unchecked - free memory couldn't be read. Nothing is claimed to fit.

    The report walks the catalog in run order - language model, song generation (MiniMax Music 3, YuE2), audio-to-score, lyrics, artwork, super-resolution - so it reads like the workflow. Because a diffusion model and its text encoder load together, each group is also checked as a combination: on a 12 GiB card the full-precision FLUX.2 pair comes back too large, next to the smaller set that does fit (fp8 diffusion + fp4 encoder).

    File size is a lower bound for resident memory, so a verdict is a statement about a check, not a promise - the assumed margin is printed beside it. And several GPUs are never summed: separate cards, separate pools.

    The ratings are the other half: stars judge suitability for this toolkit's tasks - holding a long structured prompt and returning the [Caption]/[Lyrics]/[Title]/[Image_Prompt] sections, singing-accurate transcription, generation quality. Not a benchmark, not a claim about the model; unrated entries show as unrated. Keep the quant ladder in mind too - Q4_K_M is the accepted 12 GiB compromise, Q8 is essentially fp16 at half the size - so "bigger file" and "better for you" pull apart more often than stars suggest.

    The inputs

    detail - summary (default) gives one recommended file per task plus the reason and the combination verdict; full lists every alternative with its size, stars, intended hardware class and measured verdict for your machine. Start on summary.

    resources_json (optional, a socket not a widget, so a text node feeds it) - a resource snapshot as JSON, in the format the pack's scripts/toolkit_diagnostics.py writes. Connect one to advise for a machine that isn't running ComfyUI: run the script on your friend's PC, paste the snapshot in, see what you're about to hand them.

    The outputs

    report is the readable version - hardware line, one recommendation per task, the reasons - rendered inside the node as Markdown and written to the ComfyUI log; advice_json is the same thing structured, for an app UI or a script. Neither selects anything: selection stays in the workflow's model dropdowns, and the transfer happens in the model-check node or when an LLM dropdown fetches its GGUF.

    Install

    ComfyUI Manager (registry name comfyui-minimax-music-production-toolkit, searched as "Music Production Toolkit"), or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jplenio/ComfyUI-MiniMax-Music-Production-Toolkit
    cd ComfyUI-MiniMax-Music-Production-Toolkit
    python -m pip install -r requirements.txt
    

    Restart and refresh. The advisor needs no model, no GPU and no extra dependency - it reads hardware and the catalog JSON. It ships wired into the bundled workflow too, in the START / Files & models group titled roughly what fits this PC.

    What looks like a bug but isn't

    unchecked everywhere means free memory couldn't be read. The node reports "unknown" rather than guessing - "unknown" and "nothing fits" are different answers.

    A 4 GB card is told the song models are too large, because they are: the MiniMax text encoder is 8.6 GiB in its smallest pruned int8 form, and there is no smaller variant.

    Raw text instead of Markdown - the preview needs a frontend API some ComfyUI setups don't expose; the log has the report either way.

    It re-runs on every queue, and never blocks one. Your model folder can change between runs, so a cached answer would be stale - and an advisor that refused a queue would be worse than none. A too large verdict is advice, not a gate: download it if you want, you just know what it does to your offload settings.

    The honest take

    Twenty seconds of node can save an 8 GiB download and an evening of "why is it offloading" - which makes it the most honest thing in the pack, given the README's hardware table calls itself a starting point and the benchmark matrix still reads untested. Run it once before your first song, flip detail to full if the recommended file doesn't appeal, then go make music.

    CategoryMusic Production Toolkit/utilities

    Inputs (2)

    NameTypeDefaultDescription
    detailCOMBOsummaryHow much of the catalog to list. 'summary' shows one recommended file per task plus the reason for the choice; 'full' lists every alternative with its size, its stars and the measured fit verdict for this machine.
    resources_jsonoptSTRINGOptional: a resource snapshot as JSON (the format the diagnostics script writes). Connect it to advise for a machine other than the one ComfyUI runs on - for example when preparing a workflow for a friend's PC. Empty means 'detect this machine'.

    Outputs (2)

    NameTypeDescription
    reportSTRING
    advice_jsonSTRING