feat: fleet storage tiers and model placement view - #42
Open
yr75myjnqx-tech wants to merge 8 commits into
Open
Conversation
…mesg fallback to host journal; test remote default-0
Adds a Storage view that classifies each Spark's mounted disks into hot/warm/cold tiers (root NVMe vs other local disks vs NAS cifs/nfs mounts), scans configured model directories for weight files over a new models metrics domain, and shows both resident (local copy) and CX7/ConnectX-fabric model placement. Per-Spark modelDirs/tierPaths can override the heuristics in config/sparks.json.
# Conflicts: # CHANGELOG.md # server/sparks/SparkRegistry.js # src/components/SparkPage/SparkPage.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings the multi-tier model storage concept to sparkDash for DGX Spark fleets: a read-only Storage view that classifies every Spark's disks into storage tiers, inventories the model weight files on the fleet, and shows where each model lives — both as a local copy and as served across the CX7/ConnectX fabric.
This is fully self-contained: tier classification and model scanning run inside the existing
SystemCollector(local + SSH), with no external registry or service dependency.What's in the PR
Tier classification
Every mounted disk is labeled a tier:
/mnt/modelshelf,/media,/Volumes,/mnt, or anycifs/smb/smb3/nfs/nfs4filesystem)Per-Spark
tierPathsinconfig/sparks.jsonoverride the heuristic per mount.Model inventory
The collector scans the configured model directories (grouped per tier via optional per-Spark
modelDirs) for weight files —.safetensors,.gguf,.bin,.pt,.pth,.ckpt— and reports each model by name, size, and tier. Newmodelsmetrics domain, polled viaPOLL_INTERVAL_MODELS(default 30 s). Each scanned root is inspected one level deep;modelDirsshould point at the directory whose direct children are the model folders (for HF-style nesting, the outer family dir, e.g.~/models/hf).Dual placement (resident + fabric)
A model is resident on a Spark holding a local copy. A peer that has the model loaded in its LLM probe — matched by model name — serves it to the fleet over the CX7/ConnectX fabric, so that Spark shows the model as placed over the fabric even with no local copy. This mirrors the storage intent: a "hot" model is available to the fleet either from local disk or from a peer's memory across the fabric.
UI
Verification
npm test— 94 passing (incl. newtierClassifyandcollectModelsunit tests)npm run typecheckandnpm run build— cleancifsNAS/mnt/macmini→ Cold, other local/snap disks → Warm) andcollectModelscorrectly detected the residentDeepSeek-V4-Flash-0731(155.4 GiB) from amodelDirsrootNotes for review