[Engine] "Download and prepare" asks for the full 128 GB on an installed NVFP4 pack: the disk check looks in models\<family-tag><model> while setup writes models\<owner>--<repo>

Aperta Adatta ai principianti
#4,892 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

@XiaoBinGan ci sta già lavorando.

Dal 1/11/2026.

  • #4901 di @XiaoBinGan — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
62/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
tooling

Direzione di ricerca

Inizia da tools/strata_mcp.py intorno alle righe 2365-2368, dove have_dir viene costruito dal tag di famiglia, e confrontalo con ready_where(), prepared_dir() e il print "The model files go in" in setup.py (intorno alle righe 3281-3290 e 9969) per confermare il layout <owner>--<repo>. Modifica la verifica di prontezza in modo che controlli prima la cartella basata sul repo, mantenendo il percorso tramite tag come fallback. Poi conferma che il controllo NVFP4 segnala partly_downloaded con circa 9 GB necessari. È fatto quando un pacchetto già installato non attiva più il requisito di 128 GB di spazio su disco.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Area

[Engine] (speed, kernels, models, the server and API)

Desktop app, Terminal or source?

Desktop app ("Download and prepare" on the Models page), checked against tools/strata_mcp.py

What happened

Asking to prepare an NVFP4 pack that is already fully on disk (120 GB, 6 .gguf shards, pack/ prepared, all .done marks) is refused for lack of disk space:

not enough free disk space for NVFP4: about 137 GB needed at D:\Strata-data, 122 GB free;
free some space or choose data_dir on a bigger drive (e.g. D:\Strata-data)

That data dir already holds the whole pack. The check looks in a folder setup never writes:

tools/strata_mcp.py:2365-2368

tag = (families[family].get("tag", "") + model)          # "nvfp4-" + "NVFP4"
have_dir = target / "models" / tag                        # <data>\models\nvfp4-NVFP4
partly = (have_dir.is_dir() and any(have_dir.glob("*.gguf*"))) or bool(gguf_dir)
need = (8 if partly else md["download_gb"] + 8) + (1 if vision in ("yes", "gpu", "cpu") else 0)

setup.py stores ready-made packs under <models>\<owner>--<repo>, the repository layout, not under the family tag: ready_where() (setup.py:3281-3285), prepared_dir() (setup.py:3288-3290), and setup itself prints that path at setup.py:9969 ("The model files go in ...").

On this machine:

D:\Strata-data\models\Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata   6 *.gguf + pack\ prepared  ← real location
D:\Strata-data\models\nvfp4-NVFP4                                           does not exist              ← what the check looks for

MODELS["NVFP4"]["repo"] is Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata, download_gb is 128.0, and the family tag is "nvfp4-", so have_dir is always models\nvfp4-NVFP4. partly is therefore always False for this pack and the "already downloaded" branch (8 GB) is never taken — the tool asks for the full 128 GB download plus headroom on top of the 120 GB already sitting on that drive. The 137 GB in the message is exactly 128 + 8 + 1.

gguf_dir does not cover this case: it is a separate parameter for files fetched by hand, and there is nothing to pass for a pack setup installed itself.

Expected: the readiness probe should use the layout setup writes — MODELS[model]["repo"].replace("/", "--") (or ready_where() / prepared_dir()), with the tag-based folder kept as the fallback for the families that really do use it. An installed pack would then report partly_downloaded: true, disk_needed_gb: 9, and the card would offer a repair rather than a 128 GB download.

Related: #4891 — an engine update leaving stale absolute paths in the run config can make an installed model show as "not installed", which is how this dialog gets reached in the first place. The two together are what a user sees as "it forgot all my models and now says the disk is too small".

Smallest steps or command that reproduce it
  1. Install the NVFP4 pack on D:\Strata-data — setup writes models\Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata.
  2. Make the Models page treat it as not installed (e.g. the stale vision.exe path from #4891, or any doctor failure), so it offers "Download and prepare".
  3. Click it: refused with "about 137 GB needed ... 122 GB free", on a drive that already contains 120 GB of that very pack.
  4. disk_usage("D:\Strata-data") → 113.7 GiB free (122 GB decimal), while have_dir does not exist and the repo folder does.
Reproduction status

Reproduced locally

Strata version

0.2.9, Control 0.1.55, engine 0.1.55-windows-x86_64-cuda-cuda13

Graphics card, memory and system

RTX PRO 6000 Blackwell Workstation Edition 96 GB (driver 610.74), 256 GB RAM, Windows 11 Pro

Model, size and settings

Qwen3.8-Flash-Next NVFP4 GPTQ (Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata, 128 GB download, 6 shards), vision on, data dir D:\Strata-data

Logs
# what the pack folder really is
$ ls D:\Strata-data\models
Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata      (6 *.gguf, pack\ prepared, .done marks present)

# what the prepare check computes
family tag        : 'nvfp4-'
MODELS["NVFP4"].repo        : Maximilian228/Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata
MODELS["NVFP4"].download_gb : 128.0

have_dir    : D:\Strata-data\models\nvfp4-NVFP4                                  exists=False
real dir    : D:\Strata-data\models\Maximilian228--Qwen3.8-Flash-Next-NVFP4-GPTQ-Strata   exists=True, gguf=6

need (partly=False) : 128.0 + 8 + 1 = 137 GB
free on D:          : 113.7 GiB = 122 GB
Lingua principale
C++
Stelle
11.6k
Fork
1k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Niko1221/Strata

Tutte le issue di Niko1221/Strata

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.