• Stefy Lanza (nextime / spora )'s avatar
    give the lip-sync engines an operator, and let a component be one file · f035e581
    Stefy Lanza (nextime / spora ) authored
    Two things that were only reachable from a python -c.
    
    The lip-sync engines had no management surface at all: no status, no install,
    no removal. They are not models.json entries on purpose -- each runs in its own
    interpreter as a subprocess, so a row in a model section would put them in the
    VRAM ledger as something the manager can load, which it cannot -- but that is a
    reason to give them their own surface, not none. So: a tab on the models page,
    three admin endpoints behind require_admin like every other model action, and
    an install that runs in the background while the page polls. The log is kept
    because when an install fails, WHERE it failed is the whole answer: a wheel
    that will not build reads nothing like a 401. "Rebuild venv" keeps the weights,
    since a dependency change does not alter six gigabytes.
    
    `component_models` could only name a repo. A community fine-tune is very often
    ONE file -- a retrained transformer with no repo around it, the base supplying
    the VAE, the text encoder and the scheduler -- and from_pretrained cannot open
    one, so such a component could only be named if somebody had published a
    converted directory tree for it. It now accepts a single-file or civitai:
    reference.
    
    And the Civitai resolver picked the LARGEST file of a version. Real Dream's
    Krea 2 V3 publishes the same weights three times: fp8 13.46 GB, int8 13.18 GB,
    nvfp4 8.12 GB. Largest-wins lands on fp8 by a 0.28 GB margin nobody chose, and
    could as easily have landed on nvfp4, which needs Blackwell and cannot load on
    an Ampere card at all. A reference may now name the file, and without one the
    choice is made among the builds this GPU can run, by precision rather than size.
    
    Two smaller ones found by using it. urllib replays headers across a redirect,
    so Civitai's signed R2 URL received a bearer token as well and answered 400 --
    which looks exactly like a bad token, and meant adding a token BROKE downloads
    that had worked without one. curl strips it; now so does this. And the cache
    has its own root (CODERAI_CIVITAI_CACHE) instead of living under the HF cache,
    which is how a second GGUF directory grew inside one.
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_014T3rZnLhydX9QqUcfBbqLu
    f035e581
models.html 360 KB